[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master d4083917 07/27: Test eleven farraginous files
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master d4083917 07/27: Test eleven farraginous files nychthemerally |
Date: |
Mon, 25 Apr 2022 12:56:14 -0400 (EDT) |
branch: master
commit d40839178b6a4ab582fccb4d37ba9ab55f097af4
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Test eleven farraginous files nychthemerally
---
nychthemeral_test.sh | 40 ++++
sample.000.test0.touchstone | 56 +++++
sample.000.test1.touchstone | 56 +++++
sample.001.test0.touchstone | 56 +++++
sample.001.test1.touchstone | 56 +++++
sample.cns.tsv.touchstone | 158 ++++++++++++++
sample.ill.tsv.touchstone | 79 +++++++
sample.roster.tsv.touchstone | 7 +
sample.summary.html.touchstone | 453 +++++++++++++++++++++++++++++++++++++++++
sample.summary.tsv.touchstone | 73 +++++++
sample.test0.touchstone | 56 +++++
sample.test1.touchstone | 56 +++++
12 files changed, 1146 insertions(+)
diff --git a/nychthemeral_test.sh b/nychthemeral_test.sh
index 98fad442..3338c343 100755
--- a/nychthemeral_test.sh
+++ b/nychthemeral_test.sh
@@ -237,6 +237,7 @@ nychthemeral_clutter='
/^# concinnity test skipped--it uses POSIX only/d
/^# speed test/d
/^# xrc tests/d
+/^# test all "emit_\*" output types supported by CLI/d
/^# test all valid emission types/d
/^# schema tests/d
/^# test mst --> xst conversion/d
@@ -385,9 +386,48 @@ printf '\n# test all "emit_*" output types supported by
CLI\n\n'
# group-roster type omitted: sensible only for a census
$PERFORM /opt/lmi/bin/lmi_cli_shared --file="$throwaway_dir"/sample.ill
--accept --ash_nazg --data_path=/opt/lmi/data
--emit=emit_to_pwd,emit_test_data,emit_spreadsheet,emit_text_stream,emit_custom_0,emit_custom_1,emit_calculation_summary_html,emit_calculation_summary_tsv
>/dev/null
+# same output filename for '.cns' as for '.ill': uniquify it
+mv sample.tsv sample.ill.tsv
+
# calculation-summary types omitted: not sensible for a census
$PERFORM /opt/lmi/bin/lmi_cli_shared --file="$throwaway_dir"/sample.cns
--accept --ash_nazg --data_path=/opt/lmi/data
--emit=emit_to_pwd,emit_test_data,emit_spreadsheet,emit_group_roster,emit_text_stream,emit_custom_0,emit_custom_1
>/dev/null
+# same output filename for '.cns' as for '.ill': uniquify it
+mv sample.tsv sample.cns.tsv
+
+# remove '*.test' files: their sizes make it unattractive to store
+# "touchstone" copies, and comparing them to such a touchstone would
+# be useless anyway because the '*.test' format is exceedingly well
+# tested by the 'system_test' target
+rm sample.000000001.test
+rm sample.composite.000000000.test
+rm sample.test
+
+# shorten and decorate output file names
+mv sample.000000001.test0 sample.001.test0.touchstone
+mv sample.000000001.test1 sample.001.test1.touchstone
+mv sample.cns.tsv sample.cns.tsv.touchstone
+mv sample.composite.000000000.test0 sample.000.test0.touchstone
+mv sample.composite.000000000.test1 sample.000.test1.touchstone
+mv sample.ill.tsv sample.ill.tsv.touchstone
+mv sample.roster.tsv sample.roster.tsv.touchstone
+mv sample.summary.html sample.summary.html.touchstone
+mv sample.summary.tsv sample.summary.tsv.touchstone
+mv sample.test0 sample.test0.touchstone
+mv sample.test1 sample.test1.touchstone
+
+# MlySAIntRate = 0.0053403194199831...; differs slightly for x87
+# DatePrepared: it's unclear why ".*" is needed, but it "works"
+for z in *.touchstone; do \
+ diff \
+ --unified=0 \
+ --strip-trailing-cr \
+ --ignore-matching-lines="^0\.0053403194199831" \
+ --ignore-matching-lines="^DatePrepared[ \t]*.*'[0-9-]*'$" \
+ "$z" "$srcdir/$z" \
+ || true ; \
+done
+
printf '\n# schema tests\n\n'
/opt/lmi/src/lmi/test_schemata.sh 2>&1 \
| tee "$log_dir"/schemata | sed -e "$schemata_clutter"
diff --git a/sample.000.test0.touchstone b/sample.000.test0.touchstone
new file mode 100644
index 00000000..3f7a9624
--- /dev/null
+++ b/sample.000.test0.touchstone
@@ -0,0 +1,56 @@
+CashValu,SurrValu,DeathBen,IntEarned,MortCost,Load,MinPrem,SurrCost,PremAmt,IntRate
+17696,17696,1000000,1048,1691,0,1600,0,20000,600
+36348,36348,1000000,2106,1795,0,1600,0,20000,600
+56009,56009,1000000,3222,1901,0,1600,0,20000,600
+76734,76734,1000000,4398,2013,0,1600,0,20000,600
+98583,98583,1000000,5638,2129,0,1600,0,20000,600
+121611,121611,1000000,6944,2256,0,1600,0,20000,600
+145875,145875,1000000,8321,2397,0,1600,0,20000,600
+171435,171435,1000000,9772,2552,0,1600,0,20000,600
+198354,198354,1000000,11300,2722,0,1600,0,20000,600
+226706,226706,1000000,12910,2897,0,1600,0,20000,600
+256573,256573,1000000,14605,3078,0,1600,0,20000,600
+288050,288050,1000000,16391,3254,0,1600,0,20000,600
+321251,321251,1000000,18275,3414,0,1600,0,20000,600
+356285,356285,1000000,20262,3568,0,1600,0,20000,600
+393269,393269,1000000,22359,3714,0,1600,0,20000,600
+432338,432338,1000000,24574,3845,0,1600,0,20000,600
+473642,473642,1000000,26914,3950,0,1600,0,20000,600
+517338,517338,1000000,29390,4034,0,1600,0,20000,600
+563611,563611,1000000,32010,4076,0,1600,0,20000,600
+612687,612687,1000000,34787,4051,0,1600,0,20000,600
+664832,664832,1000000,37735,3931,0,1600,0,20000,600
+720355,720355,1000000,40871,3687,0,1600,0,20000,600
+779623,779623,1000000,44215,3288,0,1600,0,20000,600
+843050,843050,1000000,47789,2702,0,1600,0,20000,600
+910689,910689,1056399,51611,2312,0,1600,0,20000,600
+982108,982108,1129425,55661,2581,0,1600,0,20000,600
+1057725,1057725,1195230,59943,2666,0,1600,0,20000,600
+1137850,1137850,1263014,64480,2695,0,1600,0,20000,600
+1222848,1222848,1332904,69289,2632,0,1600,0,20000,600
+1313153,1313153,1405073,74395,2430,0,1600,0,20000,600
+1409281,1409281,1479745,79826,2038,0,1600,0,20000,600
+1510787,1510787,1586326,85582,2416,0,1600,0,20000,600
+1617939,1617939,1698836,91658,2846,0,1600,0,20000,600
+1731014,1731014,1817564,98072,3337,0,1600,0,20000,600
+1850286,1850286,1942801,104838,3905,0,1600,0,20000,600
+1976028,1976028,2074829,111973,4572,0,1600,0,20000,600
+2108501,2108501,2213926,119493,5360,0,1600,0,20000,600
+2247954,2247954,2360352,127411,6297,0,1600,0,20000,600
+2394636,2394636,2514368,135743,7401,0,1600,0,20000,600
+2548799,2548799,2676239,144503,8680,0,1600,0,20000,600
+2710712,2710712,2846248,153706,10133,0,1600,0,20000,600
+2880653,2880653,3024685,163369,11769,0,1600,0,20000,600
+3058912,3058912,3211857,173507,13588,0,1600,0,20000,600
+3245789,3245789,3408078,184138,15602,0,1600,0,20000,600
+3441564,3441564,3613642,195279,17844,0,1600,0,20000,600
+3646494,3646494,3828819,206946,20356,0,1600,0,20000,600
+3865811,3865811,4020443,219306,18329,0,1600,0,20000,600
+4101336,4101336,4224376,232560,15375,0,1600,0,20000,600
+4355201,4355201,4442305,246821,11296,0,1600,0,20000,600
+4630053,4630053,4676354,262232,5720,0,1600,0,20000,600
+4927299,4927299,4927299,278905,0,0,1600,0,20000,600
+5242379,5242379,5242379,296740,0,0,1600,0,20000,600
+5576363,5576363,5576363,315645,0,0,1600,0,20000,600
+5930387,5930387,5930387,335684,0,0,1600,0,20000,600
+6305653,6305653,6305653,356925,0,0,1600,0,20000,600
diff --git a/sample.000.test1.touchstone b/sample.000.test1.touchstone
new file mode 100644
index 00000000..6fa5100f
--- /dev/null
+++ b/sample.000.test1.touchstone
@@ -0,0 +1,56 @@
+CashValu,SurrValu,DeathBen,IntRate,IntEarned,MortCost,MiscFees,Load,MinPrem,SurrCost,PremAmt
+17696.50,17696.50,1000000.00,600.0000,1047.60,1691.10,0.00,1600.00,0,0.00,20000.00
+36347.89,36347.89,1000000.00,600.0000,2106.05,1794.66,0.00,1600.00,0,0.00,20000.00
+56008.95,56008.95,1000000.00,600.0000,3221.71,1900.65,0.00,1600.00,0,0.00,20000.00
+76734.20,76734.20,1000000.00,600.0000,4397.76,2012.51,0.00,1600.00,0,0.00,20000.00
+98583.07,98583.07,1000000.00,600.0000,5637.50,2128.63,0.00,1600.00,0,0.00,20000.00
+121611.07,121611.07,1000000.00,600.0000,6944.31,2256.31,0.00,1600.00,0,0.00,20000.00
+145875.30,145875.30,1000000.00,600.0000,8321.44,2397.21,0.00,1600.00,0,0.00,20000.00
+171435.25,171435.25,1000000.00,600.0000,9772.28,2552.33,0.00,1600.00,0,0.00,20000.00
+198353.65,198353.65,1000000.00,600.0000,11300.36,2721.96,0.00,1600.00,0,0.00,20000.00
+226705.97,226705.97,1000000.00,600.0000,12909.76,2897.44,0.00,1600.00,0,0.00,20000.00
+256573.05,256573.05,1000000.00,600.0000,14605.05,3077.97,0.00,1600.00,0,0.00,20000.00
+288050.08,288050.08,1000000.00,600.0000,16391.34,3254.31,0.00,1600.00,0,0.00,20000.00
+321250.82,321250.82,1000000.00,600.0000,18274.75,3414.01,0.00,1600.00,0,0.00,20000.00
+356284.59,356284.59,1000000.00,600.0000,20261.73,3567.96,0.00,1600.00,0,0.00,20000.00
+393269.47,393269.47,1000000.00,600.0000,22358.95,3714.07,0.00,1600.00,0,0.00,20000.00
+432338.40,432338.40,1000000.00,600.0000,24573.70,3844.77,0.00,1600.00,0,0.00,20000.00
+473642.26,473642.26,1000000.00,600.0000,26914.29,3950.43,0.00,1600.00,0,0.00,20000.00
+517337.51,517337.51,1000000.00,600.0000,29389.63,4034.38,0.00,1600.00,0,0.00,20000.00
+563611.17,563611.17,1000000.00,600.0000,32009.76,4076.10,0.00,1600.00,0,0.00,20000.00
+612687.37,612687.37,1000000.00,600.0000,34786.72,4050.52,0.00,1600.00,0,0.00,20000.00
+664831.57,664831.57,1000000.00,600.0000,37734.84,3930.64,0.00,1600.00,0,0.00,20000.00
+720355.46,720355.46,1000000.00,600.0000,40870.92,3687.03,0.00,1600.00,0,0.00,20000.00
+779622.65,779622.65,1000000.00,600.0000,44214.72,3287.53,0.00,1600.00,0,0.00,20000.00
+843049.52,843049.52,1000000.00,600.0000,47789.02,2702.15,0.00,1600.00,0,0.00,20000.00
+910688.81,910688.81,1056399.02,600.0000,51611.17,2311.88,0.00,1600.00,0,0.00,20000.00
+982108.44,982108.44,1129424.71,600.0000,55660.97,2581.34,0.00,1600.00,0,0.00,20000.00
+1057725.41,1057725.41,1195229.71,600.0000,59943.42,2666.45,0.00,1600.00,0,0.00,20000.00
+1137850.14,1137850.14,1263013.66,600.0000,64479.54,2694.81,0.00,1600.00,0,0.00,20000.00
+1222847.62,1222847.62,1332903.91,600.0000,69289.03,2631.55,0.00,1600.00,0,0.00,20000.00
+1313152.65,1313152.65,1405073.34,600.0000,74395.33,2430.30,0.00,1600.00,0,0.00,20000.00
+1409280.59,1409280.59,1479744.62,600.0000,79826.15,2038.21,0.00,1600.00,0,0.00,20000.00
+1510786.71,1510786.71,1586326.05,600.0000,85581.77,2415.65,0.00,1600.00,0,0.00,20000.00
+1617938.93,1617938.93,1698835.88,600.0000,91658.38,2846.16,0.00,1600.00,0,0.00,20000.00
+1731013.54,1731013.54,1817564.22,600.0000,98071.83,3337.22,0.00,1600.00,0,0.00,20000.00
+1850286.34,1850286.34,1942800.66,600.0000,104838.19,3905.39,0.00,1600.00,0,0.00,20000.00
+1976028.05,1976028.05,2074829.45,600.0000,111973.27,4571.56,0.00,1600.00,0,0.00,20000.00
+2108500.81,2108500.81,2213925.85,600.0000,119492.60,5359.84,0.00,1600.00,0,0.00,20000.00
+2247954.46,2247954.46,2360352.18,600.0000,127411.00,6297.35,0.00,1600.00,0,0.00,20000.00
+2394635.93,2394635.93,2514367.73,600.0000,135742.95,7401.48,0.00,1600.00,0,0.00,20000.00
+2548799.28,2548799.28,2676239.24,600.0000,144503.00,8679.65,0.00,1600.00,0,0.00,20000.00
+2710712.44,2710712.44,2846248.06,600.0000,153706.39,10133.23,0.00,1600.00,0,0.00,20000.00
+2880652.54,2880652.54,3024685.17,600.0000,163368.89,11768.79,0.00,1600.00,0,0.00,20000.00
+3058911.79,3058911.79,3211857.38,600.0000,173507.16,13587.91,0.00,1600.00,0,0.00,20000.00
+3245788.55,3245788.55,3408077.98,600.0000,184138.37,15601.61,0.00,1600.00,0,0.00,20000.00
+3441563.98,3441563.98,3613642.18,600.0000,195279.30,17843.87,0.00,1600.00,0,0.00,20000.00
+3646494.02,3646494.02,3828818.72,600.0000,206945.56,20355.52,0.00,1600.00,0,0.00,20000.00
+3865811.05,3865811.05,4020443.49,600.0000,219306.18,18329.15,0.00,1600.00,0,0.00,20000.00
+4101335.97,4101335.97,4224376.05,600.0000,232559.67,15374.75,0.00,1600.00,0,0.00,20000.00
+4355201.30,4355201.30,4442305.33,600.0000,246821.49,11296.16,0.00,1600.00,0,0.00,20000.00
+4630053.31,4630053.31,4676353.84,600.0000,262231.54,5719.53,0.00,1600.00,0,0.00,20000.00
+4927298.59,4927298.59,4927298.59,600.0000,278905.28,0.00,0.00,1600.00,0,0.00,20000.00
+5242378.58,5242378.58,5242378.58,600.0000,296739.99,0.00,0.00,1600.00,0,0.00,20000.00
+5576363.36,5576363.36,5576363.36,600.0000,315644.78,0.00,0.00,1600.00,0,0.00,20000.00
+5930387.21,5930387.21,5930387.21,600.0000,335683.85,0.00,0.00,1600.00,0,0.00,20000.00
+6305652.52,6305652.52,6305652.52,600.0000,356925.31,0.00,0.00,1600.00,0,0.00,20000.00
diff --git a/sample.001.test0.touchstone b/sample.001.test0.touchstone
new file mode 100644
index 00000000..3f7a9624
--- /dev/null
+++ b/sample.001.test0.touchstone
@@ -0,0 +1,56 @@
+CashValu,SurrValu,DeathBen,IntEarned,MortCost,Load,MinPrem,SurrCost,PremAmt,IntRate
+17696,17696,1000000,1048,1691,0,1600,0,20000,600
+36348,36348,1000000,2106,1795,0,1600,0,20000,600
+56009,56009,1000000,3222,1901,0,1600,0,20000,600
+76734,76734,1000000,4398,2013,0,1600,0,20000,600
+98583,98583,1000000,5638,2129,0,1600,0,20000,600
+121611,121611,1000000,6944,2256,0,1600,0,20000,600
+145875,145875,1000000,8321,2397,0,1600,0,20000,600
+171435,171435,1000000,9772,2552,0,1600,0,20000,600
+198354,198354,1000000,11300,2722,0,1600,0,20000,600
+226706,226706,1000000,12910,2897,0,1600,0,20000,600
+256573,256573,1000000,14605,3078,0,1600,0,20000,600
+288050,288050,1000000,16391,3254,0,1600,0,20000,600
+321251,321251,1000000,18275,3414,0,1600,0,20000,600
+356285,356285,1000000,20262,3568,0,1600,0,20000,600
+393269,393269,1000000,22359,3714,0,1600,0,20000,600
+432338,432338,1000000,24574,3845,0,1600,0,20000,600
+473642,473642,1000000,26914,3950,0,1600,0,20000,600
+517338,517338,1000000,29390,4034,0,1600,0,20000,600
+563611,563611,1000000,32010,4076,0,1600,0,20000,600
+612687,612687,1000000,34787,4051,0,1600,0,20000,600
+664832,664832,1000000,37735,3931,0,1600,0,20000,600
+720355,720355,1000000,40871,3687,0,1600,0,20000,600
+779623,779623,1000000,44215,3288,0,1600,0,20000,600
+843050,843050,1000000,47789,2702,0,1600,0,20000,600
+910689,910689,1056399,51611,2312,0,1600,0,20000,600
+982108,982108,1129425,55661,2581,0,1600,0,20000,600
+1057725,1057725,1195230,59943,2666,0,1600,0,20000,600
+1137850,1137850,1263014,64480,2695,0,1600,0,20000,600
+1222848,1222848,1332904,69289,2632,0,1600,0,20000,600
+1313153,1313153,1405073,74395,2430,0,1600,0,20000,600
+1409281,1409281,1479745,79826,2038,0,1600,0,20000,600
+1510787,1510787,1586326,85582,2416,0,1600,0,20000,600
+1617939,1617939,1698836,91658,2846,0,1600,0,20000,600
+1731014,1731014,1817564,98072,3337,0,1600,0,20000,600
+1850286,1850286,1942801,104838,3905,0,1600,0,20000,600
+1976028,1976028,2074829,111973,4572,0,1600,0,20000,600
+2108501,2108501,2213926,119493,5360,0,1600,0,20000,600
+2247954,2247954,2360352,127411,6297,0,1600,0,20000,600
+2394636,2394636,2514368,135743,7401,0,1600,0,20000,600
+2548799,2548799,2676239,144503,8680,0,1600,0,20000,600
+2710712,2710712,2846248,153706,10133,0,1600,0,20000,600
+2880653,2880653,3024685,163369,11769,0,1600,0,20000,600
+3058912,3058912,3211857,173507,13588,0,1600,0,20000,600
+3245789,3245789,3408078,184138,15602,0,1600,0,20000,600
+3441564,3441564,3613642,195279,17844,0,1600,0,20000,600
+3646494,3646494,3828819,206946,20356,0,1600,0,20000,600
+3865811,3865811,4020443,219306,18329,0,1600,0,20000,600
+4101336,4101336,4224376,232560,15375,0,1600,0,20000,600
+4355201,4355201,4442305,246821,11296,0,1600,0,20000,600
+4630053,4630053,4676354,262232,5720,0,1600,0,20000,600
+4927299,4927299,4927299,278905,0,0,1600,0,20000,600
+5242379,5242379,5242379,296740,0,0,1600,0,20000,600
+5576363,5576363,5576363,315645,0,0,1600,0,20000,600
+5930387,5930387,5930387,335684,0,0,1600,0,20000,600
+6305653,6305653,6305653,356925,0,0,1600,0,20000,600
diff --git a/sample.001.test1.touchstone b/sample.001.test1.touchstone
new file mode 100644
index 00000000..6fa5100f
--- /dev/null
+++ b/sample.001.test1.touchstone
@@ -0,0 +1,56 @@
+CashValu,SurrValu,DeathBen,IntRate,IntEarned,MortCost,MiscFees,Load,MinPrem,SurrCost,PremAmt
+17696.50,17696.50,1000000.00,600.0000,1047.60,1691.10,0.00,1600.00,0,0.00,20000.00
+36347.89,36347.89,1000000.00,600.0000,2106.05,1794.66,0.00,1600.00,0,0.00,20000.00
+56008.95,56008.95,1000000.00,600.0000,3221.71,1900.65,0.00,1600.00,0,0.00,20000.00
+76734.20,76734.20,1000000.00,600.0000,4397.76,2012.51,0.00,1600.00,0,0.00,20000.00
+98583.07,98583.07,1000000.00,600.0000,5637.50,2128.63,0.00,1600.00,0,0.00,20000.00
+121611.07,121611.07,1000000.00,600.0000,6944.31,2256.31,0.00,1600.00,0,0.00,20000.00
+145875.30,145875.30,1000000.00,600.0000,8321.44,2397.21,0.00,1600.00,0,0.00,20000.00
+171435.25,171435.25,1000000.00,600.0000,9772.28,2552.33,0.00,1600.00,0,0.00,20000.00
+198353.65,198353.65,1000000.00,600.0000,11300.36,2721.96,0.00,1600.00,0,0.00,20000.00
+226705.97,226705.97,1000000.00,600.0000,12909.76,2897.44,0.00,1600.00,0,0.00,20000.00
+256573.05,256573.05,1000000.00,600.0000,14605.05,3077.97,0.00,1600.00,0,0.00,20000.00
+288050.08,288050.08,1000000.00,600.0000,16391.34,3254.31,0.00,1600.00,0,0.00,20000.00
+321250.82,321250.82,1000000.00,600.0000,18274.75,3414.01,0.00,1600.00,0,0.00,20000.00
+356284.59,356284.59,1000000.00,600.0000,20261.73,3567.96,0.00,1600.00,0,0.00,20000.00
+393269.47,393269.47,1000000.00,600.0000,22358.95,3714.07,0.00,1600.00,0,0.00,20000.00
+432338.40,432338.40,1000000.00,600.0000,24573.70,3844.77,0.00,1600.00,0,0.00,20000.00
+473642.26,473642.26,1000000.00,600.0000,26914.29,3950.43,0.00,1600.00,0,0.00,20000.00
+517337.51,517337.51,1000000.00,600.0000,29389.63,4034.38,0.00,1600.00,0,0.00,20000.00
+563611.17,563611.17,1000000.00,600.0000,32009.76,4076.10,0.00,1600.00,0,0.00,20000.00
+612687.37,612687.37,1000000.00,600.0000,34786.72,4050.52,0.00,1600.00,0,0.00,20000.00
+664831.57,664831.57,1000000.00,600.0000,37734.84,3930.64,0.00,1600.00,0,0.00,20000.00
+720355.46,720355.46,1000000.00,600.0000,40870.92,3687.03,0.00,1600.00,0,0.00,20000.00
+779622.65,779622.65,1000000.00,600.0000,44214.72,3287.53,0.00,1600.00,0,0.00,20000.00
+843049.52,843049.52,1000000.00,600.0000,47789.02,2702.15,0.00,1600.00,0,0.00,20000.00
+910688.81,910688.81,1056399.02,600.0000,51611.17,2311.88,0.00,1600.00,0,0.00,20000.00
+982108.44,982108.44,1129424.71,600.0000,55660.97,2581.34,0.00,1600.00,0,0.00,20000.00
+1057725.41,1057725.41,1195229.71,600.0000,59943.42,2666.45,0.00,1600.00,0,0.00,20000.00
+1137850.14,1137850.14,1263013.66,600.0000,64479.54,2694.81,0.00,1600.00,0,0.00,20000.00
+1222847.62,1222847.62,1332903.91,600.0000,69289.03,2631.55,0.00,1600.00,0,0.00,20000.00
+1313152.65,1313152.65,1405073.34,600.0000,74395.33,2430.30,0.00,1600.00,0,0.00,20000.00
+1409280.59,1409280.59,1479744.62,600.0000,79826.15,2038.21,0.00,1600.00,0,0.00,20000.00
+1510786.71,1510786.71,1586326.05,600.0000,85581.77,2415.65,0.00,1600.00,0,0.00,20000.00
+1617938.93,1617938.93,1698835.88,600.0000,91658.38,2846.16,0.00,1600.00,0,0.00,20000.00
+1731013.54,1731013.54,1817564.22,600.0000,98071.83,3337.22,0.00,1600.00,0,0.00,20000.00
+1850286.34,1850286.34,1942800.66,600.0000,104838.19,3905.39,0.00,1600.00,0,0.00,20000.00
+1976028.05,1976028.05,2074829.45,600.0000,111973.27,4571.56,0.00,1600.00,0,0.00,20000.00
+2108500.81,2108500.81,2213925.85,600.0000,119492.60,5359.84,0.00,1600.00,0,0.00,20000.00
+2247954.46,2247954.46,2360352.18,600.0000,127411.00,6297.35,0.00,1600.00,0,0.00,20000.00
+2394635.93,2394635.93,2514367.73,600.0000,135742.95,7401.48,0.00,1600.00,0,0.00,20000.00
+2548799.28,2548799.28,2676239.24,600.0000,144503.00,8679.65,0.00,1600.00,0,0.00,20000.00
+2710712.44,2710712.44,2846248.06,600.0000,153706.39,10133.23,0.00,1600.00,0,0.00,20000.00
+2880652.54,2880652.54,3024685.17,600.0000,163368.89,11768.79,0.00,1600.00,0,0.00,20000.00
+3058911.79,3058911.79,3211857.38,600.0000,173507.16,13587.91,0.00,1600.00,0,0.00,20000.00
+3245788.55,3245788.55,3408077.98,600.0000,184138.37,15601.61,0.00,1600.00,0,0.00,20000.00
+3441563.98,3441563.98,3613642.18,600.0000,195279.30,17843.87,0.00,1600.00,0,0.00,20000.00
+3646494.02,3646494.02,3828818.72,600.0000,206945.56,20355.52,0.00,1600.00,0,0.00,20000.00
+3865811.05,3865811.05,4020443.49,600.0000,219306.18,18329.15,0.00,1600.00,0,0.00,20000.00
+4101335.97,4101335.97,4224376.05,600.0000,232559.67,15374.75,0.00,1600.00,0,0.00,20000.00
+4355201.30,4355201.30,4442305.33,600.0000,246821.49,11296.16,0.00,1600.00,0,0.00,20000.00
+4630053.31,4630053.31,4676353.84,600.0000,262231.54,5719.53,0.00,1600.00,0,0.00,20000.00
+4927298.59,4927298.59,4927298.59,600.0000,278905.28,0.00,0.00,1600.00,0,0.00,20000.00
+5242378.58,5242378.58,5242378.58,600.0000,296739.99,0.00,0.00,1600.00,0,0.00,20000.00
+5576363.36,5576363.36,5576363.36,600.0000,315644.78,0.00,0.00,1600.00,0,0.00,20000.00
+5930387.21,5930387.21,5930387.21,600.0000,335683.85,0.00,0.00,1600.00,0,0.00,20000.00
+6305652.52,6305652.52,6305652.52,600.0000,356925.31,0.00,0.00,1600.00,0,0.00,20000.00
diff --git a/sample.cns.tsv.touchstone b/sample.cns.tsv.touchstone
new file mode 100644
index 00000000..d500bfe9
--- /dev/null
+++ b/sample.cns.tsv.touchstone
@@ -0,0 +1,158 @@
+
+
+FOR BROKER-DEALER USE ONLY. NOT TO BE SHARED WITH CLIENTS.
+
+ContractNumber
+ProducerName *** REQUIRED FIELD MISSING ***
+ProducerStreet *** REQUIRED FIELD MISSING ***
+ProducerCityEtc *** REQUIRED FIELD MISSING ***, CT
+CorpName
+Insured1
+Gender Male
+Smoker Nontobacco
+IssueAge 45
+InitBaseSpecAmt 1000000
+InitTermSpecAmt 0
+ Total: 1000000
+PolicyMktgName UL Supreme
+PolicyForm UL32768-NY
+UWClass Standard
+UWType Medical
+DatePrepared '2022-04-22'
+
+PolicyYear AttainedAge DeathBenefitOption EmployeeGrossPremium
CorporationGrossPremium GrossWithdrawal NewCashLoan LoanBalance Outlay
NetPremium PremiumTaxLoad DacTaxLoad PolicyFee
SpecifiedAmountLoad AnnualFlatExtra MortalityCharge RiderCharges
NetMortalityCharge SeparateAccountCharges
CurrentSeparateAccountInterestRate CurrentGeneralAccountInterestRate
CurrentGrossInterestCredited CurrentNetInterestCredited
GuaranteedAccountValue GuaranteedNetCashSurrenderValue
GuaranteedYearEndDeathBe [...]
+
+1 45 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 1691.1 0 0 0 0.066
0.06 1047.6 1047.6 14997.24 14997.24 1000000 17696.5 17696.5
1000000 -0.1152 49 1 0 0 0 0 0 0
0 0 0 0
+2 46 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 1794.66 0 0 0 0.066
0.06 2106.05 2106.05 30221.47 30221.47 1000000 36347.89
36347.89 1000000 -0.0622 5.5887 1 0 0 0 0
0 0 0 0 0 0
+3 47 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 1900.65 0 0 0 0.066
0.06 3221.71 3221.71 45669.72 45669.72 1000000 56008.95
56008.95 1000000 -0.0341 2.2968 1 0 0 0 0
0 0 0 0 0 0
+4 48 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2012.51 0 0 0 0.066
0.06 4397.76 4397.76 61330.22 61330.22 1000000 76734.2 76734.2
1000000 -0.0167 1.3316 1 0 0 0 0 0 0
0 0 0 0
+5 49 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2128.63 0 0 0 0.066
0.06 5637.5 5637.5 77192.53 77192.53 1000000 98583.07
98583.07 1000000 -0.0048 0.8985 1 0 0 0 0
0 0 0 0 0 0
+6 50 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2256.31 0 0 0 0.066
0.06 6944.31 6944.31 93229.04 93229.04 1000000 121611.07
121611.07 1000000 0.0038 0.6592 1 0 0 0 0
0 0 0 0 0 0
+7 51 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2397.21 0 0 0 0.066
0.06 8321.44 8321.44 109404.69 109404.69 1000000 145875.3
145875.3 1000000 0.0102 0.5098 1 0 0 0 0
0 0 0 0 0 0
+8 52 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2552.33 0 0 0 0.066
0.06 9772.28 9772.28 125677.19 125677.19 1000000 171435.25
171435.25 1000000 0.0153 0.4086 1 0 0 0 0
0 0 0 0 0 0
+9 53 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2721.96 0 0 0 0.066
0.06 11300.36 11300.36 141997.64 141997.64 1000000
198353.65 198353.65 1000000 0.0193 0.3362 1 0 0
0 0 0 0 0 0 0 0
+10 54 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2897.44 0 0 0 0.066
0.06 12909.76 12909.76 158327.86 158327.86 1000000
226705.97 226705.97 1000000 0.0226 0.2821 1 0 0
0 0 0 0 0 0 0 0
+11 55 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3077.97 0 0 0 0.066
0.06 14605.05 14605.05 174623.4 174623.4 1000000
256573.05 256573.05 1000000 0.0254 0.2403 1 0 0
0 0 0 0 0 0 0 0
+12 56 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3254.31 0 0 0 0.066
0.06 16391.34 16391.34 190850.06 190850.06 1000000
288050.08 288050.08 1000000 0.0277 0.2072 1 0 0
0 0 0 0 0 0 0 0
+13 57 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3414.01 0 0 0 0.066
0.06 18274.75 18274.75 206991.77 206991.77 1000000
321250.82 321250.82 1000000 0.0297 0.1804 1 0 0
0 0 0 0 0 0 0 0
+14 58 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3567.96 0 0 0 0.066
0.06 20261.73 20261.73 222994.08 222994.08 1000000
356284.59 356284.59 1000000 0.0315 0.1584 1 0 0
0 0 0 0 0 0 0 0
+15 59 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3714.07 0 0 0 0.066
0.06 22358.95 22358.95 238789.21 238789.21 1000000
393269.47 393269.47 1000000 0.0331 0.14 1 0 0
0 0 0 0 0 0 0 0
+16 60 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3844.77 0 0 0 0.066
0.06 24573.7 24573.7 254303.48 254303.48 1000000 432338.4
432338.4 1000000 0.0345 0.1244 1 0 0 0 0
0 0 0 0 0 0
+17 61 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3950.43 0 0 0 0.066
0.06 26914.29 26914.29 269457.5 269457.5 1000000
473642.26 473642.26 1000000 0.0358 0.1111 1 0 0
0 0 0 0 0 0 0 0
+18 62 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4034.38 0 0 0 0.066
0.06 29389.63 29389.63 284121.16 284121.16 1000000
517337.51 517337.51 1000000 0.0369 0.0997 1 0 0
0 0 0 0 0 0 0 0
+19 63 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4076.1 0 0 0 0.066
0.06 32009.76 32009.76 298165.18 298165.18 1000000
563611.17 563611.17 1000000 0.038 0.0897 1 0 0
0 0 0 0 0 0 0 0
+20 64 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4050.52 0 0 0 0.066
0.06 34786.72 34786.72 311466.19 311466.19 1000000
612687.37 612687.37 1000000 0.039 0.0809 1 0 0
0 0 0 0 0 0 0 0
+21 65 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3930.64 0 0 0 0.066
0.06 37734.84 37734.84 323904.99 323904.99 1000000
664831.57 664831.57 1000000 0.0399 0.0732 1 0 0
0 0 0 0 0 0 0 0
+22 66 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3687.03 0 0 0 0.066
0.06 40870.92 40870.92 335364.16 335364.16 1000000
720355.46 720355.46 1000000 0.0408 0.0663 1 0 0
0 0 0 0 0 0 0 0
+23 67 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3287.53 0 0 0 0.066
0.06 44214.72 44214.72 345725.35 345725.35 1000000
779622.65 779622.65 1000000 0.0417 0.0602 1 0 0
0 0 0 0 0 0 0 0
+24 68 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2702.15 0 0 0 0.066
0.06 47789.02 47789.02 354825.83 354825.83 1000000
843049.52 843049.52 1000000 0.0426 0.0547 1 0 0
0 0 0 0 0 0 0 0
+25 69 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2311.88 0 0 0 0.066
0.06 51611.17 51611.17 362433.83 362433.83 1000000
910688.81 910688.81 1056399.02 0.0434 0.0535 1 0
0 0 0 0 0 0 0 0 0
+26 70 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2581.34 0 0 0 0.066
0.06 55660.97 55660.97 368227.44 368227.44 1000000
982108.44 982108.44 1129424.71 0.0441 0.0532 1 0
0 0 0 0 0 0 0 0 0
+27 71 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2666.45 0 0 0 0.066
0.06 59943.42 59943.42 371788.51 371788.51 1000000
1057725.41 1057725.41 1195229.71 0.0448 0.0524 1 0
0 0 0 0 0 0 0 0 0
+28 72 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2694.81 0 0 0 0.066
0.06 64479.54 64479.54 372563.53 372563.53 1000000
1137850.14 1137850.14 1263013.66 0.0455 0.0517 1 0
0 0 0 0 0 0 0 0 0
+29 73 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2631.55 0 0 0 0.066
0.06 69289.03 69289.03 369920.11 369920.11 1000000
1222847.62 1222847.62 1332903.91 0.046 0.051 1 0
0 0 0 0 0 0 0 0 0
+30 74 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2430.3 0 0 0 0.066
0.06 74395.33 74395.33 363169.48 363169.48 1000000
1313152.65 1313152.65 1405073.34 0.0466 0.0503 1 0
0 0 0 0 0 0 0 0 0
+31 75 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2038.21 0 0 0 0.066
0.06 79826.15 79826.15 351554.44 351554.44 1000000
1409280.59 1409280.59 1479744.62 0.0471 0.0497 1 0
0 0 0 0 0 0 0 0 0
+32 76 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2415.65 0 0 0 0.066
0.06 85581.77 85581.77 334164.75 334164.75 1000000
1510786.71 1510786.71 1586326.05 0.0476 0.0501 1 0
0 0 0 0 0 0 0 0 0
+33 77 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2846.16 0 0 0 0.066
0.06 91658.38 91658.38 309886.07 309886.07 1000000
1617938.93 1617938.93 1698835.88 0.048 0.0505 1 0
0 0 0 0 0 0 0 0 0
+34 78 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3337.22 0 0 0 0.066
0.06 98071.83 98071.83 277262.27 277262.27 1000000
1731013.54 1731013.54 1817564.22 0.0484 0.0508 1 0
0 0 0 0 0 0 0 0 0
+35 79 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3905.39 0 0 0 0.066
0.06 104838.19 104838.19 234229.77 234229.77 1000000
1850286.34 1850286.34 1942800.66 0.0488 0.0511 1 0
0 0 0 0 0 0 0 0 0
+36 80 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4571.56 0 0 0 0.066
0.06 111973.27 111973.27 177869.84 177869.84 1000000
1976028.05 1976028.05 2074829.45 0.0491 0.0513 1 0
0 0 0 0 0 0 0 0 0
+37 81 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 5359.84 0 0 0 0.066
0.06 119492.6 119492.6 104067.6 104067.6 1000000
2108500.81 2108500.81 2213925.85 0.0494 0.0515 1 0
0 0 0 0 0 0 0 0 0
+38 82 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 6297.35 0 0 0 0.066
0.06 127411 127411 6993.45 6993.45 1000000 2247954.46 2247954.46
2360352.18 0.0497 0.0517 1 0 0 0 0 0
0 0 0 0 0
+39 83 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 7401.48 0 0 0 0.066
0.06 135742.95 135742.95 0 0 0 2394635.93
2394635.93 2514367.73 0.0499 0.0519 1 0 0 0
0 0 0 0 0 0 0
+40 84 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 8679.65 0 0 0 0.066
0.06 144503 144503 0 0 0 2548799.28 2548799.28
2676239.24 0.0501 0.0521 1 0 0 0 0 0
0 0 0 0 0
+41 85 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 10133.23 0 0 0
0.066 0.06 153706.39 153706.39 0 0 0
2710712.44 2710712.44 2846248.06 0.0503 0.0522 1 0
0 0 0 0 0 0 0 0 0
+42 86 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 11768.79 0 0 0
0.066 0.06 163368.89 163368.89 0 0 0
2880652.54 2880652.54 3024685.17 0.0505 0.0523 1 0
0 0 0 0 0 0 0 0 0
+43 87 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 13587.91 0 0 0
0.066 0.06 173507.16 173507.16 0 0 0
3058911.79 3058911.79 3211857.38 0.0506 0.0524 1 0
0 0 0 0 0 0 0 0 0
+44 88 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 15601.61 0 0 0
0.066 0.06 184138.37 184138.37 0 0 0
3245788.55 3245788.55 3408077.98 0.0507 0.0524 1 0
0 0 0 0 0 0 0 0 0
+45 89 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 17843.87 0 0 0
0.066 0.06 195279.3 195279.3 0 0 0
3441563.98 3441563.98 3613642.18 0.0508 0.0525 1 0
0 0 0 0 0 0 0 0 0
+46 90 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 20355.52 0 0 0
0.066 0.06 206945.56 206945.56 0 0 0
3646494.02 3646494.02 3828818.72 0.0509 0.0525 1 0
0 0 0 0 0 0 0 0 0
+47 91 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 18329.15 0 0 0
0.066 0.06 219306.18 219306.18 0 0 0
3865811.05 3865811.05 4020443.49 0.051 0.0523 1 0
0 0 0 0 0 0 0 0 0
+48 92 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 15374.75 0 0 0
0.066 0.06 232559.67 232559.67 0 0 0
4101335.97 4101335.97 4224376.05 0.0512 0.0521 1 0
0 0 0 0 0 0 0 0 0
+49 93 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 11296.16 0 0 0
0.066 0.06 246821.49 246821.49 0 0 0
4355201.3 4355201.3 4442305.33 0.0513 0.0519 1 0
0 0 0 0 0 0 0 0 0
+50 94 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 5719.53 0 0 0 0.066
0.06 262231.54 262231.54 0 0 0 4630053.31
4630053.31 4676353.84 0.0515 0.0518 1 0 0 0
0 0 0 0 0 0 0
+51 95 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 278905.28 278905.28 0 0 0 4927298.59
4927298.59 4927298.59 0.0517 0.0517 1 0 0 0
0 0 0 0 0 0 0
+52 96 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 296739.99 296739.99 0 0 0 5242378.58
5242378.58 5242378.58 0.0519 0.0519 1 0 0 0
0 0 0 0 0 0 0
+53 97 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 315644.78 315644.78 0 0 0 5576363.36
5576363.36 5576363.36 0.0521 0.0521 1 0 0 0
0 0 0 0 0 0 0
+54 98 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 335683.85 335683.85 0 0 0 5930387.21
5930387.21 5930387.21 0.0523 0.0523 1 0 0 0
0 0 0 0 0 0 0
+55 99 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 356925.31 356925.31 0 0 0 6305652.52
6305652.52 6305652.52 0.0525 0.0525 1 0 0 0
0 0 0 0 0 0 0
+
+
+FOR BROKER-DEALER USE ONLY. NOT TO BE SHARED WITH CLIENTS.
+
+ContractNumber
+ProducerName *** REQUIRED FIELD MISSING ***
+ProducerStreet *** REQUIRED FIELD MISSING ***
+ProducerCityEtc *** REQUIRED FIELD MISSING ***, CT
+CorpName
+Insured1
+Gender
+Smoker
+IssueAge 45
+InitBaseSpecAmt 1000000
+InitTermSpecAmt 0
+ Total: 1000000
+PolicyMktgName UL Supreme
+PolicyForm UL32768-NY
+UWClass
+UWType Medical
+DatePrepared '2022-04-22'
+
+PolicyYear AttainedAge DeathBenefitOption EmployeeGrossPremium
CorporationGrossPremium GrossWithdrawal NewCashLoan LoanBalance Outlay
NetPremium PremiumTaxLoad DacTaxLoad PolicyFee
SpecifiedAmountLoad AnnualFlatExtra MortalityCharge RiderCharges
NetMortalityCharge SeparateAccountCharges
CurrentSeparateAccountInterestRate CurrentGeneralAccountInterestRate
CurrentGrossInterestCredited CurrentNetInterestCredited
GuaranteedAccountValue GuaranteedNetCashSurrenderValue
GuaranteedYearEndDeathBe [...]
+
+1 20000 0 0 0 0 20000 18400
400 200 60 0 0 1691.1 0 0 0 0.066
0.06 1047.6 1047.6 14997.24 14997.24 1000000 17696.5 17696.5
1000000 -0.1152 49 1 0 0 0 0 0 0
0 0 0 0
+2 20000 0 0 0 0 20000 18400
400 200 60 0 0 1794.66 0 0 0 0.066
0.06 2106.05 2106.05 30221.47 30221.47 1000000 36347.89
36347.89 1000000 -0.0622 5.5887 1 0 0 0 0
0 0 0 0 0 0
+3 20000 0 0 0 0 20000 18400
400 200 60 0 0 1900.65 0 0 0 0.066
0.06 3221.71 3221.71 45669.72 45669.72 1000000 56008.95
56008.95 1000000 -0.0341 2.2968 1 0 0 0 0
0 0 0 0 0 0
+4 20000 0 0 0 0 20000 18400
400 200 60 0 0 2012.51 0 0 0 0.066
0.06 4397.76 4397.76 61330.22 61330.22 1000000 76734.2 76734.2
1000000 -0.0167 1.3316 1 0 0 0 0 0 0
0 0 0 0
+5 20000 0 0 0 0 20000 18400
400 200 60 0 0 2128.63 0 0 0 0.066
0.06 5637.5 5637.5 77192.53 77192.53 1000000 98583.07
98583.07 1000000 -0.0048 0.8985 1 0 0 0 0
0 0 0 0 0 0
+6 20000 0 0 0 0 20000 18400
400 200 60 0 0 2256.31 0 0 0 0.066
0.06 6944.31 6944.31 93229.04 93229.04 1000000 121611.07
121611.07 1000000 0.0038 0.6592 1 0 0 0 0
0 0 0 0 0 0
+7 20000 0 0 0 0 20000 18400
400 200 60 0 0 2397.21 0 0 0 0.066
0.06 8321.44 8321.44 109404.69 109404.69 1000000 145875.3
145875.3 1000000 0.0102 0.5098 1 0 0 0 0
0 0 0 0 0 0
+8 20000 0 0 0 0 20000 18400
400 200 60 0 0 2552.33 0 0 0 0.066
0.06 9772.28 9772.28 125677.19 125677.19 1000000 171435.25
171435.25 1000000 0.0153 0.4086 1 0 0 0 0
0 0 0 0 0 0
+9 20000 0 0 0 0 20000 18400
400 200 60 0 0 2721.96 0 0 0 0.066
0.06 11300.36 11300.36 141997.64 141997.64 1000000
198353.65 198353.65 1000000 0.0193 0.3362 1 0 0
0 0 0 0 0 0 0 0
+10 20000 0 0 0 0 20000 18400
400 200 60 0 0 2897.44 0 0 0 0.066
0.06 12909.76 12909.76 158327.86 158327.86 1000000
226705.97 226705.97 1000000 0.0226 0.2821 1 0 0
0 0 0 0 0 0 0 0
+11 20000 0 0 0 0 20000 18400
400 200 60 0 0 3077.97 0 0 0 0.066
0.06 14605.05 14605.05 174623.4 174623.4 1000000
256573.05 256573.05 1000000 0.0254 0.2403 1 0 0
0 0 0 0 0 0 0 0
+12 20000 0 0 0 0 20000 18400
400 200 60 0 0 3254.31 0 0 0 0.066
0.06 16391.34 16391.34 190850.06 190850.06 1000000
288050.08 288050.08 1000000 0.0277 0.2072 1 0 0
0 0 0 0 0 0 0 0
+13 20000 0 0 0 0 20000 18400
400 200 60 0 0 3414.01 0 0 0 0.066
0.06 18274.75 18274.75 206991.77 206991.77 1000000
321250.82 321250.82 1000000 0.0297 0.1804 1 0 0
0 0 0 0 0 0 0 0
+14 20000 0 0 0 0 20000 18400
400 200 60 0 0 3567.96 0 0 0 0.066
0.06 20261.73 20261.73 222994.08 222994.08 1000000
356284.59 356284.59 1000000 0.0315 0.1584 1 0 0
0 0 0 0 0 0 0 0
+15 20000 0 0 0 0 20000 18400
400 200 60 0 0 3714.07 0 0 0 0.066
0.06 22358.95 22358.95 238789.21 238789.21 1000000
393269.47 393269.47 1000000 0.0331 0.14 1 0 0
0 0 0 0 0 0 0 0
+16 20000 0 0 0 0 20000 18400
400 200 60 0 0 3844.77 0 0 0 0.066
0.06 24573.7 24573.7 254303.48 254303.48 1000000 432338.4
432338.4 1000000 0.0345 0.1244 1 0 0 0 0
0 0 0 0 0 0
+17 20000 0 0 0 0 20000 18400
400 200 60 0 0 3950.43 0 0 0 0.066
0.06 26914.29 26914.29 269457.5 269457.5 1000000
473642.26 473642.26 1000000 0.0358 0.1111 1 0 0
0 0 0 0 0 0 0 0
+18 20000 0 0 0 0 20000 18400
400 200 60 0 0 4034.38 0 0 0 0.066
0.06 29389.63 29389.63 284121.16 284121.16 1000000
517337.51 517337.51 1000000 0.0369 0.0997 1 0 0
0 0 0 0 0 0 0 0
+19 20000 0 0 0 0 20000 18400
400 200 60 0 0 4076.1 0 0 0 0.066
0.06 32009.76 32009.76 298165.18 298165.18 1000000
563611.17 563611.17 1000000 0.038 0.0897 1 0 0
0 0 0 0 0 0 0 0
+20 20000 0 0 0 0 20000 18400
400 200 60 0 0 4050.52 0 0 0 0.066
0.06 34786.72 34786.72 311466.19 311466.19 1000000
612687.37 612687.37 1000000 0.039 0.0809 1 0 0
0 0 0 0 0 0 0 0
+21 20000 0 0 0 0 20000 18400
400 200 60 0 0 3930.64 0 0 0 0.066
0.06 37734.84 37734.84 323904.99 323904.99 1000000
664831.57 664831.57 1000000 0.0399 0.0732 1 0 0
0 0 0 0 0 0 0 0
+22 20000 0 0 0 0 20000 18400
400 200 60 0 0 3687.03 0 0 0 0.066
0.06 40870.92 40870.92 335364.16 335364.16 1000000
720355.46 720355.46 1000000 0.0408 0.0663 1 0 0
0 0 0 0 0 0 0 0
+23 20000 0 0 0 0 20000 18400
400 200 60 0 0 3287.53 0 0 0 0.066
0.06 44214.72 44214.72 345725.35 345725.35 1000000
779622.65 779622.65 1000000 0.0417 0.0602 1 0 0
0 0 0 0 0 0 0 0
+24 20000 0 0 0 0 20000 18400
400 200 60 0 0 2702.15 0 0 0 0.066
0.06 47789.02 47789.02 354825.83 354825.83 1000000
843049.52 843049.52 1000000 0.0426 0.0547 1 0 0
0 0 0 0 0 0 0 0
+25 20000 0 0 0 0 20000 18400
400 200 60 0 0 2311.88 0 0 0 0.066
0.06 51611.17 51611.17 362433.83 362433.83 1000000
910688.81 910688.81 1056399.02 0.0434 0.0535 1 0
0 0 0 0 0 0 0 0 0
+26 20000 0 0 0 0 20000 18400
400 200 60 0 0 2581.34 0 0 0 0.066
0.06 55660.97 55660.97 368227.44 368227.44 1000000
982108.44 982108.44 1129424.71 0.0441 0.0532 1 0
0 0 0 0 0 0 0 0 0
+27 20000 0 0 0 0 20000 18400
400 200 60 0 0 2666.45 0 0 0 0.066
0.06 59943.42 59943.42 371788.51 371788.51 1000000
1057725.41 1057725.41 1195229.71 0.0448 0.0524 1 0
0 0 0 0 0 0 0 0 0
+28 20000 0 0 0 0 20000 18400
400 200 60 0 0 2694.81 0 0 0 0.066
0.06 64479.54 64479.54 372563.53 372563.53 1000000
1137850.14 1137850.14 1263013.66 0.0455 0.0517 1 0
0 0 0 0 0 0 0 0 0
+29 20000 0 0 0 0 20000 18400
400 200 60 0 0 2631.55 0 0 0 0.066
0.06 69289.03 69289.03 369920.11 369920.11 1000000
1222847.62 1222847.62 1332903.91 0.046 0.051 1 0
0 0 0 0 0 0 0 0 0
+30 20000 0 0 0 0 20000 18400
400 200 60 0 0 2430.3 0 0 0 0.066
0.06 74395.33 74395.33 363169.48 363169.48 1000000
1313152.65 1313152.65 1405073.34 0.0466 0.0503 1 0
0 0 0 0 0 0 0 0 0
+31 20000 0 0 0 0 20000 18400
400 200 60 0 0 2038.21 0 0 0 0.066
0.06 79826.15 79826.15 351554.44 351554.44 1000000
1409280.59 1409280.59 1479744.62 0.0471 0.0497 1 0
0 0 0 0 0 0 0 0 0
+32 20000 0 0 0 0 20000 18400
400 200 60 0 0 2415.65 0 0 0 0.066
0.06 85581.77 85581.77 334164.75 334164.75 1000000
1510786.71 1510786.71 1586326.05 0.0476 0.0501 1 0
0 0 0 0 0 0 0 0 0
+33 20000 0 0 0 0 20000 18400
400 200 60 0 0 2846.16 0 0 0 0.066
0.06 91658.38 91658.38 309886.07 309886.07 1000000
1617938.93 1617938.93 1698835.88 0.048 0.0505 1 0
0 0 0 0 0 0 0 0 0
+34 20000 0 0 0 0 20000 18400
400 200 60 0 0 3337.22 0 0 0 0.066
0.06 98071.83 98071.83 277262.27 277262.27 1000000
1731013.54 1731013.54 1817564.22 0.0484 0.0508 1 0
0 0 0 0 0 0 0 0 0
+35 20000 0 0 0 0 20000 18400
400 200 60 0 0 3905.39 0 0 0 0.066
0.06 104838.19 104838.19 234229.77 234229.77 1000000
1850286.34 1850286.34 1942800.66 0.0488 0.0511 1 0
0 0 0 0 0 0 0 0 0
+36 20000 0 0 0 0 20000 18400
400 200 60 0 0 4571.56 0 0 0 0.066
0.06 111973.27 111973.27 177869.84 177869.84 1000000
1976028.05 1976028.05 2074829.45 0.0491 0.0513 1 0
0 0 0 0 0 0 0 0 0
+37 20000 0 0 0 0 20000 18400
400 200 60 0 0 5359.84 0 0 0 0.066
0.06 119492.6 119492.6 104067.6 104067.6 1000000
2108500.81 2108500.81 2213925.85 0.0494 0.0515 1 0
0 0 0 0 0 0 0 0 0
+38 20000 0 0 0 0 20000 18400
400 200 60 0 0 6297.35 0 0 0 0.066
0.06 127411 127411 6993.45 6993.45 1000000 2247954.46 2247954.46
2360352.18 0.0497 0.0517 1 0 0 0 0 0
0 0 0 0 0
+39 20000 0 0 0 0 20000 18400
400 200 60 0 0 7401.48 0 0 0 0.066
0.06 135742.95 135742.95 0 0 0 2394635.93
2394635.93 2514367.73 0.0499 0.0519 1 0 0 0
0 0 0 0 0 0 0
+40 20000 0 0 0 0 20000 18400
400 200 60 0 0 8679.65 0 0 0 0.066
0.06 144503 144503 0 0 0 2548799.28 2548799.28
2676239.24 0.0501 0.0521 1 0 0 0 0 0
0 0 0 0 0
+41 20000 0 0 0 0 20000 18400
400 200 60 0 0 10133.23 0 0 0
0.066 0.06 153706.39 153706.39 0 0 0
2710712.44 2710712.44 2846248.06 0.0503 0.0522 1 0
0 0 0 0 0 0 0 0 0
+42 20000 0 0 0 0 20000 18400
400 200 60 0 0 11768.79 0 0 0
0.066 0.06 163368.89 163368.89 0 0 0
2880652.54 2880652.54 3024685.17 0.0505 0.0523 1 0
0 0 0 0 0 0 0 0 0
+43 20000 0 0 0 0 20000 18400
400 200 60 0 0 13587.91 0 0 0
0.066 0.06 173507.16 173507.16 0 0 0
3058911.79 3058911.79 3211857.38 0.0506 0.0524 1 0
0 0 0 0 0 0 0 0 0
+44 20000 0 0 0 0 20000 18400
400 200 60 0 0 15601.61 0 0 0
0.066 0.06 184138.37 184138.37 0 0 0
3245788.55 3245788.55 3408077.98 0.0507 0.0524 1 0
0 0 0 0 0 0 0 0 0
+45 20000 0 0 0 0 20000 18400
400 200 60 0 0 17843.87 0 0 0
0.066 0.06 195279.3 195279.3 0 0 0
3441563.98 3441563.98 3613642.18 0.0508 0.0525 1 0
0 0 0 0 0 0 0 0 0
+46 20000 0 0 0 0 20000 18400
400 200 60 0 0 20355.52 0 0 0
0.066 0.06 206945.56 206945.56 0 0 0
3646494.02 3646494.02 3828818.72 0.0509 0.0525 1 0
0 0 0 0 0 0 0 0 0
+47 20000 0 0 0 0 20000 18400
400 200 60 0 0 18329.15 0 0 0
0.066 0.06 219306.18 219306.18 0 0 0
3865811.05 3865811.05 4020443.49 0.051 0.0523 1 0
0 0 0 0 0 0 0 0 0
+48 20000 0 0 0 0 20000 18400
400 200 60 0 0 15374.75 0 0 0
0.066 0.06 232559.67 232559.67 0 0 0
4101335.97 4101335.97 4224376.05 0.0512 0.0521 1 0
0 0 0 0 0 0 0 0 0
+49 20000 0 0 0 0 20000 18400
400 200 60 0 0 11296.16 0 0 0
0.066 0.06 246821.49 246821.49 0 0 0
4355201.3 4355201.3 4442305.33 0.0513 0.0519 1 0
0 0 0 0 0 0 0 0 0
+50 20000 0 0 0 0 20000 18400
400 200 60 0 0 5719.53 0 0 0 0.066
0.06 262231.54 262231.54 0 0 0 4630053.31
4630053.31 4676353.84 0.0515 0.0518 1 0 0 0
0 0 0 0 0 0 0
+51 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 278905.28 278905.28 0 0 0 4927298.59
4927298.59 4927298.59 0.0517 0.0517 1 0 0 0
0 0 0 0 0 0 0
+52 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 296739.99 296739.99 0 0 0 5242378.58
5242378.58 5242378.58 0.0519 0.0519 1 0 0 0
0 0 0 0 0 0 0
+53 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 315644.78 315644.78 0 0 0 5576363.36
5576363.36 5576363.36 0.0521 0.0521 1 0 0 0
0 0 0 0 0 0 0
+54 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 335683.85 335683.85 0 0 0 5930387.21
5930387.21 5930387.21 0.0523 0.0523 1 0 0 0
0 0 0 0 0 0 0
+55 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 356925.31 356925.31 0 0 0 6305652.52
6305652.52 6305652.52 0.0525 0.0525 1 0 0 0
0 0 0 0 0 0 0
diff --git a/sample.ill.tsv.touchstone b/sample.ill.tsv.touchstone
new file mode 100644
index 00000000..2c791435
--- /dev/null
+++ b/sample.ill.tsv.touchstone
@@ -0,0 +1,79 @@
+
+
+FOR BROKER-DEALER USE ONLY. NOT TO BE SHARED WITH CLIENTS.
+
+ContractNumber
+ProducerName *** REQUIRED FIELD MISSING ***
+ProducerStreet *** REQUIRED FIELD MISSING ***
+ProducerCityEtc *** REQUIRED FIELD MISSING ***, CT
+CorpName
+Insured1
+Gender Male
+Smoker Nontobacco
+IssueAge 45
+InitBaseSpecAmt 1000000
+InitTermSpecAmt 0
+ Total: 1000000
+PolicyMktgName UL Supreme
+PolicyForm UL32768-NY
+UWClass Standard
+UWType Medical
+DatePrepared '2022-04-22'
+
+PolicyYear AttainedAge DeathBenefitOption EmployeeGrossPremium
CorporationGrossPremium GrossWithdrawal NewCashLoan LoanBalance Outlay
NetPremium PremiumTaxLoad DacTaxLoad PolicyFee
SpecifiedAmountLoad AnnualFlatExtra MortalityCharge RiderCharges
NetMortalityCharge SeparateAccountCharges
CurrentSeparateAccountInterestRate CurrentGeneralAccountInterestRate
CurrentGrossInterestCredited CurrentNetInterestCredited
GuaranteedAccountValue GuaranteedNetCashSurrenderValue
GuaranteedYearEndDeathBe [...]
+
+1 45 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 1691.1 0 0 0 0.066
0.06 1047.6 1047.6 14997.24 14997.24 1000000 17696.5 17696.5
1000000 -0.1152 49 1 0 0 0 0 0 0
0 0 0 0
+2 46 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 1794.66 0 0 0 0.066
0.06 2106.05 2106.05 30221.47 30221.47 1000000 36347.89
36347.89 1000000 -0.0622 5.5887 1 0 0 0 0
0 0 0 0 0 0
+3 47 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 1900.65 0 0 0 0.066
0.06 3221.71 3221.71 45669.72 45669.72 1000000 56008.95
56008.95 1000000 -0.0341 2.2968 1 0 0 0 0
0 0 0 0 0 0
+4 48 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2012.51 0 0 0 0.066
0.06 4397.76 4397.76 61330.22 61330.22 1000000 76734.2 76734.2
1000000 -0.0167 1.3316 1 0 0 0 0 0 0
0 0 0 0
+5 49 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2128.63 0 0 0 0.066
0.06 5637.5 5637.5 77192.53 77192.53 1000000 98583.07
98583.07 1000000 -0.0048 0.8985 1 0 0 0 0
0 0 0 0 0 0
+6 50 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2256.31 0 0 0 0.066
0.06 6944.31 6944.31 93229.04 93229.04 1000000 121611.07
121611.07 1000000 0.0038 0.6592 1 0 0 0 0
0 0 0 0 0 0
+7 51 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2397.21 0 0 0 0.066
0.06 8321.44 8321.44 109404.69 109404.69 1000000 145875.3
145875.3 1000000 0.0102 0.5098 1 0 0 0 0
0 0 0 0 0 0
+8 52 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2552.33 0 0 0 0.066
0.06 9772.28 9772.28 125677.19 125677.19 1000000 171435.25
171435.25 1000000 0.0153 0.4086 1 0 0 0 0
0 0 0 0 0 0
+9 53 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2721.96 0 0 0 0.066
0.06 11300.36 11300.36 141997.64 141997.64 1000000
198353.65 198353.65 1000000 0.0193 0.3362 1 0 0
0 0 0 0 0 0 0 0
+10 54 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2897.44 0 0 0 0.066
0.06 12909.76 12909.76 158327.86 158327.86 1000000
226705.97 226705.97 1000000 0.0226 0.2821 1 0 0
0 0 0 0 0 0 0 0
+11 55 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3077.97 0 0 0 0.066
0.06 14605.05 14605.05 174623.4 174623.4 1000000
256573.05 256573.05 1000000 0.0254 0.2403 1 0 0
0 0 0 0 0 0 0 0
+12 56 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3254.31 0 0 0 0.066
0.06 16391.34 16391.34 190850.06 190850.06 1000000
288050.08 288050.08 1000000 0.0277 0.2072 1 0 0
0 0 0 0 0 0 0 0
+13 57 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3414.01 0 0 0 0.066
0.06 18274.75 18274.75 206991.77 206991.77 1000000
321250.82 321250.82 1000000 0.0297 0.1804 1 0 0
0 0 0 0 0 0 0 0
+14 58 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3567.96 0 0 0 0.066
0.06 20261.73 20261.73 222994.08 222994.08 1000000
356284.59 356284.59 1000000 0.0315 0.1584 1 0 0
0 0 0 0 0 0 0 0
+15 59 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3714.07 0 0 0 0.066
0.06 22358.95 22358.95 238789.21 238789.21 1000000
393269.47 393269.47 1000000 0.0331 0.14 1 0 0
0 0 0 0 0 0 0 0
+16 60 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3844.77 0 0 0 0.066
0.06 24573.7 24573.7 254303.48 254303.48 1000000 432338.4
432338.4 1000000 0.0345 0.1244 1 0 0 0 0
0 0 0 0 0 0
+17 61 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3950.43 0 0 0 0.066
0.06 26914.29 26914.29 269457.5 269457.5 1000000
473642.26 473642.26 1000000 0.0358 0.1111 1 0 0
0 0 0 0 0 0 0 0
+18 62 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4034.38 0 0 0 0.066
0.06 29389.63 29389.63 284121.16 284121.16 1000000
517337.51 517337.51 1000000 0.0369 0.0997 1 0 0
0 0 0 0 0 0 0 0
+19 63 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4076.1 0 0 0 0.066
0.06 32009.76 32009.76 298165.18 298165.18 1000000
563611.17 563611.17 1000000 0.038 0.0897 1 0 0
0 0 0 0 0 0 0 0
+20 64 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4050.52 0 0 0 0.066
0.06 34786.72 34786.72 311466.19 311466.19 1000000
612687.37 612687.37 1000000 0.039 0.0809 1 0 0
0 0 0 0 0 0 0 0
+21 65 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3930.64 0 0 0 0.066
0.06 37734.84 37734.84 323904.99 323904.99 1000000
664831.57 664831.57 1000000 0.0399 0.0732 1 0 0
0 0 0 0 0 0 0 0
+22 66 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3687.03 0 0 0 0.066
0.06 40870.92 40870.92 335364.16 335364.16 1000000
720355.46 720355.46 1000000 0.0408 0.0663 1 0 0
0 0 0 0 0 0 0 0
+23 67 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3287.53 0 0 0 0.066
0.06 44214.72 44214.72 345725.35 345725.35 1000000
779622.65 779622.65 1000000 0.0417 0.0602 1 0 0
0 0 0 0 0 0 0 0
+24 68 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2702.15 0 0 0 0.066
0.06 47789.02 47789.02 354825.83 354825.83 1000000
843049.52 843049.52 1000000 0.0426 0.0547 1 0 0
0 0 0 0 0 0 0 0
+25 69 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2311.88 0 0 0 0.066
0.06 51611.17 51611.17 362433.83 362433.83 1000000
910688.81 910688.81 1056399.02 0.0434 0.0535 1 0
0 0 0 0 0 0 0 0 0
+26 70 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2581.34 0 0 0 0.066
0.06 55660.97 55660.97 368227.44 368227.44 1000000
982108.44 982108.44 1129424.71 0.0441 0.0532 1 0
0 0 0 0 0 0 0 0 0
+27 71 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2666.45 0 0 0 0.066
0.06 59943.42 59943.42 371788.51 371788.51 1000000
1057725.41 1057725.41 1195229.71 0.0448 0.0524 1 0
0 0 0 0 0 0 0 0 0
+28 72 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2694.81 0 0 0 0.066
0.06 64479.54 64479.54 372563.53 372563.53 1000000
1137850.14 1137850.14 1263013.66 0.0455 0.0517 1 0
0 0 0 0 0 0 0 0 0
+29 73 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2631.55 0 0 0 0.066
0.06 69289.03 69289.03 369920.11 369920.11 1000000
1222847.62 1222847.62 1332903.91 0.046 0.051 1 0
0 0 0 0 0 0 0 0 0
+30 74 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2430.3 0 0 0 0.066
0.06 74395.33 74395.33 363169.48 363169.48 1000000
1313152.65 1313152.65 1405073.34 0.0466 0.0503 1 0
0 0 0 0 0 0 0 0 0
+31 75 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2038.21 0 0 0 0.066
0.06 79826.15 79826.15 351554.44 351554.44 1000000
1409280.59 1409280.59 1479744.62 0.0471 0.0497 1 0
0 0 0 0 0 0 0 0 0
+32 76 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2415.65 0 0 0 0.066
0.06 85581.77 85581.77 334164.75 334164.75 1000000
1510786.71 1510786.71 1586326.05 0.0476 0.0501 1 0
0 0 0 0 0 0 0 0 0
+33 77 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 2846.16 0 0 0 0.066
0.06 91658.38 91658.38 309886.07 309886.07 1000000
1617938.93 1617938.93 1698835.88 0.048 0.0505 1 0
0 0 0 0 0 0 0 0 0
+34 78 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3337.22 0 0 0 0.066
0.06 98071.83 98071.83 277262.27 277262.27 1000000
1731013.54 1731013.54 1817564.22 0.0484 0.0508 1 0
0 0 0 0 0 0 0 0 0
+35 79 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 3905.39 0 0 0 0.066
0.06 104838.19 104838.19 234229.77 234229.77 1000000
1850286.34 1850286.34 1942800.66 0.0488 0.0511 1 0
0 0 0 0 0 0 0 0 0
+36 80 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 4571.56 0 0 0 0.066
0.06 111973.27 111973.27 177869.84 177869.84 1000000
1976028.05 1976028.05 2074829.45 0.0491 0.0513 1 0
0 0 0 0 0 0 0 0 0
+37 81 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 5359.84 0 0 0 0.066
0.06 119492.6 119492.6 104067.6 104067.6 1000000
2108500.81 2108500.81 2213925.85 0.0494 0.0515 1 0
0 0 0 0 0 0 0 0 0
+38 82 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 6297.35 0 0 0 0.066
0.06 127411 127411 6993.45 6993.45 1000000 2247954.46 2247954.46
2360352.18 0.0497 0.0517 1 0 0 0 0 0
0 0 0 0 0
+39 83 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 7401.48 0 0 0 0.066
0.06 135742.95 135742.95 0 0 0 2394635.93
2394635.93 2514367.73 0.0499 0.0519 1 0 0 0
0 0 0 0 0 0 0
+40 84 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 8679.65 0 0 0 0.066
0.06 144503 144503 0 0 0 2548799.28 2548799.28
2676239.24 0.0501 0.0521 1 0 0 0 0 0
0 0 0 0 0
+41 85 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 10133.23 0 0 0
0.066 0.06 153706.39 153706.39 0 0 0
2710712.44 2710712.44 2846248.06 0.0503 0.0522 1 0
0 0 0 0 0 0 0 0 0
+42 86 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 11768.79 0 0 0
0.066 0.06 163368.89 163368.89 0 0 0
2880652.54 2880652.54 3024685.17 0.0505 0.0523 1 0
0 0 0 0 0 0 0 0 0
+43 87 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 13587.91 0 0 0
0.066 0.06 173507.16 173507.16 0 0 0
3058911.79 3058911.79 3211857.38 0.0506 0.0524 1 0
0 0 0 0 0 0 0 0 0
+44 88 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 15601.61 0 0 0
0.066 0.06 184138.37 184138.37 0 0 0
3245788.55 3245788.55 3408077.98 0.0507 0.0524 1 0
0 0 0 0 0 0 0 0 0
+45 89 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 17843.87 0 0 0
0.066 0.06 195279.3 195279.3 0 0 0
3441563.98 3441563.98 3613642.18 0.0508 0.0525 1 0
0 0 0 0 0 0 0 0 0
+46 90 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 20355.52 0 0 0
0.066 0.06 206945.56 206945.56 0 0 0
3646494.02 3646494.02 3828818.72 0.0509 0.0525 1 0
0 0 0 0 0 0 0 0 0
+47 91 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 18329.15 0 0 0
0.066 0.06 219306.18 219306.18 0 0 0
3865811.05 3865811.05 4020443.49 0.051 0.0523 1 0
0 0 0 0 0 0 0 0 0
+48 92 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 15374.75 0 0 0
0.066 0.06 232559.67 232559.67 0 0 0
4101335.97 4101335.97 4224376.05 0.0512 0.0521 1 0
0 0 0 0 0 0 0 0 0
+49 93 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 11296.16 0 0 0
0.066 0.06 246821.49 246821.49 0 0 0
4355201.3 4355201.3 4442305.33 0.0513 0.0519 1 0
0 0 0 0 0 0 0 0 0
+50 94 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 5719.53 0 0 0 0.066
0.06 262231.54 262231.54 0 0 0 4630053.31
4630053.31 4676353.84 0.0515 0.0518 1 0 0 0
0 0 0 0 0 0 0
+51 95 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 278905.28 278905.28 0 0 0 4927298.59
4927298.59 4927298.59 0.0517 0.0517 1 0 0 0
0 0 0 0 0 0 0
+52 96 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 296739.99 296739.99 0 0 0 5242378.58
5242378.58 5242378.58 0.0519 0.0519 1 0 0 0
0 0 0 0 0 0 0
+53 97 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 315644.78 315644.78 0 0 0 5576363.36
5576363.36 5576363.36 0.0521 0.0521 1 0 0 0
0 0 0 0 0 0 0
+54 98 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 335683.85 335683.85 0 0 0 5930387.21
5930387.21 5930387.21 0.0523 0.0523 1 0 0 0
0 0 0 0 0 0 0
+55 99 A 20000 0 0 0 0 20000 18400
400 200 60 0 0 0 0 0 0 0.066
0.06 356925.31 356925.31 0 0 0 6305652.52
6305652.52 6305652.52 0.0525 0.0525 1 0 0 0
0 0 0 0 0 0 0
diff --git a/sample.roster.tsv.touchstone b/sample.roster.tsv.touchstone
new file mode 100644
index 00000000..ffcc5e13
--- /dev/null
+++ b/sample.roster.tsv.touchstone
@@ -0,0 +1,7 @@
+FOR BROKER-DEALER USE ONLY. NOT TO BE SHARED WITH CLIENTS.
+
+DatePrepared '2022-04-22'
+
+Insured1 ContractNumber DateOfBirth IssueAge CurrentAge
UWClass Smoker Salary SpecifiedAmount SupplSpecAmt InitialTargetPremium
ModalMinimumPremium EeModalMinimumPremium ErModalMinimumPremium
ListBillPremium EeListBillPremium ErListBillPremium ListBillDate
EeMode ErMode CorpName EffDate LastCoiReentryDate InforceAsOfDate
PremiumTaxState StateOfJurisdiction CurrentGeneralAccountInterestRate
PolicyFee DacTaxLoad MaxPremiumTaxLoad MaxTargetPremiumLoad
ProductName PolicyForm CurrentCoiMultip [...]
+
+ '1973-07-01' 45 45 Standard Nontobacco
100000 1000000 0 55394.15 1886.51 0 1886.51 0 0
0 '1970-01-01' Annual Annual '2018-07-01' '2018-07-01'
'2018-07-01' CT CT 0.06 5 0.01 0.02 0.08 sample
UL32768-NY 0.5 0 0 0 0 0 0
diff --git a/sample.summary.html.touchstone b/sample.summary.html.touchstone
new file mode 100644
index 00000000..5b966a35
--- /dev/null
+++ b/sample.summary.html.touchstone
@@ -0,0 +1,453 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Let me illustrate...</title>
+</head>
+<body>
+<p>
+Calculation summary for:<br>
+Male, Nontobacco, age 45, CT jurisdiction<br>
+Not a MEC
+</p>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+ <td align="right" nowrap></td>
+ <td align="left" nowrap></td>
+ <td align="right" nowrap>23,839.99</td>
+ <td align="left" nowrap> guaranteed premium</td>
+</tr>
+<tr>
+ <td align="right" nowrap></td>
+ <td align="left" nowrap></td>
+ <td align="right" nowrap>22,110.68</td>
+ <td align="left" nowrap> initial guideline level premium</td>
+</tr>
+<tr>
+ <td align="right" nowrap>1,000,000</td>
+ <td align="left" nowrap> initial base specified amount</td>
+ <td align="right" nowrap>239,162.50</td>
+ <td align="left" nowrap> initial guideline single premium</td>
+</tr>
+<tr>
+ <td align="right" nowrap>0</td>
+ <td align="left" nowrap> initial term specified amount</td>
+ <td align="right" nowrap>55,394.15</td>
+ <td align="left" nowrap> initial seven-pay premium</td>
+</tr>
+<tr>
+ <td align="right" nowrap>1,000,000</td>
+ <td align="left" nowrap> initial total specified amount</td>
+ <td align="right" nowrap>55,394.15</td>
+ <td align="left" nowrap> initial target premium</td>
+</tr>
+</table>
+<hr>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr align="right">
+<td valign="bottom" width="20%">Policy Year </td>
+<td valign="bottom" width="20%">Net Outlay </td>
+<td valign="bottom" width="20%">Curr Account Value </td>
+<td valign="bottom" width="20%">Curr Net Cash Surr Value </td>
+<td valign="bottom" width="20%">Curr EOY Death Benefit </td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 1</td>
+<td nowrap> 20,000</td>
+<td nowrap> 17,696</td>
+<td nowrap> 17,696</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 2</td>
+<td nowrap> 20,000</td>
+<td nowrap> 36,348</td>
+<td nowrap> 36,348</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 3</td>
+<td nowrap> 20,000</td>
+<td nowrap> 56,009</td>
+<td nowrap> 56,009</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 4</td>
+<td nowrap> 20,000</td>
+<td nowrap> 76,734</td>
+<td nowrap> 76,734</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 5</td>
+<td nowrap> 20,000</td>
+<td nowrap> 98,583</td>
+<td nowrap> 98,583</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 6</td>
+<td nowrap> 20,000</td>
+<td nowrap> 121,611</td>
+<td nowrap> 121,611</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 7</td>
+<td nowrap> 20,000</td>
+<td nowrap> 145,875</td>
+<td nowrap> 145,875</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 8</td>
+<td nowrap> 20,000</td>
+<td nowrap> 171,435</td>
+<td nowrap> 171,435</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 9</td>
+<td nowrap> 20,000</td>
+<td nowrap> 198,354</td>
+<td nowrap> 198,354</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 10</td>
+<td nowrap> 20,000</td>
+<td nowrap> 226,706</td>
+<td nowrap> 226,706</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 11</td>
+<td nowrap> 20,000</td>
+<td nowrap> 256,573</td>
+<td nowrap> 256,573</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 12</td>
+<td nowrap> 20,000</td>
+<td nowrap> 288,050</td>
+<td nowrap> 288,050</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 13</td>
+<td nowrap> 20,000</td>
+<td nowrap> 321,251</td>
+<td nowrap> 321,251</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 14</td>
+<td nowrap> 20,000</td>
+<td nowrap> 356,285</td>
+<td nowrap> 356,285</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 15</td>
+<td nowrap> 20,000</td>
+<td nowrap> 393,269</td>
+<td nowrap> 393,269</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 16</td>
+<td nowrap> 20,000</td>
+<td nowrap> 432,338</td>
+<td nowrap> 432,338</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 17</td>
+<td nowrap> 20,000</td>
+<td nowrap> 473,642</td>
+<td nowrap> 473,642</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 18</td>
+<td nowrap> 20,000</td>
+<td nowrap> 517,338</td>
+<td nowrap> 517,338</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 19</td>
+<td nowrap> 20,000</td>
+<td nowrap> 563,611</td>
+<td nowrap> 563,611</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 20</td>
+<td nowrap> 20,000</td>
+<td nowrap> 612,687</td>
+<td nowrap> 612,687</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 21</td>
+<td nowrap> 20,000</td>
+<td nowrap> 664,832</td>
+<td nowrap> 664,832</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 22</td>
+<td nowrap> 20,000</td>
+<td nowrap> 720,355</td>
+<td nowrap> 720,355</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 23</td>
+<td nowrap> 20,000</td>
+<td nowrap> 779,623</td>
+<td nowrap> 779,623</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 24</td>
+<td nowrap> 20,000</td>
+<td nowrap> 843,050</td>
+<td nowrap> 843,050</td>
+<td nowrap> 1,000,000</td>
+</tr>
+<tr align="right">
+<td nowrap> 25</td>
+<td nowrap> 20,000</td>
+<td nowrap> 910,689</td>
+<td nowrap> 910,689</td>
+<td nowrap> 1,056,399</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 26</td>
+<td nowrap> 20,000</td>
+<td nowrap> 982,108</td>
+<td nowrap> 982,108</td>
+<td nowrap> 1,129,425</td>
+</tr>
+<tr align="right">
+<td nowrap> 27</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,057,725</td>
+<td nowrap> 1,057,725</td>
+<td nowrap> 1,195,230</td>
+</tr>
+<tr align="right">
+<td nowrap> 28</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,137,850</td>
+<td nowrap> 1,137,850</td>
+<td nowrap> 1,263,014</td>
+</tr>
+<tr align="right">
+<td nowrap> 29</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,222,848</td>
+<td nowrap> 1,222,848</td>
+<td nowrap> 1,332,904</td>
+</tr>
+<tr align="right">
+<td nowrap> 30</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,313,153</td>
+<td nowrap> 1,313,153</td>
+<td nowrap> 1,405,073</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 31</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,409,281</td>
+<td nowrap> 1,409,281</td>
+<td nowrap> 1,479,745</td>
+</tr>
+<tr align="right">
+<td nowrap> 32</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,510,787</td>
+<td nowrap> 1,510,787</td>
+<td nowrap> 1,586,326</td>
+</tr>
+<tr align="right">
+<td nowrap> 33</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,617,939</td>
+<td nowrap> 1,617,939</td>
+<td nowrap> 1,698,836</td>
+</tr>
+<tr align="right">
+<td nowrap> 34</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,731,014</td>
+<td nowrap> 1,731,014</td>
+<td nowrap> 1,817,564</td>
+</tr>
+<tr align="right">
+<td nowrap> 35</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,850,286</td>
+<td nowrap> 1,850,286</td>
+<td nowrap> 1,942,801</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 36</td>
+<td nowrap> 20,000</td>
+<td nowrap> 1,976,028</td>
+<td nowrap> 1,976,028</td>
+<td nowrap> 2,074,829</td>
+</tr>
+<tr align="right">
+<td nowrap> 37</td>
+<td nowrap> 20,000</td>
+<td nowrap> 2,108,501</td>
+<td nowrap> 2,108,501</td>
+<td nowrap> 2,213,926</td>
+</tr>
+<tr align="right">
+<td nowrap> 38</td>
+<td nowrap> 20,000</td>
+<td nowrap> 2,247,954</td>
+<td nowrap> 2,247,954</td>
+<td nowrap> 2,360,352</td>
+</tr>
+<tr align="right">
+<td nowrap> 39</td>
+<td nowrap> 20,000</td>
+<td nowrap> 2,394,636</td>
+<td nowrap> 2,394,636</td>
+<td nowrap> 2,514,368</td>
+</tr>
+<tr align="right">
+<td nowrap> 40</td>
+<td nowrap> 20,000</td>
+<td nowrap> 2,548,799</td>
+<td nowrap> 2,548,799</td>
+<td nowrap> 2,676,239</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 41</td>
+<td nowrap> 20,000</td>
+<td nowrap> 2,710,712</td>
+<td nowrap> 2,710,712</td>
+<td nowrap> 2,846,248</td>
+</tr>
+<tr align="right">
+<td nowrap> 42</td>
+<td nowrap> 20,000</td>
+<td nowrap> 2,880,653</td>
+<td nowrap> 2,880,653</td>
+<td nowrap> 3,024,685</td>
+</tr>
+<tr align="right">
+<td nowrap> 43</td>
+<td nowrap> 20,000</td>
+<td nowrap> 3,058,912</td>
+<td nowrap> 3,058,912</td>
+<td nowrap> 3,211,857</td>
+</tr>
+<tr align="right">
+<td nowrap> 44</td>
+<td nowrap> 20,000</td>
+<td nowrap> 3,245,789</td>
+<td nowrap> 3,245,789</td>
+<td nowrap> 3,408,078</td>
+</tr>
+<tr align="right">
+<td nowrap> 45</td>
+<td nowrap> 20,000</td>
+<td nowrap> 3,441,564</td>
+<td nowrap> 3,441,564</td>
+<td nowrap> 3,613,642</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 46</td>
+<td nowrap> 20,000</td>
+<td nowrap> 3,646,494</td>
+<td nowrap> 3,646,494</td>
+<td nowrap> 3,828,819</td>
+</tr>
+<tr align="right">
+<td nowrap> 47</td>
+<td nowrap> 20,000</td>
+<td nowrap> 3,865,811</td>
+<td nowrap> 3,865,811</td>
+<td nowrap> 4,020,443</td>
+</tr>
+<tr align="right">
+<td nowrap> 48</td>
+<td nowrap> 20,000</td>
+<td nowrap> 4,101,336</td>
+<td nowrap> 4,101,336</td>
+<td nowrap> 4,224,376</td>
+</tr>
+<tr align="right">
+<td nowrap> 49</td>
+<td nowrap> 20,000</td>
+<td nowrap> 4,355,201</td>
+<td nowrap> 4,355,201</td>
+<td nowrap> 4,442,305</td>
+</tr>
+<tr align="right">
+<td nowrap> 50</td>
+<td nowrap> 20,000</td>
+<td nowrap> 4,630,053</td>
+<td nowrap> 4,630,053</td>
+<td nowrap> 4,676,354</td>
+</tr>
+<tr><td><br></td></tr>
+<tr align="right">
+<td nowrap> 51</td>
+<td nowrap> 20,000</td>
+<td nowrap> 4,927,299</td>
+<td nowrap> 4,927,299</td>
+<td nowrap> 4,927,299</td>
+</tr>
+<tr align="right">
+<td nowrap> 52</td>
+<td nowrap> 20,000</td>
+<td nowrap> 5,242,379</td>
+<td nowrap> 5,242,379</td>
+<td nowrap> 5,242,379</td>
+</tr>
+<tr align="right">
+<td nowrap> 53</td>
+<td nowrap> 20,000</td>
+<td nowrap> 5,576,363</td>
+<td nowrap> 5,576,363</td>
+<td nowrap> 5,576,363</td>
+</tr>
+<tr align="right">
+<td nowrap> 54</td>
+<td nowrap> 20,000</td>
+<td nowrap> 5,930,387</td>
+<td nowrap> 5,930,387</td>
+<td nowrap> 5,930,387</td>
+</tr>
+<tr align="right">
+<td nowrap> 55</td>
+<td nowrap> 20,000</td>
+<td nowrap> 6,305,653</td>
+<td nowrap> 6,305,653</td>
+<td nowrap> 6,305,653</td>
+</tr>
+</table>
+</body>
+</html>
diff --git a/sample.summary.tsv.touchstone b/sample.summary.tsv.touchstone
new file mode 100644
index 00000000..c50c7ebb
--- /dev/null
+++ b/sample.summary.tsv.touchstone
@@ -0,0 +1,73 @@
+
+
+FOR BROKER-DEALER USE ONLY. NOT TO BE SHARED WITH CLIENTS.
+
+Calculation summary for:
+Male, Nontobacco, age 45, CT jurisdiction
+Not a MEC
+
+23,839.99 guaranteed premium
+22,110.68 initial guideline level premium
+239,162.50 initial guideline single premium
+55,394.15 initial seven-pay premium
+55,394.15 initial target premium
+1,000,000 initial base specified amount
+0 initial term specified amount
+1,000,000 initial total specified amount
+
+Policy Year Net Outlay Curr Account Value Curr Net Cash Surr
Value Curr EOY Death Benefit
+1 20,000 17,696 17,696 1,000,000
+2 20,000 36,348 36,348 1,000,000
+3 20,000 56,009 56,009 1,000,000
+4 20,000 76,734 76,734 1,000,000
+5 20,000 98,583 98,583 1,000,000
+6 20,000 121,611 121,611 1,000,000
+7 20,000 145,875 145,875 1,000,000
+8 20,000 171,435 171,435 1,000,000
+9 20,000 198,354 198,354 1,000,000
+10 20,000 226,706 226,706 1,000,000
+11 20,000 256,573 256,573 1,000,000
+12 20,000 288,050 288,050 1,000,000
+13 20,000 321,251 321,251 1,000,000
+14 20,000 356,285 356,285 1,000,000
+15 20,000 393,269 393,269 1,000,000
+16 20,000 432,338 432,338 1,000,000
+17 20,000 473,642 473,642 1,000,000
+18 20,000 517,338 517,338 1,000,000
+19 20,000 563,611 563,611 1,000,000
+20 20,000 612,687 612,687 1,000,000
+21 20,000 664,832 664,832 1,000,000
+22 20,000 720,355 720,355 1,000,000
+23 20,000 779,623 779,623 1,000,000
+24 20,000 843,050 843,050 1,000,000
+25 20,000 910,689 910,689 1,056,399
+26 20,000 982,108 982,108 1,129,425
+27 20,000 1,057,725 1,057,725 1,195,230
+28 20,000 1,137,850 1,137,850 1,263,014
+29 20,000 1,222,848 1,222,848 1,332,904
+30 20,000 1,313,153 1,313,153 1,405,073
+31 20,000 1,409,281 1,409,281 1,479,745
+32 20,000 1,510,787 1,510,787 1,586,326
+33 20,000 1,617,939 1,617,939 1,698,836
+34 20,000 1,731,014 1,731,014 1,817,564
+35 20,000 1,850,286 1,850,286 1,942,801
+36 20,000 1,976,028 1,976,028 2,074,829
+37 20,000 2,108,501 2,108,501 2,213,926
+38 20,000 2,247,954 2,247,954 2,360,352
+39 20,000 2,394,636 2,394,636 2,514,368
+40 20,000 2,548,799 2,548,799 2,676,239
+41 20,000 2,710,712 2,710,712 2,846,248
+42 20,000 2,880,653 2,880,653 3,024,685
+43 20,000 3,058,912 3,058,912 3,211,857
+44 20,000 3,245,789 3,245,789 3,408,078
+45 20,000 3,441,564 3,441,564 3,613,642
+46 20,000 3,646,494 3,646,494 3,828,819
+47 20,000 3,865,811 3,865,811 4,020,443
+48 20,000 4,101,336 4,101,336 4,224,376
+49 20,000 4,355,201 4,355,201 4,442,305
+50 20,000 4,630,053 4,630,053 4,676,354
+51 20,000 4,927,299 4,927,299 4,927,299
+52 20,000 5,242,379 5,242,379 5,242,379
+53 20,000 5,576,363 5,576,363 5,576,363
+54 20,000 5,930,387 5,930,387 5,930,387
+55 20,000 6,305,653 6,305,653 6,305,653
diff --git a/sample.test0.touchstone b/sample.test0.touchstone
new file mode 100644
index 00000000..3f7a9624
--- /dev/null
+++ b/sample.test0.touchstone
@@ -0,0 +1,56 @@
+CashValu,SurrValu,DeathBen,IntEarned,MortCost,Load,MinPrem,SurrCost,PremAmt,IntRate
+17696,17696,1000000,1048,1691,0,1600,0,20000,600
+36348,36348,1000000,2106,1795,0,1600,0,20000,600
+56009,56009,1000000,3222,1901,0,1600,0,20000,600
+76734,76734,1000000,4398,2013,0,1600,0,20000,600
+98583,98583,1000000,5638,2129,0,1600,0,20000,600
+121611,121611,1000000,6944,2256,0,1600,0,20000,600
+145875,145875,1000000,8321,2397,0,1600,0,20000,600
+171435,171435,1000000,9772,2552,0,1600,0,20000,600
+198354,198354,1000000,11300,2722,0,1600,0,20000,600
+226706,226706,1000000,12910,2897,0,1600,0,20000,600
+256573,256573,1000000,14605,3078,0,1600,0,20000,600
+288050,288050,1000000,16391,3254,0,1600,0,20000,600
+321251,321251,1000000,18275,3414,0,1600,0,20000,600
+356285,356285,1000000,20262,3568,0,1600,0,20000,600
+393269,393269,1000000,22359,3714,0,1600,0,20000,600
+432338,432338,1000000,24574,3845,0,1600,0,20000,600
+473642,473642,1000000,26914,3950,0,1600,0,20000,600
+517338,517338,1000000,29390,4034,0,1600,0,20000,600
+563611,563611,1000000,32010,4076,0,1600,0,20000,600
+612687,612687,1000000,34787,4051,0,1600,0,20000,600
+664832,664832,1000000,37735,3931,0,1600,0,20000,600
+720355,720355,1000000,40871,3687,0,1600,0,20000,600
+779623,779623,1000000,44215,3288,0,1600,0,20000,600
+843050,843050,1000000,47789,2702,0,1600,0,20000,600
+910689,910689,1056399,51611,2312,0,1600,0,20000,600
+982108,982108,1129425,55661,2581,0,1600,0,20000,600
+1057725,1057725,1195230,59943,2666,0,1600,0,20000,600
+1137850,1137850,1263014,64480,2695,0,1600,0,20000,600
+1222848,1222848,1332904,69289,2632,0,1600,0,20000,600
+1313153,1313153,1405073,74395,2430,0,1600,0,20000,600
+1409281,1409281,1479745,79826,2038,0,1600,0,20000,600
+1510787,1510787,1586326,85582,2416,0,1600,0,20000,600
+1617939,1617939,1698836,91658,2846,0,1600,0,20000,600
+1731014,1731014,1817564,98072,3337,0,1600,0,20000,600
+1850286,1850286,1942801,104838,3905,0,1600,0,20000,600
+1976028,1976028,2074829,111973,4572,0,1600,0,20000,600
+2108501,2108501,2213926,119493,5360,0,1600,0,20000,600
+2247954,2247954,2360352,127411,6297,0,1600,0,20000,600
+2394636,2394636,2514368,135743,7401,0,1600,0,20000,600
+2548799,2548799,2676239,144503,8680,0,1600,0,20000,600
+2710712,2710712,2846248,153706,10133,0,1600,0,20000,600
+2880653,2880653,3024685,163369,11769,0,1600,0,20000,600
+3058912,3058912,3211857,173507,13588,0,1600,0,20000,600
+3245789,3245789,3408078,184138,15602,0,1600,0,20000,600
+3441564,3441564,3613642,195279,17844,0,1600,0,20000,600
+3646494,3646494,3828819,206946,20356,0,1600,0,20000,600
+3865811,3865811,4020443,219306,18329,0,1600,0,20000,600
+4101336,4101336,4224376,232560,15375,0,1600,0,20000,600
+4355201,4355201,4442305,246821,11296,0,1600,0,20000,600
+4630053,4630053,4676354,262232,5720,0,1600,0,20000,600
+4927299,4927299,4927299,278905,0,0,1600,0,20000,600
+5242379,5242379,5242379,296740,0,0,1600,0,20000,600
+5576363,5576363,5576363,315645,0,0,1600,0,20000,600
+5930387,5930387,5930387,335684,0,0,1600,0,20000,600
+6305653,6305653,6305653,356925,0,0,1600,0,20000,600
diff --git a/sample.test1.touchstone b/sample.test1.touchstone
new file mode 100644
index 00000000..6fa5100f
--- /dev/null
+++ b/sample.test1.touchstone
@@ -0,0 +1,56 @@
+CashValu,SurrValu,DeathBen,IntRate,IntEarned,MortCost,MiscFees,Load,MinPrem,SurrCost,PremAmt
+17696.50,17696.50,1000000.00,600.0000,1047.60,1691.10,0.00,1600.00,0,0.00,20000.00
+36347.89,36347.89,1000000.00,600.0000,2106.05,1794.66,0.00,1600.00,0,0.00,20000.00
+56008.95,56008.95,1000000.00,600.0000,3221.71,1900.65,0.00,1600.00,0,0.00,20000.00
+76734.20,76734.20,1000000.00,600.0000,4397.76,2012.51,0.00,1600.00,0,0.00,20000.00
+98583.07,98583.07,1000000.00,600.0000,5637.50,2128.63,0.00,1600.00,0,0.00,20000.00
+121611.07,121611.07,1000000.00,600.0000,6944.31,2256.31,0.00,1600.00,0,0.00,20000.00
+145875.30,145875.30,1000000.00,600.0000,8321.44,2397.21,0.00,1600.00,0,0.00,20000.00
+171435.25,171435.25,1000000.00,600.0000,9772.28,2552.33,0.00,1600.00,0,0.00,20000.00
+198353.65,198353.65,1000000.00,600.0000,11300.36,2721.96,0.00,1600.00,0,0.00,20000.00
+226705.97,226705.97,1000000.00,600.0000,12909.76,2897.44,0.00,1600.00,0,0.00,20000.00
+256573.05,256573.05,1000000.00,600.0000,14605.05,3077.97,0.00,1600.00,0,0.00,20000.00
+288050.08,288050.08,1000000.00,600.0000,16391.34,3254.31,0.00,1600.00,0,0.00,20000.00
+321250.82,321250.82,1000000.00,600.0000,18274.75,3414.01,0.00,1600.00,0,0.00,20000.00
+356284.59,356284.59,1000000.00,600.0000,20261.73,3567.96,0.00,1600.00,0,0.00,20000.00
+393269.47,393269.47,1000000.00,600.0000,22358.95,3714.07,0.00,1600.00,0,0.00,20000.00
+432338.40,432338.40,1000000.00,600.0000,24573.70,3844.77,0.00,1600.00,0,0.00,20000.00
+473642.26,473642.26,1000000.00,600.0000,26914.29,3950.43,0.00,1600.00,0,0.00,20000.00
+517337.51,517337.51,1000000.00,600.0000,29389.63,4034.38,0.00,1600.00,0,0.00,20000.00
+563611.17,563611.17,1000000.00,600.0000,32009.76,4076.10,0.00,1600.00,0,0.00,20000.00
+612687.37,612687.37,1000000.00,600.0000,34786.72,4050.52,0.00,1600.00,0,0.00,20000.00
+664831.57,664831.57,1000000.00,600.0000,37734.84,3930.64,0.00,1600.00,0,0.00,20000.00
+720355.46,720355.46,1000000.00,600.0000,40870.92,3687.03,0.00,1600.00,0,0.00,20000.00
+779622.65,779622.65,1000000.00,600.0000,44214.72,3287.53,0.00,1600.00,0,0.00,20000.00
+843049.52,843049.52,1000000.00,600.0000,47789.02,2702.15,0.00,1600.00,0,0.00,20000.00
+910688.81,910688.81,1056399.02,600.0000,51611.17,2311.88,0.00,1600.00,0,0.00,20000.00
+982108.44,982108.44,1129424.71,600.0000,55660.97,2581.34,0.00,1600.00,0,0.00,20000.00
+1057725.41,1057725.41,1195229.71,600.0000,59943.42,2666.45,0.00,1600.00,0,0.00,20000.00
+1137850.14,1137850.14,1263013.66,600.0000,64479.54,2694.81,0.00,1600.00,0,0.00,20000.00
+1222847.62,1222847.62,1332903.91,600.0000,69289.03,2631.55,0.00,1600.00,0,0.00,20000.00
+1313152.65,1313152.65,1405073.34,600.0000,74395.33,2430.30,0.00,1600.00,0,0.00,20000.00
+1409280.59,1409280.59,1479744.62,600.0000,79826.15,2038.21,0.00,1600.00,0,0.00,20000.00
+1510786.71,1510786.71,1586326.05,600.0000,85581.77,2415.65,0.00,1600.00,0,0.00,20000.00
+1617938.93,1617938.93,1698835.88,600.0000,91658.38,2846.16,0.00,1600.00,0,0.00,20000.00
+1731013.54,1731013.54,1817564.22,600.0000,98071.83,3337.22,0.00,1600.00,0,0.00,20000.00
+1850286.34,1850286.34,1942800.66,600.0000,104838.19,3905.39,0.00,1600.00,0,0.00,20000.00
+1976028.05,1976028.05,2074829.45,600.0000,111973.27,4571.56,0.00,1600.00,0,0.00,20000.00
+2108500.81,2108500.81,2213925.85,600.0000,119492.60,5359.84,0.00,1600.00,0,0.00,20000.00
+2247954.46,2247954.46,2360352.18,600.0000,127411.00,6297.35,0.00,1600.00,0,0.00,20000.00
+2394635.93,2394635.93,2514367.73,600.0000,135742.95,7401.48,0.00,1600.00,0,0.00,20000.00
+2548799.28,2548799.28,2676239.24,600.0000,144503.00,8679.65,0.00,1600.00,0,0.00,20000.00
+2710712.44,2710712.44,2846248.06,600.0000,153706.39,10133.23,0.00,1600.00,0,0.00,20000.00
+2880652.54,2880652.54,3024685.17,600.0000,163368.89,11768.79,0.00,1600.00,0,0.00,20000.00
+3058911.79,3058911.79,3211857.38,600.0000,173507.16,13587.91,0.00,1600.00,0,0.00,20000.00
+3245788.55,3245788.55,3408077.98,600.0000,184138.37,15601.61,0.00,1600.00,0,0.00,20000.00
+3441563.98,3441563.98,3613642.18,600.0000,195279.30,17843.87,0.00,1600.00,0,0.00,20000.00
+3646494.02,3646494.02,3828818.72,600.0000,206945.56,20355.52,0.00,1600.00,0,0.00,20000.00
+3865811.05,3865811.05,4020443.49,600.0000,219306.18,18329.15,0.00,1600.00,0,0.00,20000.00
+4101335.97,4101335.97,4224376.05,600.0000,232559.67,15374.75,0.00,1600.00,0,0.00,20000.00
+4355201.30,4355201.30,4442305.33,600.0000,246821.49,11296.16,0.00,1600.00,0,0.00,20000.00
+4630053.31,4630053.31,4676353.84,600.0000,262231.54,5719.53,0.00,1600.00,0,0.00,20000.00
+4927298.59,4927298.59,4927298.59,600.0000,278905.28,0.00,0.00,1600.00,0,0.00,20000.00
+5242378.58,5242378.58,5242378.58,600.0000,296739.99,0.00,0.00,1600.00,0,0.00,20000.00
+5576363.36,5576363.36,5576363.36,600.0000,315644.78,0.00,0.00,1600.00,0,0.00,20000.00
+5930387.21,5930387.21,5930387.21,600.0000,335683.85,0.00,0.00,1600.00,0,0.00,20000.00
+6305652.52,6305652.52,6305652.52,600.0000,356925.31,0.00,0.00,1600.00,0,0.00,20000.00
- [lmi-commits] [lmi] master updated (c50cc9b1 -> 09e00258), Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 8ea7412a 01/27: Allow "touchstone" files to contain '\t', Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 20297761 05/27: Add a new ledger emission option, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master d4083917 07/27: Test eleven farraginous files nychthemerally,
Greg Chicares <=
- [lmi-commits] [lmi] master d195c7af 10/27: Add a unit test for ledger_format(), Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 3064fee4 09/27: Add a helper function with a deliberately ugly name, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 37b663fe 11/27: Add an option to format cents as decimal dollars, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 550db6d9 15/27: Record speed measurements, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master a7d075cd 16/27: Document, suppress, or expunge unused formats, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master fdb47029 08/27: Fix dblize()ation in commented-out code, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 174198af 12/27: Reformat, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master dcbe9418 14/27: Change currency fields in ledger to integral cents, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master af0666c3 24/27: Distinguish two ledger formats, Greg Chicares, 2022/04/25
- [lmi-commits] [lmi] master 7b30e2d8 03/27: Filter unexpectedly small system-test discrepancies, Greg Chicares, 2022/04/25