diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..85e5d21 Binary files /dev/null and b/favicon.png differ diff --git a/fonts/fa-brands-400.woff2 b/fonts/fa-brands-400.woff2 new file mode 100644 index 0000000..acb13ec Binary files /dev/null and b/fonts/fa-brands-400.woff2 differ diff --git a/fonts/fa-duotone-900.woff2 b/fonts/fa-duotone-900.woff2 new file mode 100644 index 0000000..7e350a3 Binary files /dev/null and b/fonts/fa-duotone-900.woff2 differ diff --git a/fonts/fonts.css b/fonts/fonts.css new file mode 100644 index 0000000..a206631 --- /dev/null +++ b/fonts/fonts.css @@ -0,0 +1,142 @@ +:root { + --gsui-font: "Montserrat", sans-serif; + --gsui-font-title: "Oswald", var( --gsui-font ); + --gsui-font-monospace: "Inconsolata", "consolas", monospace; + --gsui-font-number: "Unica One", var( --gsui-font-monospace ); +} + +/* FontAwesome (regular/bold) */ +/* .......................................................................... */ + +@font-face { + font-family: "FontAwesome"; + font-style: normal; + font-weight: normal; + src: url( "/assets/fonts/fa-duotone-900.woff2" ); +} + +@font-face { + font-family: "FontAwesomeBrands"; + font-style: normal; + font-weight: normal; + src: url( "/assets/fonts/fa-brands-400.woff2" ); +} + +/* Oswald (regular) */ +/* .......................................................................... */ + +@font-face { /* latin */ + font-family: "Oswald"; + font-style: normal; + font-weight: normal; + src: local( "Oswald Regular" ), local( "Oswald-Regular" ), url( "/assets/fonts/oswald-400-latin.woff2" ) format( "woff2" ); + unicode-range: u+0000-00ff, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd; +} + +/* Unica One (regular) */ +/* .......................................................................... */ + +@font-face { /* latin */ + font-family: "Unica One"; + font-style: normal; + font-weight: normal; + src: local( "Unica One" ), local( "UnicaOne-Regular" ), url( "/assets/fonts/unica-one-400-latin.woff2" ) format( "woff2" ); + unicode-range: u+0000-00ff, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd; +} + +/* Inconsolata (regular) */ +/* .......................................................................... */ + +@font-face { /* latin */ + font-family: "Inconsolata"; + font-style: normal; + font-weight: normal; + src: local( "Inconsolata Regular" ), local( "Inconsolata-Regular" ), url( "/assets/fonts/inconsolata-400-latin.woff2" ) format( "woff2" ); + unicode-range: u+0000-00ff, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd; +} + +/* Montserrat (regular) */ +/* .......................................................................... */ + +@font-face { /* cyrillic-ext */ + font-family: "Montserrat"; + font-style: normal; + font-weight: normal; + src: local( "Montserrat Medium" ), local( "Montserrat-Medium" ), url( "/assets/fonts/montserrat-500-cyrillic-ext.woff2" ) format( "woff2" ); + unicode-range: u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f; +} + +@font-face { /* cyrillic */ + font-family: "Montserrat"; + font-style: normal; + font-weight: normal; + src: local( "Montserrat Medium" ), local( "Montserrat-Medium" ), url( "/assets/fonts/montserrat-500-cyrillic.woff2" ) format( "woff2" ); + unicode-range: u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116; +} + +@font-face { /* vietnamese */ + font-family: "Montserrat"; + font-style: normal; + font-weight: normal; + src: local( "Montserrat Medium" ), local( "Montserrat-Medium" ), url( "/assets/fonts/montserrat-500-vietnamese.woff2" ) format( "woff2" ); + unicode-range: u+0102-0103, u+0110-0111, u+1ea0-1ef9, u+20ab; +} + +@font-face { /* latin-ext */ + font-family: "Montserrat"; + font-style: normal; + font-weight: normal; + src: local( "Montserrat Medium" ), local( "Montserrat-Medium" ), url( "/assets/fonts/montserrat-500-latin-ext.woff2" ) format( "woff2" ); + unicode-range: u+0100-024f, u+0259, u+1e00-1eff, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff; +} + +@font-face { /* latin */ + font-family: "Montserrat"; + font-style: normal; + font-weight: normal; + src: local( "Montserrat Medium" ), local( "Montserrat-Medium" ), url( "/assets/fonts/montserrat-500-latin.woff2" ) format( "woff2" ); + unicode-range: u+0000-00ff, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd; +} + +/* Montserrat (bold) */ +/* .......................................................................... */ + +@font-face { /* cyrillic-ext */ + font-family: "Montserrat"; + font-style: normal; + font-weight: bold; + src: local( "Montserrat Bold" ), local( "Montserrat-Bold" ), url( "/assets/fonts/montserrat-700-cyrillic-ext.woff2" ) format( "woff2" ); + unicode-range: u+0460-052f, u+1c80-1c88, u+20b4, u+2de0-2dff, u+a640-a69f, u+fe2e-fe2f; +} + +@font-face { /* cyrillic */ + font-family: "Montserrat"; + font-style: normal; + font-weight: bold; + src: local( "Montserrat Bold" ), local( "Montserrat-Bold" ), url( "/assets/fonts/montserrat-700-cyrillic.woff2" ) format( "woff2" ); + unicode-range: u+0400-045f, u+0490-0491, u+04b0-04b1, u+2116; +} + +@font-face { /* vietnamese */ + font-family: "Montserrat"; + font-style: normal; + font-weight: bold; + src: local( "Montserrat Bold" ), local( "Montserrat-Bold" ), url( "/assets/fonts/montserrat-700-vietnamese.woff2" ) format( "woff2" ); + unicode-range: u+0102-0103, u+0110-0111, u+1ea0-1ef9, u+20ab; +} + +@font-face { /* latin-ext */ + font-family: "Montserrat"; + font-style: normal; + font-weight: bold; + src: local( "Montserrat Bold" ), local( "Montserrat-Bold" ), url( "/assets/fonts/montserrat-700-latin-ext.woff2" ) format( "woff2" ); + unicode-range: u+0100-024f, u+0259, u+1e00-1eff, u+2020, u+20a0-20ab, u+20ad-20cf, u+2113, u+2c60-2c7f, u+a720-a7ff; +} + +@font-face { /* latin */ + font-family: "Montserrat"; + font-style: normal; + font-weight: bold; + src: local( "Montserrat Bold" ), local( "Montserrat-Bold" ), url( "/assets/fonts/montserrat-700-latin.woff2" ) format( "woff2" ); + unicode-range: u+0000-00ff, u+0131, u+0152-0153, u+02bb-02bc, u+02c6, u+02da, u+02dc, u+2000-206f, u+2074, u+20ac, u+2122, u+2191, u+2193, u+2212, u+2215, u+feff, u+fffd; +} diff --git a/fonts/inconsolata-400-latin.woff2 b/fonts/inconsolata-400-latin.woff2 new file mode 100644 index 0000000..f71f010 Binary files /dev/null and b/fonts/inconsolata-400-latin.woff2 differ diff --git a/fonts/montserrat-500-cyrillic-ext.woff2 b/fonts/montserrat-500-cyrillic-ext.woff2 new file mode 100644 index 0000000..3e1b69e Binary files /dev/null and b/fonts/montserrat-500-cyrillic-ext.woff2 differ diff --git a/fonts/montserrat-500-cyrillic.woff2 b/fonts/montserrat-500-cyrillic.woff2 new file mode 100644 index 0000000..a9730bf Binary files /dev/null and b/fonts/montserrat-500-cyrillic.woff2 differ diff --git a/fonts/montserrat-500-latin-ext.woff2 b/fonts/montserrat-500-latin-ext.woff2 new file mode 100644 index 0000000..1681080 Binary files /dev/null and b/fonts/montserrat-500-latin-ext.woff2 differ diff --git a/fonts/montserrat-500-latin.woff2 b/fonts/montserrat-500-latin.woff2 new file mode 100644 index 0000000..056145d Binary files /dev/null and b/fonts/montserrat-500-latin.woff2 differ diff --git a/fonts/montserrat-500-vietnamese.woff2 b/fonts/montserrat-500-vietnamese.woff2 new file mode 100644 index 0000000..b2ba62e Binary files /dev/null and b/fonts/montserrat-500-vietnamese.woff2 differ diff --git a/fonts/montserrat-700-cyrillic-ext.woff2 b/fonts/montserrat-700-cyrillic-ext.woff2 new file mode 100644 index 0000000..5fa1a3d Binary files /dev/null and b/fonts/montserrat-700-cyrillic-ext.woff2 differ diff --git a/fonts/montserrat-700-cyrillic.woff2 b/fonts/montserrat-700-cyrillic.woff2 new file mode 100644 index 0000000..afaf480 Binary files /dev/null and b/fonts/montserrat-700-cyrillic.woff2 differ diff --git a/fonts/montserrat-700-latin-ext.woff2 b/fonts/montserrat-700-latin-ext.woff2 new file mode 100644 index 0000000..b67d206 Binary files /dev/null and b/fonts/montserrat-700-latin-ext.woff2 differ diff --git a/fonts/montserrat-700-latin.woff2 b/fonts/montserrat-700-latin.woff2 new file mode 100644 index 0000000..6f24e3b Binary files /dev/null and b/fonts/montserrat-700-latin.woff2 differ diff --git a/fonts/montserrat-700-vietnamese.woff2 b/fonts/montserrat-700-vietnamese.woff2 new file mode 100644 index 0000000..b9ca489 Binary files /dev/null and b/fonts/montserrat-700-vietnamese.woff2 differ diff --git a/fonts/oswald-400-latin.woff2 b/fonts/oswald-400-latin.woff2 new file mode 100644 index 0000000..a202bc3 Binary files /dev/null and b/fonts/oswald-400-latin.woff2 differ diff --git a/fonts/unica-one-400-latin.woff2 b/fonts/unica-one-400-latin.woff2 new file mode 100644 index 0000000..cb97702 Binary files /dev/null and b/fonts/unica-one-400-latin.woff2 differ diff --git a/gsuiLibrarySamples-v1.js b/gsuiLibrarySamples-v1.js new file mode 100644 index 0000000..48e7fa1 --- /dev/null +++ b/gsuiLibrarySamples-v1.js @@ -0,0 +1,167 @@ +"use strict"; + +const gsuiLibrarySamples = [ + "clap", + [ "clap-001", "0,4.99 1,0.52 2,0.02 3,0.73 4,0.32 5,0.38 6,0.36 7,0.34 8,0.22 9,1.18 10,2.06 11,2.89 12,2.89 13,3.42 14,3.66 15,4.27 16,4.01 17,4.04 18,4.54 19,4.33 20,4.29 21,4.07 22,4.29 23,4.29 24,4.32 25,4.36 26,4.44 27,4.46 28,4.45 29,4.47 30,4.46 31,4.47 32,4.46 33,4.48 34,4.48 35,4.49 36,4.49 37,4.48 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.52 35,5.51 34,5.51 33,5.52 32,5.52 31,5.52 30,5.53 29,5.53 28,5.55 27,5.54 26,5.56 25,5.63 24,5.67 23,5.69 22,5.80 21,5.84 20,5.62 19,5.56 18,5.68 17,6.16 16,6.02 15,5.83 14,5.98 13,6.37 12,7.07 11,8.64 10,8.14 9,8.14 8,9.13 7,9.69 6,9.75 5,10.05 4,9.34 3,10.33 2,9.62 1,9.73 0,4.99" ], + [ "clap-002", "0,5.00 1,0.20 2,0.20 3,0.40 4,1.37 5,3.20 6,3.66 7,4.50 8,4.18 9,4.34 10,4.31 11,4.39 12,4.41 13,4.41 14,4.44 15,4.43 16,4.40 17,4.43 18,4.44 19,4.44 20,4.45 21,4.45 22,4.45 23,4.47 24,4.45 25,4.47 26,4.46 27,4.46 28,4.47 29,4.47 30,4.47 31,4.48 32,4.48 33,4.47 34,4.49 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.51 34,5.51 33,5.52 32,5.52 31,5.52 30,5.53 29,5.53 28,5.54 27,5.53 26,5.54 25,5.54 24,5.53 23,5.54 22,5.55 21,5.55 20,5.55 19,5.56 18,5.56 17,5.57 16,5.58 15,5.58 14,5.57 13,5.59 12,5.58 11,5.59 10,5.63 9,5.68 8,5.80 7,5.61 6,5.71 5,7.28 4,8.48 3,9.73 2,9.93 1,9.96 0,4.99" ], + [ "clap-003", "0,5.01 1,0.86 2,1.57 3,2.35 4,0.69 5,0.00 6,2.26 7,2.80 8,0.68 9,2.38 10,3.19 11,1.14 12,1.00 13,2.52 14,2.89 15,2.97 16,3.53 17,3.76 18,3.80 19,3.97 20,4.22 21,4.25 22,4.34 23,4.13 24,3.94 25,4.16 26,4.11 27,4.22 28,4.25 29,4.28 30,4.39 31,4.37 32,4.37 33,4.38 34,4.43 35,4.46 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.52 35,5.54 34,5.57 33,5.57 32,5.61 31,5.64 30,5.69 29,5.74 28,5.76 27,5.75 26,5.88 25,5.78 24,5.90 23,5.93 22,5.48 21,5.73 20,5.97 19,5.92 18,6.06 17,6.24 16,6.59 15,7.33 14,7.84 13,7.86 12,7.40 11,7.48 10,6.94 9,7.63 8,8.34 7,7.27 6,7.85 5,8.73 4,9.88 3,7.92 2,8.93 1,9.96 0,5.01" ], + [ "clap-004", "0,5.13 1,1.11 2,0.38 3,1.58 4,2.14 5,0.12 6,0.45 7,0.88 8,0.17 9,0.69 10,1.63 11,1.81 12,1.07 13,1.09 14,2.80 15,3.10 16,3.40 17,3.52 18,2.19 19,3.52 20,4.24 21,4.51 22,4.57 23,4.03 24,4.25 25,4.27 26,4.33 27,4.38 28,4.37 29,4.40 30,4.41 31,4.44 32,4.44 33,4.44 34,4.46 35,4.45 36,4.44 37,4.46 38,4.47 39,4.49 39,5.51 38,5.52 37,5.53 36,5.54 35,5.56 34,5.55 33,5.57 32,5.57 31,5.55 30,5.60 29,5.60 28,5.65 27,5.60 26,5.61 25,5.81 24,5.68 23,5.77 22,5.62 21,5.53 20,5.83 19,6.59 18,7.48 17,6.56 16,6.88 15,6.96 14,7.48 13,8.27 12,8.35 11,8.14 10,8.45 9,9.03 8,9.67 7,8.74 6,9.00 5,9.57 4,8.56 3,7.74 2,9.90 1,9.95 0,5.11" ], + [ "clap-005", "0,5.00 1,0.85 2,1.48 3,0.13 4,2.11 5,2.84 6,3.94 7,4.29 8,4.40 9,4.38 10,4.36 11,4.33 12,4.34 13,4.34 14,4.31 15,4.36 16,4.39 17,4.40 18,4.41 19,4.42 20,4.42 21,4.44 22,4.45 23,4.47 24,4.46 25,4.45 26,4.47 27,4.47 28,4.48 29,4.47 30,4.47 31,4.47 32,4.48 33,4.48 34,4.48 35,4.48 36,4.48 37,4.48 38,4.48 39,4.49 39,5.51 38,5.51 37,5.52 36,5.52 35,5.52 34,5.52 33,5.52 32,5.53 31,5.52 30,5.54 29,5.53 28,5.53 27,5.53 26,5.53 25,5.54 24,5.55 23,5.54 22,5.55 21,5.55 20,5.57 19,5.58 18,5.59 17,5.59 16,5.60 15,5.68 14,5.70 13,5.66 12,5.65 11,5.64 10,5.64 9,5.66 8,5.65 7,5.70 6,6.02 5,7.79 4,8.72 3,7.95 2,8.94 1,8.37 0,5.00" ], + [ "clap-006", "0,5.00 1,1.25 2,1.00 3,1.79 4,2.13 5,2.55 6,3.34 7,3.29 8,2.78 9,2.87 10,3.30 11,3.47 12,3.19 13,3.92 14,3.48 15,3.93 16,3.98 17,4.57 18,4.08 19,4.17 20,4.20 21,4.27 22,4.25 23,4.22 24,4.31 25,4.36 26,4.36 27,4.37 28,4.34 29,4.39 30,4.41 31,4.42 32,4.43 33,4.43 34,4.44 35,4.46 36,4.46 37,4.46 38,4.47 39,4.48 39,5.52 38,5.53 37,5.54 36,5.53 35,5.54 34,5.55 33,5.56 32,5.57 31,5.57 30,5.58 29,5.61 28,5.64 27,5.62 26,5.63 25,5.61 24,5.71 23,5.77 22,5.77 21,5.72 20,5.80 19,5.83 18,5.87 17,5.63 16,6.34 15,5.86 14,6.03 13,6.16 12,6.90 11,6.88 10,7.44 9,6.95 8,7.00 7,7.01 6,6.81 5,7.83 4,8.15 3,9.01 2,8.54 1,8.37 0,5.00" ], + [ "clap-007", "0,4.96 1,1.27 2,2.10 3,1.79 4,1.66 5,0.89 6,0.81 7,2.45 8,3.65 9,4.45 10,4.13 11,4.15 12,4.04 13,4.02 14,4.15 15,4.07 16,4.10 17,4.21 18,4.14 19,4.10 20,4.17 21,4.17 22,4.21 23,4.31 24,4.30 25,4.32 26,4.32 27,4.32 28,4.36 29,4.36 30,4.39 31,4.34 32,4.42 33,4.41 34,4.40 35,4.38 36,4.42 37,4.43 38,4.43 39,4.44 39,5.59 38,5.55 37,5.58 36,5.57 35,5.59 34,5.60 33,5.61 32,5.58 31,5.68 30,5.63 29,5.62 28,5.66 27,5.68 26,5.68 25,5.66 24,5.67 23,5.72 22,5.78 21,5.81 20,5.79 19,5.76 18,5.86 17,5.96 16,5.93 15,5.84 14,5.85 13,5.89 12,5.91 11,5.80 10,5.91 9,5.58 8,6.22 7,7.75 6,7.76 5,9.26 4,8.71 3,8.21 2,8.08 1,8.77 0,5.00" ], + [ "clap-008", "0,5.00 1,1.40 2,1.99 3,1.34 4,3.12 5,4.43 6,4.42 7,4.43 8,4.05 9,4.11 10,4.13 11,4.25 12,4.18 13,4.28 14,4.27 15,4.33 16,4.35 17,4.32 18,4.38 19,4.37 20,4.42 21,4.42 22,4.43 23,4.46 24,4.46 25,4.47 26,4.47 27,4.47 28,4.48 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.49 35,4.50 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.51 33,5.51 32,5.51 31,5.51 30,5.51 29,5.52 28,5.52 27,5.52 26,5.53 25,5.53 24,5.54 23,5.55 22,5.57 21,5.57 20,5.58 19,5.59 18,5.61 17,5.61 16,5.65 15,5.70 14,5.73 13,5.78 12,5.78 11,5.77 10,5.81 9,6.00 8,5.91 7,5.56 6,5.61 5,5.49 4,7.01 3,7.29 2,8.99 1,10.05 0,4.98" ], + [ "clap-009", "0,5.02 1,3.49 2,-0.01 3,0.88 4,1.79 5,2.54 6,3.28 7,3.85 8,4.47 9,4.12 10,4.14 11,4.13 12,4.13 13,4.14 14,4.45 15,4.03 16,4.09 17,4.10 18,3.95 19,4.25 20,4.25 21,4.23 22,4.21 23,4.29 24,4.30 25,4.28 26,4.32 27,4.33 28,4.32 29,4.34 30,4.34 31,4.39 32,4.38 33,4.39 34,4.38 35,4.39 36,4.42 37,4.43 38,4.45 39,4.47 39,5.52 38,5.54 37,5.56 36,5.61 35,5.63 34,5.59 33,5.60 32,5.63 31,5.61 30,5.66 29,5.63 28,5.69 27,5.71 26,5.69 25,5.67 24,5.73 23,5.78 22,5.73 21,5.76 20,5.74 19,5.88 18,5.82 17,5.88 16,5.89 15,5.90 14,5.48 13,5.87 12,5.94 11,5.84 10,5.93 9,6.09 8,5.53 7,6.61 6,7.16 5,7.32 4,8.14 3,9.51 2,9.05 1,6.57 0,5.12" ], + [ "clap-010", "0,5.00 1,0.52 2,0.69 3,2.21 4,2.35 5,2.47 6,3.68 7,4.24 8,4.06 9,4.39 10,4.07 11,4.44 12,4.09 13,3.99 14,4.16 15,4.45 16,4.02 17,4.10 18,4.11 19,4.08 20,4.07 21,4.09 22,4.09 23,4.16 24,4.10 25,4.12 26,4.13 27,4.21 28,4.09 29,4.13 30,4.23 31,4.28 32,4.24 33,4.21 34,4.18 35,4.29 36,4.23 37,4.25 38,4.25 39,4.17 39,5.76 38,5.75 37,5.73 36,5.77 35,5.75 34,5.79 33,5.75 32,5.84 31,5.70 30,5.78 29,5.81 28,5.87 27,5.78 26,5.80 25,5.89 24,5.97 23,5.90 22,5.93 21,5.84 20,5.81 19,5.97 18,5.87 17,5.90 16,5.99 15,5.61 14,5.86 13,5.92 12,5.96 11,5.76 10,5.96 9,5.56 8,6.02 7,5.61 6,6.64 5,7.13 4,7.86 3,8.90 2,8.59 1,9.09 0,4.99" ], + [ "clap-011", "0,5.00 1,1.53 2,0.95 3,1.74 4,1.75 5,2.78 6,2.69 7,2.88 8,3.51 9,4.08 10,4.45 11,4.40 12,3.93 13,4.14 14,4.14 15,4.27 16,4.18 17,4.18 18,4.18 19,4.22 20,4.21 21,4.12 22,4.20 23,4.13 24,4.14 25,4.21 26,4.22 27,4.17 28,4.25 29,4.26 30,4.23 31,4.30 32,4.23 33,4.26 34,4.28 35,4.27 36,4.29 37,4.33 38,4.33 39,4.33 39,5.68 38,5.70 37,5.66 36,5.67 35,5.70 34,5.74 33,5.66 32,5.74 31,5.75 30,5.75 29,5.73 28,5.77 27,5.77 26,5.75 25,5.79 24,5.82 23,5.79 22,5.76 21,5.89 20,5.76 19,5.84 18,5.77 17,5.80 16,5.79 15,5.78 14,5.84 13,5.80 12,5.93 11,5.46 10,5.70 9,6.33 8,6.22 7,7.10 6,6.98 5,7.90 4,8.53 3,8.42 2,8.84 1,9.25 0,5.15" ], + [ "clap-012", "0,5.00 1,1.03 2,1.93 3,1.58 4,2.07 5,3.31 6,3.47 7,3.50 8,3.67 9,3.65 10,3.74 11,3.99 12,4.26 13,4.43 14,4.10 15,4.15 16,4.23 17,4.31 18,4.34 19,4.37 20,4.39 21,4.42 22,4.46 23,4.44 24,4.46 25,4.48 26,4.48 27,4.49 28,4.49 29,4.49 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.51 28,5.51 27,5.51 26,5.52 25,5.52 24,5.53 23,5.54 22,5.55 21,5.59 20,5.61 19,5.64 18,5.67 17,5.66 16,5.74 15,5.85 14,5.89 13,5.50 12,5.91 11,5.79 10,6.23 9,6.34 8,6.62 7,6.75 6,6.69 5,6.71 4,8.18 3,8.26 2,8.84 1,8.85 0,5.00" ], + [ "clap-013", "0,5.00 1,2.23 2,2.48 3,3.24 4,2.86 5,2.62 6,4.07 7,1.77 8,2.15 9,3.74 10,3.29 11,2.94 12,3.50 13,3.30 14,3.45 15,4.37 16,3.41 17,3.60 18,3.13 19,4.19 20,3.93 21,3.68 22,3.29 23,3.61 24,3.86 25,4.28 26,4.19 27,4.14 28,4.39 29,3.98 30,4.49 31,4.23 32,4.15 33,4.35 34,4.43 35,4.32 36,4.39 37,4.53 38,4.50 39,4.50 39,5.50 38,5.53 37,5.59 36,5.64 35,5.50 34,5.65 33,5.73 32,5.45 31,5.98 30,5.76 29,5.46 28,6.08 27,5.64 26,5.75 25,6.06 24,6.04 23,6.42 22,6.26 21,6.46 20,5.97 19,6.39 18,6.11 17,6.62 16,6.17 15,6.47 14,6.72 13,5.93 12,6.25 11,7.03 10,7.75 9,8.31 8,6.47 7,6.02 6,7.73 5,6.48 4,7.98 3,7.38 2,7.74 1,8.00 0,5.00" ], + "crash", + [ "crash-001", "0,5.00 1,2.03 2,1.12 3,1.57 4,1.48 5,1.88 6,2.15 7,1.80 8,2.86 9,0.80 10,2.98 11,3.10 12,2.57 13,3.22 14,3.65 15,3.23 16,3.64 17,3.44 18,3.68 19,3.90 20,3.65 21,4.05 22,4.03 23,4.26 24,4.18 25,4.33 26,4.33 27,4.24 28,4.37 29,4.44 30,4.55 31,4.09 32,4.07 33,4.21 34,4.26 35,4.37 36,4.41 37,4.45 38,4.48 39,4.49 39,5.52 38,5.54 37,5.55 36,5.59 35,5.67 34,5.71 33,5.82 32,5.98 31,5.98 30,5.57 29,5.64 28,5.57 27,5.65 26,5.64 25,5.60 24,5.97 23,5.82 22,5.78 21,6.04 20,5.71 19,6.07 18,6.69 17,6.07 16,6.67 15,6.58 14,6.66 13,6.74 12,6.81 11,7.37 10,7.49 9,7.34 8,8.74 7,7.77 6,8.68 5,7.82 4,7.28 3,8.89 2,10.18 1,8.85 0,5.00" ], + [ "crash-002", "0,8.80 1,0.33 2,1.88 3,1.42 4,2.03 5,2.13 6,3.11 7,2.65 8,2.81 9,2.40 10,3.10 11,3.14 12,3.60 13,3.24 14,3.52 15,3.57 16,3.78 17,3.82 18,4.22 19,4.10 20,4.43 21,4.17 22,4.44 23,4.39 24,4.05 25,4.16 26,4.13 27,4.25 28,4.33 29,4.31 30,4.38 31,4.39 32,4.42 33,4.45 34,4.46 35,4.46 36,4.47 37,4.48 38,4.49 39,4.49 39,5.51 38,5.51 37,5.52 36,5.52 35,5.54 34,5.54 33,5.58 32,5.59 31,5.63 30,5.63 29,5.66 28,5.70 27,5.72 26,5.85 25,5.95 24,5.85 23,5.52 22,5.58 21,5.57 20,5.78 19,5.81 18,6.02 17,6.14 16,6.39 15,6.22 14,6.33 13,6.69 12,6.31 11,6.63 10,7.52 9,6.74 8,8.14 7,7.46 6,7.32 5,7.71 4,7.83 3,7.80 2,8.41 1,8.80 0,0.33" ], + "cymbal", + [ "cymbal-001", "0,5.00 1,4.26 2,4.17 3,4.23 4,4.31 5,4.31 6,4.30 7,4.38 8,4.35 9,4.40 10,4.37 11,4.33 12,4.36 13,4.40 14,4.40 15,4.41 16,4.42 17,4.41 18,4.42 19,4.44 20,4.44 21,4.45 22,4.44 23,4.46 24,4.44 25,4.45 26,4.45 27,4.47 28,4.47 29,4.46 30,4.48 31,4.48 32,4.47 33,4.48 34,4.49 35,4.48 36,4.49 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.52 36,5.51 35,5.52 34,5.51 33,5.52 32,5.52 31,5.52 30,5.53 29,5.53 28,5.53 27,5.53 26,5.54 25,5.54 24,5.55 23,5.55 22,5.55 21,5.56 20,5.56 19,5.56 18,5.61 17,5.61 16,5.58 15,5.58 14,5.61 13,5.61 12,5.65 11,5.66 10,5.66 9,5.64 8,5.66 7,5.65 6,5.66 5,5.70 4,5.72 3,5.77 2,5.85 1,5.35 0,5.00" ], + [ "cymbal-002", "0,5.00 1,1.53 2,-0.44 3,2.71 4,2.89 5,3.32 6,3.44 7,3.37 8,3.62 9,3.53 10,3.69 11,3.98 12,3.48 13,3.65 14,3.95 15,4.28 16,4.42 17,4.29 18,4.00 19,4.10 20,4.03 21,4.12 22,4.12 23,4.17 24,4.29 25,4.25 26,4.28 27,4.35 28,4.36 29,4.35 30,4.41 31,4.43 32,4.45 33,4.44 34,4.47 35,4.48 36,4.48 37,4.49 38,4.49 39,4.50 39,5.50 38,5.51 37,5.51 36,5.52 35,5.52 34,5.53 33,5.57 32,5.55 31,5.61 30,5.58 29,5.62 28,5.65 27,5.70 26,5.72 25,5.72 24,5.77 23,5.78 22,5.80 21,5.86 20,5.96 19,5.92 18,6.00 17,5.70 16,5.64 15,5.66 14,5.84 13,5.90 12,5.92 11,6.32 10,6.67 9,6.59 8,6.33 7,6.67 6,6.79 5,7.43 4,8.16 3,9.42 2,9.57 1,9.33 0,5.00" ], + [ "cymbal-003", "0,5.00 1,1.13 2,2.16 3,1.70 4,2.56 5,1.11 6,1.28 7,2.01 8,2.43 9,2.74 10,2.55 11,3.08 12,3.41 13,3.57 14,3.49 15,4.04 16,3.78 17,3.66 18,4.02 19,3.70 20,4.18 21,4.11 22,4.42 23,4.45 24,4.41 25,4.44 26,4.12 27,4.09 28,4.26 29,4.28 30,4.32 31,4.34 32,4.39 33,4.42 34,4.44 35,4.46 36,4.48 37,4.48 38,4.49 39,4.50 39,5.50 38,5.51 37,5.52 36,5.53 35,5.55 34,5.55 33,5.61 32,5.60 31,5.68 30,5.75 29,5.67 28,5.89 27,5.79 26,5.84 25,5.48 24,5.43 23,5.69 22,5.75 21,5.80 20,5.66 19,6.19 18,6.24 17,6.13 16,6.66 15,6.73 14,7.33 13,6.84 12,6.29 11,7.06 10,7.03 9,7.32 8,7.86 7,7.42 6,7.23 5,8.08 4,8.41 3,8.41 2,8.17 1,8.13 0,5.00" ], + "hat", + [ "hat-001", "0,5.00 1,0.25 2,2.96 3,3.88 4,4.38 5,4.14 6,4.24 7,4.32 8,4.35 9,4.36 10,4.38 11,4.39 12,4.40 13,4.42 14,4.44 15,4.45 16,4.47 17,4.48 18,4.49 19,4.49 20,4.49 21,4.49 22,4.49 23,4.49 24,4.49 25,4.49 26,4.49 27,4.49 28,4.49 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.51 30,5.51 29,5.51 28,5.51 27,5.51 26,5.51 25,5.51 24,5.51 23,5.51 22,5.51 21,5.51 20,5.51 19,5.51 18,5.51 17,5.52 16,5.53 15,5.54 14,5.56 13,5.57 12,5.57 11,5.60 10,5.59 9,5.65 8,5.64 7,5.70 6,5.78 5,5.89 4,5.54 3,6.11 2,7.47 1,8.58 0,5.00" ], + [ "hat-002", "0,5.00 1,1.23 2,0.57 3,0.92 4,1.56 5,2.23 6,1.51 7,2.44 8,2.57 9,3.64 10,3.77 11,4.09 12,4.56 13,4.25 14,4.39 15,4.45 16,4.49 17,4.49 18,4.49 19,4.49 20,4.50 21,4.50 22,4.50 23,4.50 24,4.50 25,4.50 26,4.50 27,4.50 28,4.50 29,4.50 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.50 28,5.50 27,5.50 26,5.50 25,5.50 24,5.50 23,5.50 22,5.50 21,5.50 20,5.50 19,5.51 18,5.51 17,5.51 16,5.51 15,5.55 14,5.58 13,5.77 12,5.64 11,5.92 10,6.35 9,6.50 8,7.07 7,8.15 6,8.23 5,8.00 4,8.84 3,8.84 2,9.57 1,9.05 0,5.00" ], + [ "hat-003", "0,5.00 1,2.43 2,1.81 3,3.71 4,4.39 5,4.09 6,4.32 7,4.46 8,4.47 9,4.48 10,4.48 11,4.47 12,4.46 13,4.46 14,4.47 15,4.47 16,4.48 17,4.47 18,4.47 19,4.48 20,4.47 21,4.48 22,4.48 23,4.48 24,4.49 25,4.49 26,4.49 27,4.49 28,4.49 29,4.49 30,4.49 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.51 28,5.50 27,5.51 26,5.51 25,5.51 24,5.52 23,5.53 22,5.52 21,5.52 20,5.53 19,5.53 18,5.52 17,5.52 16,5.53 15,5.53 14,5.53 13,5.53 12,5.54 11,5.53 10,5.52 9,5.52 8,5.53 7,5.54 6,5.62 5,5.83 4,5.68 3,6.46 2,7.33 1,7.90 0,5.00" ], + [ "hat-004", "0,5.00 1,3.18 2,0.98 3,0.39 4,0.94 5,2.60 6,0.76 7,1.47 8,0.35 9,1.23 10,1.15 11,1.51 12,1.48 13,2.04 14,1.60 15,2.22 16,1.60 17,2.39 18,2.09 19,2.66 20,2.83 21,2.69 22,3.29 23,2.60 24,3.25 25,3.36 26,3.18 27,3.53 28,3.62 29,3.44 30,3.51 31,4.04 32,4.31 33,4.05 34,4.09 35,4.10 36,4.15 37,4.30 38,4.38 39,4.49 39,5.51 38,5.58 37,5.75 36,5.75 35,5.81 34,5.83 33,5.81 32,5.49 31,5.82 30,6.12 29,6.06 28,6.19 27,6.17 26,6.57 25,6.42 24,6.31 23,7.25 22,6.40 21,7.01 20,6.67 19,7.43 18,7.28 17,6.75 16,7.97 15,7.02 14,7.72 13,7.31 12,7.94 11,7.63 10,7.91 9,7.75 8,8.93 7,7.83 6,8.45 5,8.03 4,8.47 3,8.55 2,8.27 1,6.70 0,5.00" ], + [ "hat-005", "0,5.02 1,3.76 2,4.15 3,3.01 4,2.69 5,1.28 6,0.65 7,2.01 8,3.05 9,3.40 10,3.58 11,3.47 12,3.47 13,3.94 14,4.18 15,4.30 16,3.99 17,4.19 18,4.24 19,4.28 20,4.33 21,4.35 22,4.31 23,4.39 24,4.37 25,4.30 26,4.25 27,4.33 28,4.36 29,4.42 30,4.43 31,4.43 32,4.45 33,4.46 34,4.46 35,4.43 36,4.46 37,4.48 38,4.49 39,4.49 39,5.51 38,5.51 37,5.52 36,5.55 35,5.58 34,5.54 33,5.55 32,5.56 31,5.55 30,5.59 29,5.58 28,5.64 27,5.71 26,5.75 25,5.70 24,5.66 23,5.64 22,5.71 21,5.68 20,5.65 19,5.68 18,5.69 17,5.82 16,5.98 15,5.74 14,5.83 13,6.09 12,5.88 11,6.08 10,6.88 9,6.79 8,7.17 7,9.30 6,9.31 5,8.66 4,6.78 3,6.52 2,5.98 1,6.10 0,5.02" ], + [ "hat-006", "0,4.97 1,0.17 2,1.70 3,3.41 4,1.84 5,2.31 6,1.55 7,2.78 8,3.09 9,3.69 10,4.24 11,4.03 12,4.09 13,4.05 14,4.02 15,4.01 16,4.44 17,4.15 18,4.24 19,4.34 20,4.38 21,4.44 22,4.38 23,4.38 24,4.36 25,4.39 26,4.41 27,4.44 28,4.45 29,4.48 30,4.48 31,4.46 32,4.44 33,4.46 34,4.46 35,4.46 36,4.48 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.52 35,5.55 34,5.53 33,5.55 32,5.55 31,5.55 30,5.53 29,5.52 28,5.53 27,5.57 26,5.62 25,5.61 24,5.62 23,5.64 22,5.61 21,5.58 20,5.60 19,5.65 18,5.76 17,5.86 16,5.51 15,5.92 14,5.96 13,5.92 12,5.90 11,5.95 10,6.01 9,6.25 8,6.90 7,7.31 6,8.18 5,8.09 4,8.21 3,6.55 2,8.72 1,9.77 0,4.99" ], + [ "hat-007", "0,5.00 1,0.97 2,0.23 3,2.13 4,2.22 5,2.53 6,2.80 7,1.63 8,2.95 9,2.55 10,2.61 11,3.03 12,3.59 13,3.72 14,3.85 15,4.04 16,4.00 17,4.28 18,4.15 19,4.14 20,4.20 21,4.13 22,4.23 23,4.33 24,4.32 25,4.35 26,4.38 27,4.40 28,4.44 29,4.44 30,4.45 31,4.44 32,4.46 33,4.47 34,4.47 35,4.47 36,4.47 37,4.47 38,4.48 39,4.49 39,5.51 38,5.52 37,5.53 36,5.53 35,5.53 34,5.54 33,5.53 32,5.53 31,5.56 30,5.55 29,5.56 28,5.56 27,5.59 26,5.63 25,5.63 24,5.66 23,5.68 22,5.76 21,5.86 20,5.82 19,5.88 18,5.89 17,5.74 16,5.89 15,5.85 14,6.24 13,6.31 12,6.42 11,6.69 10,7.67 9,7.36 8,7.31 7,7.94 6,7.71 5,7.44 4,7.76 3,8.88 2,9.40 1,9.58 0,5.00" ], + [ "hat-008", "0,5.00 1,4.29 2,2.62 3,2.63 4,3.65 5,3.04 6,3.23 7,4.15 8,4.43 9,4.45 10,4.09 11,4.02 12,4.20 13,4.21 14,4.22 15,4.24 16,4.28 17,4.31 18,4.29 19,4.36 20,4.37 21,4.43 22,4.47 23,4.47 24,4.48 25,4.48 26,4.48 27,4.48 28,4.49 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.49 32,5.49 31,5.49 30,5.50 29,5.50 28,5.50 27,5.51 26,5.52 25,5.53 24,5.54 23,5.55 22,5.55 21,5.58 20,5.61 19,5.65 18,5.69 17,5.72 16,5.72 15,5.72 14,5.72 13,5.82 12,5.82 11,5.91 10,5.91 9,5.51 8,5.65 7,5.97 6,6.56 5,6.74 4,6.97 3,6.87 2,7.15 1,5.50 0,5.00" ], + [ "hat-009", "0,5.00 1,1.58 2,0.83 3,0.83 4,0.63 5,1.85 6,1.81 7,0.96 8,1.75 9,2.93 10,2.89 11,3.09 12,3.61 13,2.31 14,2.72 15,3.77 16,4.07 17,3.94 18,4.10 19,4.07 20,4.14 21,4.25 22,4.16 23,4.26 24,4.36 25,4.35 26,4.40 27,4.43 28,4.46 29,4.45 30,4.44 31,4.45 32,4.45 33,4.45 34,4.45 35,4.44 36,4.46 37,4.46 38,4.44 39,4.48 39,5.52 38,5.54 37,5.55 36,5.54 35,5.53 34,5.55 33,5.55 32,5.53 31,5.54 30,5.55 29,5.55 28,5.54 27,5.58 26,5.63 25,5.60 24,5.68 23,5.84 22,5.86 21,5.75 20,5.80 19,6.02 18,5.76 17,6.06 16,5.97 15,5.91 14,6.58 13,8.13 12,6.51 11,6.45 10,6.94 9,7.07 8,8.40 7,8.17 6,9.54 5,8.40 4,9.81 3,8.83 2,6.74 1,8.50 0,5.03" ], + [ "hat-010", "0,5.51 1,0.70 2,1.16 3,1.32 4,1.27 5,1.76 6,1.53 7,2.68 8,2.41 9,3.17 10,3.26 11,3.42 12,3.91 13,3.94 14,4.25 15,4.08 16,4.12 17,4.36 18,3.96 19,4.46 20,4.06 21,4.21 22,4.16 23,4.28 24,4.32 25,4.34 26,4.34 27,4.38 28,4.35 29,4.32 30,4.37 31,4.38 32,4.42 33,4.35 34,4.37 35,4.41 36,4.43 37,4.45 38,4.48 39,4.48 39,5.52 38,5.53 37,5.55 36,5.60 35,5.59 34,5.66 33,5.65 32,5.61 31,5.64 30,5.68 29,5.65 28,5.68 27,5.66 26,5.68 25,5.67 24,5.68 23,5.74 22,5.90 21,5.93 20,5.94 19,5.58 18,5.95 17,5.78 16,5.68 15,6.04 14,5.89 13,6.03 12,5.98 11,6.27 10,6.70 9,7.36 8,6.96 7,7.36 6,8.38 5,7.69 4,9.07 3,9.78 2,9.26 1,8.67 0,5.82" ], + [ "hat-011", "0,5.00 1,0.93 2,2.70 3,3.14 4,3.10 5,3.49 6,4.09 7,4.45 8,4.55 9,4.13 10,4.08 11,4.25 12,4.42 13,4.45 14,4.47 15,4.48 16,4.47 17,4.48 18,4.48 19,4.48 20,4.48 21,4.47 22,4.47 23,4.48 24,4.47 25,4.47 26,4.47 27,4.47 28,4.48 29,4.49 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.52 29,5.52 28,5.53 27,5.52 26,5.53 25,5.54 24,5.53 23,5.53 22,5.55 21,5.53 20,5.52 19,5.52 18,5.52 17,5.53 16,5.53 15,5.52 14,5.53 13,5.55 12,5.61 11,5.82 10,6.02 9,6.05 8,5.68 7,5.86 6,6.25 5,6.88 4,7.09 3,7.35 2,8.46 1,10.10 0,5.00" ], + [ "hat-012", "0,5.00 1,1.49 2,1.30 3,2.00 4,3.19 5,3.72 6,4.05 7,4.28 8,4.05 9,4.13 10,4.23 11,4.21 12,4.30 13,4.17 14,4.28 15,4.17 16,4.24 17,4.25 18,4.18 19,4.26 20,4.32 21,4.34 22,4.36 23,4.40 24,4.40 25,4.42 26,4.44 27,4.44 28,4.43 29,4.44 30,4.45 31,4.45 32,4.46 33,4.46 34,4.45 35,4.45 36,4.45 37,4.47 38,4.46 39,4.46 39,5.53 38,5.54 37,5.54 36,5.56 35,5.55 34,5.55 33,5.55 32,5.55 31,5.54 30,5.55 29,5.56 28,5.57 27,5.56 26,5.57 25,5.58 24,5.61 23,5.60 22,5.62 21,5.66 20,5.67 19,5.75 18,5.80 17,5.74 16,5.78 15,5.79 14,5.72 13,5.85 12,5.73 11,5.82 10,5.77 9,5.89 8,5.89 7,5.58 6,5.95 5,6.14 4,6.67 3,7.62 2,8.52 1,8.40 0,5.00" ], + [ "hat-013", "0,5.00 1,1.54 2,1.48 3,-0.04 4,1.58 5,0.44 6,1.96 7,2.46 8,2.89 9,3.00 10,3.00 11,3.05 12,3.41 13,2.88 14,3.78 15,3.67 16,3.88 17,4.15 18,4.43 19,4.43 20,4.49 21,3.93 22,4.15 23,4.22 24,4.33 25,4.30 26,4.23 27,4.29 28,4.33 29,4.36 30,4.39 31,4.40 32,4.39 33,4.43 34,4.39 35,4.43 36,4.43 37,4.44 38,4.43 39,4.47 39,5.52 38,5.57 37,5.55 36,5.56 35,5.57 34,5.59 33,5.58 32,5.60 31,5.61 30,5.59 29,5.61 28,5.72 27,5.71 26,5.80 25,5.67 24,5.71 23,5.80 22,5.89 21,5.93 20,5.51 19,5.45 18,5.53 17,5.68 16,5.67 15,6.06 14,6.38 13,6.66 12,6.55 11,6.88 10,7.01 9,6.88 8,7.07 7,7.24 6,7.46 5,8.75 4,7.75 3,8.89 2,7.81 1,7.78 0,5.00" ], + [ "hat-014", "0,5.00 1,2.11 2,0.94 3,1.64 4,1.92 5,2.42 6,2.05 7,2.38 8,3.25 9,3.19 10,3.66 11,3.93 12,4.01 13,4.15 14,4.29 15,4.08 16,4.02 17,4.19 18,4.20 19,4.19 20,4.15 21,4.22 22,4.31 23,4.29 24,4.36 25,4.37 26,4.39 27,4.44 28,4.44 29,4.42 30,4.44 31,4.41 32,4.41 33,4.40 34,4.42 35,4.42 36,4.40 37,4.41 38,4.37 39,4.45 39,5.54 38,5.63 37,5.60 36,5.63 35,5.61 34,5.60 33,5.63 32,5.60 31,5.59 30,5.59 29,5.56 28,5.58 27,5.57 26,5.63 25,5.62 24,5.65 23,5.73 22,5.74 21,5.76 20,5.82 19,5.82 18,5.87 17,5.81 16,5.84 15,6.06 14,5.78 13,5.99 12,6.22 11,6.48 10,6.63 9,7.04 8,7.39 7,7.81 6,7.79 5,7.37 4,8.37 3,9.72 2,8.62 1,8.25 0,5.00" ], + [ "hat-015", "0,5.00 1,4.04 2,1.61 3,0.84 4,1.89 5,2.96 6,3.73 7,3.97 8,4.49 9,4.29 10,4.38 11,4.39 12,4.40 13,4.41 14,4.42 15,4.42 16,4.42 17,4.41 18,4.40 19,4.44 20,4.44 21,4.44 22,4.45 23,4.47 24,4.46 25,4.47 26,4.46 27,4.47 28,4.47 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.52 32,5.51 31,5.52 30,5.52 29,5.52 28,5.52 27,5.53 26,5.52 25,5.53 24,5.53 23,5.53 22,5.55 21,5.54 20,5.57 19,5.56 18,5.58 17,5.59 16,5.60 15,5.58 14,5.59 13,5.60 12,5.61 11,5.63 10,5.66 9,5.71 8,5.54 7,5.88 6,6.51 5,7.21 4,7.86 3,9.39 2,9.54 1,6.03 0,5.00" ], + [ "hat-016", "0,4.96 1,2.26 2,0.58 3,0.62 4,0.23 5,2.16 6,2.16 7,2.39 8,2.37 9,2.83 10,3.35 11,3.33 12,3.58 13,3.71 14,3.32 15,3.58 16,3.81 17,3.84 18,3.95 19,3.60 20,3.95 21,4.32 22,4.40 23,4.41 24,4.28 25,4.49 26,4.41 27,4.05 28,3.98 29,4.12 30,4.04 31,4.12 32,4.23 33,4.32 34,4.27 35,4.32 36,4.43 37,4.44 38,4.47 39,4.48 39,5.51 38,5.54 37,5.56 36,5.56 35,5.63 34,5.65 33,5.72 32,5.74 31,5.87 30,5.86 29,5.87 28,5.97 27,5.88 26,5.62 25,5.71 24,5.63 23,5.68 22,5.61 21,5.56 20,5.90 19,6.23 18,6.00 17,6.28 16,6.43 15,6.48 14,6.75 13,6.22 12,6.78 11,6.71 10,7.27 9,6.90 8,8.03 7,7.30 6,8.15 5,7.72 4,8.61 3,8.97 2,10.17 1,6.31 0,4.93" ], + [ "hat-017", "0,7.09 1,0.04 2,1.49 3,2.54 4,2.95 5,4.07 6,3.82 7,4.29 8,4.39 9,4.10 10,4.21 11,4.29 12,4.28 13,4.37 14,4.35 15,4.35 16,4.33 17,4.33 18,4.38 19,4.38 20,4.41 21,4.43 22,4.44 23,4.45 24,4.46 25,4.46 26,4.47 27,4.47 28,4.47 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.50 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.52 29,5.52 28,5.53 27,5.53 26,5.53 25,5.55 24,5.54 23,5.55 22,5.57 21,5.57 20,5.59 19,5.62 18,5.65 17,5.67 16,5.65 15,5.71 14,5.63 13,5.63 12,5.71 11,5.72 10,5.82 9,5.86 8,5.53 7,5.72 6,5.85 5,6.18 4,7.12 3,7.70 2,8.09 1,9.05 0,6.74" ], + [ "hat-018", "0,4.99 1,1.30 2,3.04 3,3.62 4,3.42 5,3.74 6,3.95 7,4.26 8,4.16 9,4.11 10,4.29 11,4.37 12,4.31 13,4.40 14,4.39 15,4.42 16,4.42 17,4.44 18,4.40 19,4.42 20,4.43 21,4.43 22,4.43 23,4.43 24,4.44 25,4.41 26,4.45 27,4.45 28,4.46 29,4.46 30,4.47 31,4.48 32,4.47 33,4.47 34,4.47 35,4.48 36,4.48 37,4.49 38,4.48 39,4.49 39,5.51 38,5.52 37,5.52 36,5.52 35,5.52 34,5.53 33,5.53 32,5.53 31,5.53 30,5.53 29,5.53 28,5.55 27,5.55 26,5.55 25,5.55 24,5.55 23,5.59 22,5.56 21,5.56 20,5.57 19,5.57 18,5.58 17,5.55 16,5.57 15,5.60 14,5.61 13,5.58 12,5.62 11,5.68 10,5.72 9,5.87 8,5.80 7,5.77 6,6.06 5,6.29 4,6.32 3,6.60 2,7.23 1,9.67 0,4.99" ], + [ "hat-019", "0,4.96 1,0.68 2,2.72 3,3.58 4,3.54 5,3.50 6,3.64 7,3.42 8,4.25 9,4.11 10,4.45 11,4.05 12,4.09 13,4.23 14,4.25 15,4.25 16,4.39 17,4.39 18,4.41 19,4.42 20,4.44 21,4.43 22,4.45 23,4.44 24,4.46 25,4.45 26,4.46 27,4.46 28,4.45 29,4.44 30,4.42 31,4.45 32,4.45 33,4.44 34,4.45 35,4.47 36,4.47 37,4.46 38,4.46 39,4.47 39,5.52 38,5.54 37,5.53 36,5.54 35,5.55 34,5.55 33,5.56 32,5.56 31,5.56 30,5.58 29,5.58 28,5.54 27,5.54 26,5.55 25,5.54 24,5.55 23,5.55 22,5.55 21,5.57 20,5.57 19,5.58 18,5.58 17,5.60 16,5.63 15,5.69 14,5.79 13,5.75 12,5.87 11,5.95 10,5.62 9,5.86 8,5.82 7,6.25 6,6.41 5,6.67 4,6.23 3,6.76 2,7.07 1,10.00 0,4.97" ], + [ "hat-020", "0,5.02 1,0.10 2,1.82 3,2.72 4,2.91 5,2.47 6,2.83 7,2.37 8,2.19 9,2.69 10,3.24 11,3.14 12,3.50 13,3.55 14,3.53 15,3.63 16,4.02 17,4.18 18,4.09 19,4.21 20,4.38 21,4.24 22,4.42 23,4.15 24,4.18 25,4.12 26,4.19 27,4.30 28,4.37 29,4.39 30,4.42 31,4.42 32,4.43 33,4.42 34,4.43 35,4.44 36,4.42 37,4.44 38,4.43 39,4.46 39,5.53 38,5.55 37,5.58 36,5.57 35,5.56 34,5.57 33,5.56 32,5.56 31,5.57 30,5.57 29,5.62 28,5.62 27,5.73 26,5.75 25,5.81 24,5.82 23,5.92 22,5.50 21,5.64 20,5.71 19,5.81 18,6.01 17,5.84 16,6.10 15,6.57 14,6.41 13,6.35 12,6.61 11,6.64 10,6.78 9,7.23 8,7.32 7,7.32 6,7.14 5,7.20 4,7.60 3,7.78 2,8.59 1,8.73 0,5.06" ], + [ "hat-021", "0,5.00 1,2.44 2,3.65 3,4.13 4,4.56 5,4.16 6,4.32 7,4.41 8,4.40 9,4.41 10,4.41 11,4.40 12,4.40 13,4.44 14,4.44 15,4.44 16,4.43 17,4.45 18,4.47 19,4.46 20,4.47 21,4.47 22,4.47 23,4.47 24,4.47 25,4.48 26,4.48 27,4.48 28,4.49 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.49 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.51 35,5.51 34,5.51 33,5.51 32,5.52 31,5.51 30,5.51 29,5.52 28,5.51 27,5.52 26,5.52 25,5.52 24,5.52 23,5.52 22,5.53 21,5.53 20,5.53 19,5.55 18,5.55 17,5.55 16,5.57 15,5.57 14,5.56 13,5.55 12,5.57 11,5.63 10,5.59 9,5.60 8,5.57 7,5.59 6,5.77 5,5.85 4,5.91 3,6.16 2,6.90 1,8.78 0,5.00" ], + [ "hat-022", "0,5.00 1,3.10 2,3.04 3,1.66 4,2.51 5,1.88 6,2.44 7,3.02 8,2.76 9,3.40 10,3.24 11,3.43 12,3.31 13,3.56 14,3.78 15,3.94 16,4.02 17,4.10 18,3.92 19,4.15 20,4.04 21,4.52 22,4.53 23,4.47 24,4.07 25,4.07 26,4.63 27,4.58 28,4.09 29,4.28 30,4.22 31,4.30 32,4.32 33,4.28 34,4.28 35,4.33 36,4.34 37,4.36 38,4.36 39,4.38 39,5.60 38,5.62 37,5.71 36,5.70 35,5.74 34,5.70 33,5.75 32,5.77 31,5.76 30,5.84 29,5.84 28,5.83 27,5.68 26,5.63 25,6.06 24,6.05 23,5.93 22,5.83 21,5.52 20,5.98 19,5.92 18,6.00 17,6.19 16,6.22 15,6.39 14,7.14 13,6.68 12,7.14 11,6.93 10,6.81 9,7.55 8,7.76 7,7.71 6,8.35 5,9.53 4,9.58 3,9.05 2,9.02 1,7.33 0,5.00" ], + [ "hat-023", "0,5.00 1,2.46 2,4.02 3,3.83 4,3.85 5,4.26 6,4.23 7,4.41 8,4.42 9,4.32 10,4.04 11,4.62 12,4.19 13,4.10 14,4.19 15,4.24 16,4.27 17,4.32 18,4.36 19,4.40 20,4.39 21,4.43 22,4.42 23,4.45 24,4.44 25,4.46 26,4.47 27,4.48 28,4.48 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.51 29,5.52 28,5.52 27,5.53 26,5.52 25,5.56 24,5.56 23,5.56 22,5.57 21,5.60 20,5.61 19,5.64 18,5.61 17,5.64 16,5.67 15,5.71 14,5.77 13,5.89 12,6.00 11,5.71 10,6.00 9,5.66 8,5.63 7,5.77 6,5.74 5,5.64 4,6.12 3,6.07 2,6.41 1,6.04 0,5.00" ], + [ "hat-024", "0,5.00 1,1.99 2,3.68 3,3.22 4,3.79 5,4.16 6,4.14 7,4.06 8,4.22 9,4.37 10,4.39 11,4.29 12,4.35 13,4.47 14,4.28 15,4.25 16,4.29 17,4.17 18,4.39 19,4.42 20,4.22 21,4.34 22,4.45 23,4.43 24,4.40 25,4.38 26,4.50 27,4.34 28,4.36 29,4.52 30,4.43 31,4.46 32,4.50 33,4.48 34,4.47 35,4.49 36,4.48 37,4.49 38,4.50 39,4.50 39,5.51 38,5.50 37,5.51 36,5.50 35,5.52 34,5.52 33,5.51 32,5.53 31,5.53 30,5.54 29,5.59 28,5.56 27,5.52 26,5.66 25,5.62 24,5.52 23,5.60 22,5.60 21,5.55 20,5.51 19,5.80 18,5.79 17,5.45 16,5.74 15,5.74 14,5.51 13,5.68 12,5.64 11,5.57 10,5.68 9,5.72 8,5.72 7,6.01 6,5.98 5,5.65 4,6.16 3,6.36 2,6.61 1,7.31 0,5.00" ], + [ "hat-025", "0,5.01 1,4.50 2,1.22 3,2.38 4,2.14 5,3.59 6,1.97 7,2.65 8,2.92 9,2.76 10,2.00 11,3.10 12,3.28 13,1.75 14,2.46 15,2.77 16,2.92 17,2.89 18,3.23 19,3.40 20,3.41 21,2.57 22,3.63 23,2.78 24,2.97 25,3.14 26,3.64 27,3.38 28,3.88 29,4.07 30,4.30 31,4.34 32,4.33 33,4.47 34,4.09 35,4.28 36,4.34 37,4.39 38,4.46 39,4.47 39,5.52 38,5.55 37,5.64 36,5.70 35,5.72 34,5.85 33,5.70 32,5.68 31,5.89 30,5.65 29,6.04 28,5.90 27,6.45 26,6.41 25,6.97 24,7.01 23,7.16 22,6.22 21,7.35 20,6.58 19,6.47 18,6.69 17,6.97 16,6.87 15,7.10 14,7.52 13,7.83 12,6.79 11,7.03 10,7.92 9,7.04 8,7.41 7,7.39 6,7.50 5,6.79 4,7.63 3,7.45 2,8.52 1,5.52 0,5.01" ], + [ "hat-026", "0,4.98 1,-0.08 2,1.31 3,2.75 4,3.31 5,3.11 6,3.85 7,4.21 8,4.30 9,4.07 10,3.99 11,4.42 12,4.11 13,4.10 14,4.21 15,4.25 16,4.33 17,4.26 18,4.31 19,4.32 20,4.36 21,4.40 22,4.44 23,4.38 24,4.38 25,4.40 26,4.40 27,4.43 28,4.46 29,4.44 30,4.41 31,4.43 32,4.44 33,4.45 34,4.47 35,4.47 36,4.46 37,4.47 38,4.46 39,4.48 39,5.52 38,5.54 37,5.54 36,5.53 35,5.52 34,5.53 33,5.55 32,5.56 31,5.58 30,5.56 29,5.58 28,5.54 27,5.56 26,5.61 25,5.61 24,5.63 23,5.61 22,5.57 21,5.58 20,5.66 19,5.67 18,5.66 17,5.75 16,5.67 15,5.72 14,5.79 13,5.86 12,5.85 11,5.47 10,5.94 9,5.91 8,5.78 7,5.85 6,6.32 5,6.69 4,6.59 3,7.40 2,8.82 1,9.53 0,4.99" ], + "kick", + [ "kick-001", "0,5.00 1,4.40 2,2.45 3,2.35 4,2.05 5,3.21 6,3.28 7,2.80 8,2.30 9,2.68 10,2.06 11,2.12 12,2.13 13,2.09 14,2.50 15,2.37 16,2.86 17,2.60 18,3.34 19,2.79 20,4.20 21,3.21 22,4.67 23,3.55 24,4.34 25,4.18 26,4.39 27,4.45 28,4.45 29,4.45 30,4.46 31,4.48 32,4.47 33,4.49 34,4.49 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.52 29,5.52 28,5.54 27,5.57 26,5.59 25,5.77 24,6.19 23,5.44 22,6.31 21,5.54 20,7.04 19,6.24 18,7.26 17,6.98 16,7.53 15,7.25 14,7.85 13,7.83 12,7.87 11,7.94 10,7.61 9,7.83 8,7.32 7,7.39 6,7.26 5,7.17 4,7.34 3,7.48 2,7.39 1,5.87 0,5.00" ], + [ "kick-002", "0,5.01 1,0.00 2,0.15 3,1.17 4,-0.01 5,0.27 6,6.69 7,1.85 8,0.18 9,0.26 10,5.81 11,7.42 12,4.99 13,0.05 14,0.07 15,2.95 16,1.50 17,1.41 18,4.25 19,7.68 20,5.79 21,2.15 22,1.40 23,2.01 24,4.84 25,4.76 26,4.40 27,4.33 28,4.44 29,4.47 30,4.49 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.51 29,5.53 28,5.55 27,5.65 26,5.78 25,6.61 24,6.19 23,4.91 22,2.48 21,5.88 20,9.69 19,9.75 18,8.41 17,4.97 16,6.95 15,7.41 14,3.74 13,5.95 12,9.89 11,10.00 10,8.76 9,6.39 8,2.32 7,8.94 6,9.82 5,8.05 4,4.78 3,8.96 2,9.52 1,9.92 0,5.01" ], + [ "kick-003", "0,4.99 1,0.30 2,0.02 3,0.06 4,0.00 5,0.80 6,0.00 7,0.02 8,1.01 9,0.01 10,0.00 11,8.55 12,1.74 13,0.01 14,0.00 15,4.92 16,6.33 17,0.05 18,0.00 19,2.51 20,8.39 21,0.72 22,0.00 23,0.85 24,7.47 25,3.47 26,0.78 27,1.39 28,5.53 29,4.95 30,4.30 31,4.40 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.51 31,5.51 30,5.45 29,6.33 28,6.60 27,5.58 26,3.56 25,9.63 24,10.00 23,7.51 22,1.08 21,8.58 20,9.98 19,9.85 18,2.43 17,6.29 16,10.00 15,9.94 14,4.85 13,1.65 12,9.90 11,10.50 10,9.75 9,1.11 8,10.00 7,9.66 6,7.97 5,10.00 4,9.66 3,9.97 2,9.89 1,10.00 0,4.98" ], + [ "kick-004", "0,5.00 1,0.67 2,0.92 3,1.00 4,0.97 5,3.59 6,0.00 7,3.15 8,0.00 9,0.05 10,3.57 11,5.19 12,0.11 13,0.22 14,5.93 15,5.83 16,1.89 17,0.84 18,1.45 19,7.34 20,4.31 21,1.12 22,1.19 23,4.91 24,6.51 25,3.59 26,2.41 27,2.86 28,5.67 29,4.87 30,3.65 31,3.64 32,4.29 33,4.60 34,4.30 35,4.28 36,4.38 37,4.55 38,4.50 39,4.48 39,5.50 38,5.55 37,5.59 36,5.57 35,5.38 34,5.59 33,6.12 32,6.12 31,5.28 30,5.36 29,6.23 28,7.39 27,6.16 26,3.57 25,6.48 24,7.79 23,7.59 22,4.87 21,4.27 20,8.55 19,9.36 18,7.32 17,1.86 16,5.81 15,9.42 14,9.59 13,5.85 12,5.10 11,9.81 10,10.00 9,3.54 8,9.94 7,10.00 6,4.27 5,10.00 4,8.94 3,8.95 2,8.35 1,9.39 0,5.00" ], + [ "kick-005", "0,5.00 1,0.28 2,0.27 3,-0.00 4,0.51 5,0.29 6,0.80 7,0.00 8,3.78 9,0.00 10,0.20 11,5.73 12,0.45 13,0.00 14,0.15 15,7.79 16,7.16 17,0.04 18,0.00 19,5.88 20,5.19 21,1.09 22,1.09 23,3.69 24,5.59 25,4.23 26,3.69 27,3.94 28,4.63 29,4.54 30,4.29 31,4.31 32,4.47 33,4.51 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.51 33,5.53 32,5.53 31,5.48 30,5.57 29,5.97 28,5.98 27,5.63 26,4.95 25,5.65 24,7.20 23,7.13 22,3.72 21,5.21 20,9.84 19,10.00 18,5.99 17,7.08 16,9.85 15,9.90 14,8.05 13,1.43 12,9.67 11,10.00 10,5.97 9,3.94 8,10.00 7,9.25 6,9.99 5,10.01 4,9.99 3,9.99 2,9.84 1,8.69 0,5.00" ], + [ "kick-006", "0,5.93 1,-0.02 2,0.47 3,0.57 4,1.61 5,2.59 6,0.89 7,1.15 8,1.62 9,1.08 10,2.14 11,5.58 12,1.13 13,1.53 14,3.50 15,5.61 16,1.10 17,1.17 18,3.29 19,7.24 20,2.77 21,1.14 22,1.49 23,4.93 24,6.64 25,1.22 26,1.21 27,2.40 28,6.89 29,5.41 30,1.74 31,1.75 32,3.49 33,5.66 34,4.88 35,3.44 36,3.48 37,4.29 38,4.58 39,4.40 39,5.71 38,5.98 37,5.88 36,5.30 35,5.41 34,6.42 33,7.39 32,6.46 31,3.84 30,5.93 29,8.29 28,8.54 27,7.33 26,2.60 25,6.81 24,8.82 23,8.82 22,5.84 21,3.21 20,7.26 19,8.87 18,8.83 17,3.54 16,6.93 15,8.63 14,8.87 13,3.57 12,5.66 11,8.83 10,8.85 9,2.45 8,8.78 7,8.99 6,7.38 5,9.03 4,5.93 3,9.30 2,9.71 1,10.55 0,5.96" ], + [ "kick-007", "0,5.01 1,0.00 2,0.55 3,0.94 4,1.85 5,0.81 6,2.50 7,1.14 8,2.55 9,1.39 10,3.61 11,3.11 12,4.61 13,2.97 14,2.62 15,2.07 16,1.90 17,5.44 18,2.43 19,2.55 20,4.71 21,3.15 22,3.29 23,5.24 24,3.84 25,3.60 26,4.75 27,4.44 28,3.58 29,4.60 30,4.36 31,3.86 32,3.91 33,4.70 34,4.32 35,4.29 36,4.42 37,4.43 38,4.41 39,4.48 39,5.51 38,5.49 37,5.66 36,5.69 35,5.48 34,5.75 33,5.90 32,5.76 31,5.42 30,6.26 29,5.69 28,5.19 27,6.00 26,6.20 25,4.76 24,6.26 23,7.13 22,5.69 21,5.46 20,7.55 19,6.77 18,5.90 17,7.40 16,5.92 15,8.42 14,8.23 13,5.53 12,7.43 11,5.97 10,7.99 9,6.05 8,9.23 7,9.19 6,8.79 5,7.99 4,8.87 3,7.23 2,9.15 1,9.16 0,4.94" ], + [ "kick-008", "0,5.71 1,1.77 2,1.10 3,1.32 4,3.25 5,1.30 6,1.65 7,0.62 8,3.76 9,6.54 10,3.41 11,3.14 12,4.20 13,2.07 14,2.29 15,5.10 16,5.80 17,4.75 18,3.59 19,3.59 20,4.04 21,4.58 22,4.50 23,4.49 24,4.48 25,4.46 26,4.45 27,4.47 28,4.47 29,4.47 30,4.44 31,4.46 32,4.47 33,4.47 34,4.45 35,4.47 36,4.48 37,4.43 38,4.46 39,4.49 39,5.51 38,5.52 37,5.52 36,5.56 35,5.52 34,5.51 33,5.56 32,5.55 31,5.53 30,5.52 29,5.55 28,5.55 27,5.54 26,5.53 25,5.55 24,5.53 23,5.53 22,5.65 21,5.70 20,5.59 19,5.13 18,5.27 17,6.51 16,7.34 15,6.55 14,5.23 13,4.58 12,6.54 11,5.75 10,7.25 9,8.76 8,9.31 7,3.79 6,5.42 5,9.43 4,10.00 3,7.32 2,6.00 1,8.78 0,5.70" ], + [ "kick-009", "0,4.81 1,-0.22 2,0.70 3,2.26 4,2.51 5,1.13 6,2.59 7,3.45 8,0.93 9,0.85 10,5.32 11,1.67 12,1.99 13,3.67 14,2.39 15,3.15 16,5.36 17,2.54 18,2.54 19,6.02 20,4.06 21,3.01 22,3.29 23,4.62 24,4.89 25,4.33 26,3.82 27,4.16 28,4.64 29,4.60 30,4.52 31,4.50 32,4.50 33,4.47 34,4.46 35,4.45 36,4.45 37,4.46 38,4.47 39,4.49 39,5.50 38,5.49 37,5.47 36,5.46 35,5.46 34,5.47 33,5.50 32,5.50 31,5.52 30,5.60 29,5.81 28,5.84 27,5.66 26,5.17 25,5.41 24,6.48 23,6.44 22,5.15 21,4.04 20,7.08 19,7.33 18,6.10 17,5.40 16,7.80 15,7.57 14,3.96 13,7.49 12,7.42 11,5.31 10,8.87 9,7.88 8,8.12 7,8.26 6,7.94 5,8.06 4,9.37 3,6.18 2,9.70 1,9.65 0,4.75" ], + [ "kick-010", "0,5.00 1,0.78 2,2.35 3,0.00 4,0.70 5,1.83 6,0.73 7,7.95 8,0.72 9,0.79 10,1.42 11,1.75 12,4.12 13,2.13 14,2.69 15,5.23 16,4.64 17,4.25 18,4.14 19,3.66 20,4.32 21,4.17 22,4.17 23,4.75 24,4.32 25,4.22 26,4.29 27,4.53 28,4.53 29,4.48 30,4.48 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.53 28,5.61 27,5.62 26,5.54 25,5.32 24,5.76 23,5.95 22,5.85 21,5.56 20,6.00 19,5.34 18,6.09 17,5.99 16,5.88 15,6.95 14,5.29 13,4.26 12,9.18 11,9.15 10,7.44 9,8.53 8,8.53 7,9.46 6,8.12 5,3.78 4,9.81 3,9.84 2,8.17 1,7.79 0,5.00" ], + [ "kick-011", "0,5.00 1,1.88 2,1.75 3,0.22 4,0.23 5,0.49 6,0.57 7,0.67 8,1.98 9,1.18 10,2.57 11,1.69 12,4.14 13,3.83 14,4.37 15,4.40 16,4.28 17,4.38 18,4.28 19,4.39 20,4.39 21,4.40 22,4.33 23,4.40 24,4.39 25,4.45 26,4.40 27,4.42 28,4.44 29,4.43 30,4.48 31,4.47 32,4.47 33,4.48 34,4.48 35,4.49 36,4.49 37,4.48 38,4.49 39,4.49 39,5.51 38,5.53 37,5.52 36,5.52 35,5.51 34,5.51 33,5.53 32,5.53 31,5.52 30,5.55 29,5.53 28,5.57 27,5.58 26,5.58 25,5.60 24,5.59 23,5.63 22,5.62 21,5.66 20,5.60 19,5.69 18,5.67 17,5.74 16,5.66 15,5.72 14,5.69 13,5.76 12,6.82 11,6.80 10,8.51 9,7.64 8,7.96 7,7.93 6,9.02 5,9.61 4,9.32 3,10.00 2,9.28 1,6.78 0,5.00" ], + [ "kick-012", "0,4.89 1,0.01 2,0.57 3,0.84 4,0.90 5,0.92 6,0.97 7,0.94 8,2.07 9,1.03 10,1.60 11,2.02 12,1.96 13,2.89 14,2.69 15,3.46 16,4.32 17,3.96 18,4.46 19,4.08 20,4.19 21,4.38 22,4.33 23,4.36 24,4.34 25,4.33 26,4.37 27,4.36 28,4.45 29,4.37 30,4.40 31,4.41 32,4.42 33,4.44 34,4.40 35,4.43 36,4.46 37,4.42 38,4.43 39,4.43 39,5.57 38,5.58 37,5.54 36,5.58 35,5.57 34,5.57 33,5.59 32,5.58 31,5.61 30,5.62 29,5.59 28,5.62 27,5.62 26,5.61 25,5.62 24,5.60 23,5.68 22,5.68 21,5.80 20,5.83 19,5.90 18,5.72 17,5.67 16,6.19 15,6.63 14,6.78 13,7.43 12,6.13 11,8.33 10,8.68 9,8.69 8,9.06 7,7.93 6,9.05 5,9.07 4,8.83 3,9.14 2,9.36 1,9.84 0,5.03" ], + [ "kick-013", "0,5.00 1,0.75 2,0.54 3,0.42 4,0.00 5,0.03 6,4.75 7,0.32 8,1.13 9,5.54 10,2.29 11,2.51 12,5.15 13,4.18 14,4.18 15,4.60 16,4.30 17,4.37 18,4.27 19,4.24 20,4.42 21,4.35 22,4.37 23,4.31 24,4.37 25,4.40 26,4.38 27,4.26 28,4.44 29,4.44 30,4.39 31,4.46 32,4.44 33,4.43 34,4.40 35,4.37 36,4.45 37,4.38 38,4.39 39,4.47 39,5.57 38,5.54 37,5.61 36,5.61 35,5.59 34,5.59 33,5.63 32,5.59 31,5.60 30,5.57 29,5.63 28,5.65 27,5.59 26,5.66 25,5.68 24,5.64 23,5.63 22,5.84 21,5.57 20,5.72 19,5.65 18,5.73 17,5.71 16,5.82 15,5.92 14,5.20 13,5.86 12,6.87 11,5.77 10,5.62 9,9.49 8,8.95 7,4.71 6,9.86 5,9.86 4,9.51 3,9.99 2,9.93 1,8.16 0,4.98" ], + [ "kick-014", "0,5.31 1,0.41 2,0.30 3,1.21 4,3.28 5,1.85 6,5.78 7,2.89 8,2.92 9,5.07 10,3.59 11,4.39 12,4.24 13,3.83 14,5.05 15,4.69 16,3.69 17,3.92 18,4.11 19,4.57 20,4.66 21,4.10 22,3.93 23,4.04 24,4.56 25,4.68 26,4.31 27,4.16 28,4.18 29,4.49 30,4.66 31,4.48 32,4.38 33,4.38 34,4.48 35,4.51 36,4.51 37,4.49 38,4.49 39,4.50 39,5.52 38,5.52 37,5.53 36,5.53 35,5.54 34,5.54 33,5.48 32,5.50 31,5.68 30,5.73 29,5.71 28,5.50 27,5.31 26,5.73 25,6.07 24,6.06 23,5.56 22,5.13 21,5.68 20,6.36 19,6.37 18,5.68 17,5.21 16,5.20 15,6.05 14,6.15 13,5.55 12,6.04 11,5.52 10,5.58 9,6.57 8,6.39 7,5.75 6,7.32 5,6.20 4,8.50 3,7.46 2,9.38 1,10.00 0,5.19" ], + [ "kick-015", "0,4.91 1,0.44 2,0.00 3,1.09 4,2.67 5,2.84 6,2.83 7,3.35 8,1.84 9,2.72 10,2.30 11,3.14 12,4.15 13,3.68 14,4.06 15,3.46 16,3.97 17,3.63 18,4.61 19,4.04 20,4.60 21,3.94 22,4.20 23,4.16 24,4.13 25,4.55 26,4.24 27,4.33 28,4.41 29,4.36 30,4.48 31,4.42 32,4.42 33,4.49 34,4.45 35,4.48 36,4.47 37,4.47 38,4.51 39,4.48 39,5.51 38,5.53 37,5.51 36,5.54 35,5.54 34,5.49 33,5.56 32,5.55 31,5.57 30,5.59 29,5.52 28,5.70 27,5.70 26,5.55 25,5.83 24,5.63 23,5.93 22,5.96 21,5.61 20,6.31 19,5.14 18,6.17 17,5.73 16,6.41 15,6.07 14,6.60 13,5.94 12,6.29 11,7.32 10,7.46 9,8.00 8,7.32 7,7.35 6,7.20 5,6.93 4,6.73 3,9.29 2,9.86 1,9.95 0,4.90" ], + [ "kick-016", "0,5.00 1,2.08 2,2.05 3,0.19 4,0.49 5,3.35 6,0.87 7,7.47 8,1.15 9,1.45 10,6.05 11,5.26 12,4.07 13,2.59 14,3.93 15,5.24 16,4.41 17,4.16 18,3.99 19,3.54 20,4.12 21,4.75 22,4.68 23,4.82 24,5.09 25,4.79 26,4.73 27,4.56 28,4.46 29,4.46 30,4.52 31,4.49 32,4.51 33,4.51 34,4.52 35,4.51 36,4.51 37,4.51 38,4.51 39,4.50 39,5.53 38,5.54 37,5.54 36,5.55 35,5.54 34,5.54 33,5.57 32,5.58 31,5.58 30,5.58 29,5.58 28,5.59 27,5.79 26,5.91 25,6.17 24,6.43 23,6.43 22,5.84 21,6.08 20,5.39 19,5.19 18,5.87 17,5.57 16,6.37 15,7.07 14,6.20 13,4.18 12,7.65 11,7.23 10,8.24 9,6.27 8,8.38 7,9.29 6,9.27 5,8.46 4,9.60 3,9.53 2,10.00 1,9.59 0,5.00" ], + [ "kick-017", "0,5.00 1,2.29 2,2.91 3,3.22 4,3.14 5,2.91 6,2.85 7,2.88 8,2.03 9,4.95 10,2.20 11,4.24 12,2.11 13,2.01 14,4.88 15,4.02 16,2.03 17,2.05 18,5.28 19,6.64 20,2.14 21,1.12 22,2.14 23,4.91 24,7.24 25,3.79 26,1.45 27,1.53 28,3.25 29,6.98 30,6.01 31,2.42 32,1.27 33,2.26 34,4.65 35,6.60 36,6.11 37,4.92 38,4.50 39,4.50 39,5.50 38,5.96 37,6.71 36,7.24 35,8.46 34,7.74 33,4.66 32,3.04 31,6.07 30,8.14 29,8.43 28,7.06 27,3.40 26,3.83 25,7.31 24,8.54 23,8.53 22,4.94 21,2.79 20,6.72 19,8.00 18,8.01 17,5.26 16,4.05 15,7.94 14,8.09 13,4.90 12,7.55 11,8.08 10,5.07 9,7.80 8,5.76 7,7.42 6,7.33 5,6.61 4,6.75 3,6.58 2,7.09 1,7.58 0,5.00" ], + [ "kick-018", "0,5.00 1,3.28 2,1.57 3,1.21 4,1.20 5,1.48 6,2.17 7,1.99 8,2.36 9,4.09 10,2.78 11,3.04 12,3.24 13,3.32 14,3.65 15,3.59 16,3.74 17,4.39 18,3.80 19,3.85 20,4.02 21,3.91 22,4.01 23,3.98 24,4.06 25,4.63 26,4.16 27,4.26 28,4.34 29,3.88 30,4.52 31,3.99 32,4.10 33,4.34 34,4.20 35,4.30 36,4.32 37,4.39 38,4.48 39,4.48 39,5.50 38,5.56 37,5.55 36,5.65 35,5.75 34,5.73 33,5.85 32,5.92 31,5.96 30,5.57 29,5.74 28,5.69 27,5.79 26,5.75 25,5.89 24,5.85 23,5.98 22,6.05 21,5.53 20,6.12 19,6.18 18,6.14 17,6.24 16,6.13 15,6.30 14,6.55 13,5.70 12,6.82 11,7.08 10,6.95 9,7.41 8,7.57 7,7.84 6,8.19 5,6.85 4,8.98 3,8.61 2,8.53 1,8.31 0,5.00" ], + [ "kick-019", "0,5.00 1,1.70 2,1.45 3,0.40 4,2.95 5,2.67 6,2.18 7,3.68 8,4.14 9,4.17 10,4.33 11,4.16 12,4.50 13,4.20 14,4.31 15,4.29 16,4.37 17,4.42 18,4.42 19,4.45 20,4.45 21,4.47 22,4.44 23,4.46 24,4.47 25,4.48 26,4.49 27,4.49 28,4.49 29,4.49 30,4.50 31,4.49 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.51 28,5.51 27,5.51 26,5.51 25,5.52 24,5.54 23,5.53 22,5.56 21,5.54 20,5.55 19,5.56 18,5.58 17,5.58 16,5.65 15,5.64 14,5.62 13,5.88 12,5.77 11,5.99 10,6.17 9,5.46 8,5.88 7,6.71 6,6.82 5,7.34 4,6.68 3,9.22 2,8.60 1,8.32 0,5.00" ], + [ "kick-020", "0,6.70 1,5.34 2,4.05 3,3.51 4,3.32 5,2.25 6,2.01 7,6.07 8,3.45 9,2.82 10,4.03 11,4.43 12,2.25 13,2.26 14,4.91 15,7.36 16,3.73 17,1.75 18,1.18 19,2.50 20,5.05 21,6.95 22,6.83 23,4.68 24,2.98 25,1.96 26,1.97 27,3.13 28,4.40 29,5.07 30,5.73 31,5.40 32,4.90 33,4.49 34,4.26 35,4.18 36,4.18 37,4.21 38,4.29 39,4.39 39,5.47 38,5.39 37,5.29 36,5.21 35,5.26 34,5.49 33,5.90 32,6.40 31,6.78 30,6.83 29,6.73 28,5.57 27,4.40 26,3.63 25,3.48 24,4.68 23,6.83 22,8.10 21,8.64 20,7.43 19,5.05 18,3.00 17,3.73 16,7.33 15,8.47 14,8.23 13,4.91 12,4.43 11,6.52 10,6.48 9,4.03 8,7.83 7,8.19 6,6.07 5,6.23 4,6.17 3,5.60 2,6.04 1,8.91 0,6.70" ], + [ "kick-021", "0,5.00 1,2.28 2,0.32 3,-0.00 4,2.25 5,2.14 6,5.00 7,4.33 8,3.51 9,4.56 10,4.00 11,3.99 12,4.44 13,4.12 14,3.73 15,4.22 16,4.34 17,4.40 18,4.24 19,4.33 20,4.38 21,4.39 22,4.22 23,4.44 24,4.15 25,4.21 26,4.25 27,4.24 28,4.38 29,4.47 30,4.48 31,4.51 32,4.52 33,4.51 34,4.51 35,4.51 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.51 37,5.51 36,5.51 35,5.52 34,5.52 33,5.53 32,5.53 31,5.53 30,5.55 29,5.56 28,5.55 27,5.48 26,5.57 25,5.74 24,5.76 23,5.72 22,6.05 21,6.04 20,6.00 19,5.76 18,5.82 17,5.87 16,5.63 15,5.53 14,5.37 13,5.94 12,6.26 11,5.22 10,5.78 9,6.46 8,5.39 7,5.90 6,6.67 5,5.91 4,9.56 3,10.00 2,9.63 1,8.66 0,5.00" ], + [ "kick-022", "0,5.00 1,1.87 2,2.76 3,3.13 4,4.05 5,3.81 6,2.72 7,3.52 8,3.65 9,4.19 10,4.45 11,4.32 12,4.39 13,4.38 14,4.37 15,4.43 16,4.41 17,4.44 18,4.41 19,4.45 20,4.45 21,4.44 22,4.47 23,4.47 24,4.47 25,4.48 26,4.48 27,4.48 28,4.49 29,4.49 30,4.49 31,4.49 32,4.49 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.51 31,5.51 30,5.51 29,5.51 28,5.51 27,5.52 26,5.52 25,5.51 24,5.53 23,5.52 22,5.53 21,5.54 20,5.55 19,5.56 18,5.54 17,5.58 16,5.60 15,5.62 14,5.63 13,5.60 12,5.60 11,5.60 10,5.75 9,5.98 8,5.89 7,6.67 6,6.94 5,6.98 4,6.74 3,6.69 2,7.95 1,8.15 0,5.00" ], + [ "kick-023", "0,5.00 1,-0.03 2,1.81 3,2.02 4,2.08 5,1.44 6,2.06 7,2.21 8,1.36 9,2.26 10,2.16 11,1.61 12,4.64 13,2.76 14,0.83 15,1.34 16,8.05 17,1.78 18,0.40 19,1.81 20,6.89 21,6.00 22,2.00 23,0.69 24,1.31 25,5.72 26,7.48 27,2.54 28,1.12 29,1.21 30,4.64 31,6.40 32,5.43 33,4.10 34,4.10 35,4.39 36,4.50 37,4.51 38,4.50 39,4.50 39,5.50 38,5.51 37,5.51 36,5.51 35,5.50 34,5.39 33,5.93 32,6.89 31,8.00 30,7.08 29,4.62 28,2.54 27,7.45 26,8.95 25,8.94 24,5.71 23,2.49 22,6.00 21,8.60 20,8.92 19,6.86 18,2.33 17,8.13 16,9.18 15,8.06 14,2.76 13,8.66 12,8.87 11,4.71 10,8.60 9,8.61 8,6.90 7,7.59 6,8.45 5,8.40 4,7.84 3,6.85 2,7.32 1,10.01 0,5.00" ], + [ "kick-024", "0,5.00 1,-0.01 2,6.22 3,-0.00 4,-0.00 5,4.20 6,5.41 7,0.35 8,0.35 9,4.81 10,4.73 11,2.24 12,2.27 13,5.17 14,4.63 15,3.36 16,3.40 17,4.75 18,4.68 19,3.54 20,4.10 21,4.72 22,4.26 23,3.97 24,4.03 25,4.68 26,4.35 27,4.22 28,4.26 29,4.63 30,4.41 31,4.38 32,4.42 33,4.55 34,4.47 35,4.45 36,4.47 37,4.51 38,4.50 39,4.50 39,5.50 38,5.51 37,5.54 36,5.53 35,5.47 34,5.56 33,5.59 32,5.57 31,5.43 30,5.65 29,5.70 28,5.64 27,5.38 26,5.83 25,5.89 24,5.72 23,5.31 22,6.15 21,6.20 20,5.27 19,5.25 18,6.16 17,6.71 16,5.33 15,4.73 14,7.02 13,7.05 12,5.26 11,4.85 10,8.45 9,8.46 8,4.90 7,5.54 6,10.00 5,10.00 4,4.23 3,8.45 2,10.00 1,6.25 0,5.00" ], + [ "kick-025", "0,5.00 1,2.12 2,2.01 3,2.00 4,2.22 5,1.98 6,2.31 7,2.14 8,2.75 9,3.46 10,3.57 11,4.45 12,3.65 13,3.55 14,3.61 15,3.69 16,3.62 17,3.65 18,3.73 19,3.69 20,3.79 21,3.89 22,4.32 23,3.98 24,4.06 25,4.12 26,4.13 27,4.15 28,4.27 29,4.56 30,4.32 31,4.36 32,4.43 33,4.45 34,3.96 35,4.04 36,4.28 37,4.05 38,4.26 39,4.45 39,5.63 38,5.79 37,5.80 36,5.92 35,5.94 34,5.85 33,5.52 32,5.52 31,5.59 30,5.62 29,5.66 28,5.73 27,5.56 26,5.78 25,5.84 24,5.94 23,5.95 22,5.98 21,6.08 20,5.78 19,6.21 18,6.28 17,6.30 16,6.21 15,6.36 14,6.42 13,6.46 12,6.35 11,5.98 10,5.79 9,6.96 8,7.13 7,7.71 6,8.01 5,8.06 4,8.05 3,7.90 2,7.99 1,7.98 0,5.00" ], + [ "kick-026", "0,5.00 1,2.12 2,2.07 3,2.04 4,2.03 5,2.03 6,2.03 7,2.03 8,2.27 9,2.17 10,2.17 11,2.37 12,3.89 13,2.22 14,3.32 15,2.79 16,3.51 17,2.63 18,4.60 19,2.73 20,4.45 21,3.02 22,3.26 23,3.76 24,3.21 25,4.97 26,3.41 27,3.52 28,4.46 29,3.64 30,4.23 31,4.41 32,4.41 33,4.46 34,4.47 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.51 33,5.48 32,5.46 31,5.88 30,6.17 29,4.73 28,6.41 27,6.11 26,5.97 25,6.86 24,4.96 23,7.02 22,6.99 21,6.34 20,7.07 19,4.57 18,7.36 17,5.86 16,7.33 15,6.63 14,7.59 13,6.53 12,7.60 11,6.77 10,7.99 9,7.92 8,7.67 7,7.90 6,7.97 5,7.97 4,7.97 3,7.96 2,7.95 1,7.85 0,5.00" ], + [ "kick-027", "0,5.00 1,4.48 2,1.36 3,0.74 4,1.42 5,5.48 6,-0.00 7,-0.00 8,4.62 9,7.68 10,1.41 11,-0.00 12,0.62 13,4.45 14,6.84 15,7.73 16,4.31 17,-0.00 18,-0.50 19,0.61 20,6.67 21,6.65 22,3.47 23,2.49 24,3.34 25,4.22 26,4.27 27,4.14 28,4.25 29,4.78 30,4.61 31,4.45 32,4.23 33,4.15 34,4.16 35,4.39 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.55 34,5.39 33,5.22 32,5.44 31,5.62 30,5.81 29,5.91 28,5.78 27,5.28 26,5.77 25,5.81 24,4.70 23,3.95 22,6.65 21,9.32 20,9.45 19,6.63 18,1.09 17,4.29 16,8.64 15,9.66 14,8.75 13,7.49 12,4.44 11,1.33 10,7.68 9,10.00 8,10.01 7,4.56 6,5.49 5,10.00 4,10.01 3,6.44 2,10.01 1,5.60 0,5.00" ], + [ "kick-028", "0,5.00 1,1.26 2,1.96 3,1.80 4,1.70 5,1.60 6,3.50 7,2.06 8,2.52 9,2.99 10,2.99 11,3.46 12,3.46 13,3.83 14,4.35 15,3.96 16,4.05 17,4.34 18,4.14 19,4.23 20,4.23 21,4.32 22,4.15 23,4.42 24,4.01 25,4.15 26,4.06 27,4.12 28,4.12 29,4.17 30,4.35 31,4.22 32,4.27 33,4.32 34,4.31 35,4.35 36,4.35 37,4.38 38,4.48 39,4.50 39,5.50 38,5.59 37,5.59 36,5.62 35,5.64 34,5.61 33,5.68 32,5.72 31,5.73 30,5.77 29,5.72 28,5.81 27,5.86 26,5.78 25,5.90 24,5.96 23,5.47 22,6.05 21,5.42 20,5.63 19,5.71 18,5.59 17,5.79 16,5.83 15,5.86 14,5.93 13,5.86 12,6.24 11,6.65 10,6.21 9,7.14 8,7.56 7,7.56 6,8.02 5,8.04 4,8.09 3,7.92 2,7.97 1,7.49 0,5.00" ], + "openhat", + [ "openhat-001", "0,4.99 1,3.69 2,3.89 3,3.61 4,4.00 5,3.54 6,4.05 7,4.20 8,4.25 9,4.28 10,4.33 11,4.31 12,4.34 13,4.38 14,4.38 15,4.53 16,4.09 17,3.95 18,4.06 19,4.21 20,4.20 21,4.15 22,4.20 23,4.24 24,4.21 25,4.29 26,4.28 27,4.37 28,4.37 29,4.41 30,4.40 31,4.42 32,4.44 33,4.44 34,4.44 35,4.45 36,4.47 37,4.48 38,4.49 39,4.50 39,5.50 38,5.51 37,5.52 36,5.53 35,5.54 34,5.59 33,5.56 32,5.57 31,5.60 30,5.60 29,5.64 28,5.63 27,5.63 26,5.68 25,5.66 24,5.69 23,5.77 22,5.74 21,5.79 20,5.93 19,5.98 18,5.92 17,5.92 16,5.95 15,5.54 14,5.68 13,5.65 12,5.60 11,5.68 10,5.72 9,5.75 8,5.76 7,6.00 6,6.00 5,6.24 4,5.96 3,5.89 2,6.30 1,6.02 0,5.01" ], + [ "openhat-002", "0,5.00 1,3.24 2,3.69 3,3.64 4,3.57 5,3.63 6,3.90 7,3.76 8,3.55 9,3.54 10,3.99 11,3.57 12,3.92 13,3.73 14,3.82 15,3.69 16,4.02 17,4.41 18,4.25 19,4.24 20,4.43 21,4.35 22,4.53 23,4.08 24,4.07 25,4.16 26,4.33 27,4.35 28,4.37 29,4.45 30,4.45 31,4.44 32,4.46 33,4.48 34,4.48 35,4.48 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.52 33,5.52 32,5.53 31,5.54 30,5.56 29,5.58 28,5.61 27,5.68 26,5.71 25,5.74 24,5.81 23,5.90 22,5.56 21,5.81 20,5.75 19,5.64 18,5.87 17,5.68 16,5.94 15,5.93 14,5.96 13,6.16 12,5.83 11,6.41 10,6.08 9,5.96 8,6.03 7,6.48 6,6.04 5,6.23 4,6.31 3,6.31 2,6.29 1,6.29 0,5.00" ], + [ "openhat-003", "0,5.00 1,2.47 2,3.57 3,3.01 4,3.42 5,3.65 6,3.60 7,3.30 8,3.85 9,4.00 10,3.86 11,4.00 12,3.64 13,3.98 14,3.84 15,3.78 16,4.17 17,4.05 18,4.23 19,4.08 20,4.12 21,4.06 22,4.21 23,3.99 24,4.21 25,4.48 26,4.40 27,4.44 28,4.29 29,4.53 30,4.38 31,4.06 32,4.12 33,4.02 34,4.41 35,4.07 36,4.05 37,4.29 38,4.35 39,4.44 39,5.56 38,5.65 37,5.72 36,5.78 35,5.95 34,5.44 33,5.82 32,5.94 31,6.05 30,5.48 29,5.57 28,5.78 27,5.53 26,5.68 25,5.72 24,5.70 23,5.76 22,5.78 21,5.54 20,5.68 19,6.15 18,5.77 17,5.93 16,6.12 15,5.94 14,6.04 13,5.93 12,6.28 11,5.83 10,6.33 9,6.24 8,6.33 7,6.30 6,6.09 5,6.42 4,6.64 3,6.34 2,6.59 1,7.72 0,5.00" ], + [ "openhat-004", "0,5.00 1,2.01 2,1.03 3,2.41 4,2.45 5,2.73 6,3.13 7,3.51 8,3.46 9,4.00 10,4.16 11,4.12 12,4.28 13,4.15 14,4.08 15,4.31 16,4.00 17,4.02 18,4.24 19,4.13 20,4.17 21,4.11 22,4.31 23,4.15 24,4.21 25,4.21 26,4.20 27,4.12 28,4.30 29,4.25 30,4.33 31,4.10 32,4.36 33,4.37 34,4.47 35,4.26 36,4.46 37,3.99 38,4.30 39,4.35 39,5.61 38,5.72 37,5.92 36,5.50 35,5.65 34,5.61 33,5.70 32,5.71 31,5.56 30,5.68 29,5.62 28,5.72 27,5.84 26,5.79 25,5.93 24,5.63 23,5.86 22,5.78 21,5.81 20,6.03 19,5.78 18,5.87 17,6.12 16,5.77 15,5.95 14,5.87 13,5.91 12,6.06 11,6.15 10,6.00 9,6.13 8,6.02 7,6.46 6,6.66 5,7.90 4,8.13 3,9.12 2,9.30 1,10.66 0,5.00" ], + [ "openhat-005", "0,4.98 1,1.66 2,1.34 3,2.39 4,2.60 5,3.18 6,3.36 7,4.00 8,3.97 9,4.06 10,4.25 11,4.27 12,4.34 13,4.32 14,4.40 15,4.40 16,4.42 17,4.42 18,4.43 19,4.45 20,4.44 21,4.44 22,4.45 23,4.44 24,4.47 25,4.46 26,4.47 27,4.47 28,4.47 29,4.48 30,4.47 31,4.48 32,4.48 33,4.48 34,4.48 35,4.48 36,4.48 37,4.49 38,4.49 39,4.50 39,5.50 38,5.51 37,5.52 36,5.52 35,5.51 34,5.52 33,5.53 32,5.52 31,5.52 30,5.53 29,5.52 28,5.53 27,5.53 26,5.54 25,5.53 24,5.55 23,5.56 22,5.55 21,5.55 20,5.59 19,5.58 18,5.58 17,5.58 16,5.59 15,5.61 14,5.64 13,5.65 12,5.62 11,5.69 10,5.79 9,6.00 8,5.84 7,6.24 6,6.95 5,7.85 4,8.37 3,8.78 2,9.64 1,10.67 0,5.03" ], + [ "openhat-006", "0,4.98 1,1.55 2,1.52 3,0.36 4,1.81 5,1.52 6,2.50 7,2.55 8,2.52 9,2.85 10,2.85 11,3.29 12,3.32 13,3.22 14,3.85 15,4.15 16,4.28 17,4.25 18,4.14 19,4.10 20,4.34 21,4.35 22,4.39 23,4.40 24,4.39 25,4.42 26,4.40 27,4.40 28,4.40 29,4.42 30,4.42 31,4.42 32,4.45 33,4.45 34,4.44 35,4.47 36,4.47 37,4.48 38,4.49 39,4.50 39,5.50 38,5.51 37,5.52 36,5.53 35,5.54 34,5.55 33,5.57 32,5.56 31,5.56 30,5.59 29,5.61 28,5.58 27,5.60 26,5.63 25,5.59 24,5.61 23,5.60 22,5.63 21,5.61 20,5.70 19,5.98 18,5.94 17,5.92 16,6.07 15,6.13 14,6.32 13,7.02 12,7.17 11,7.27 10,7.58 9,7.61 8,7.95 7,8.66 6,7.71 5,7.90 4,8.86 3,10.21 2,9.04 1,9.46 0,4.94" ], + [ "openhat-007", "0,4.95 1,1.22 2,1.40 3,1.60 4,1.46 5,1.85 6,2.44 7,2.76 8,2.20 9,1.70 10,0.86 11,2.55 12,2.36 13,2.26 14,2.28 15,2.33 16,1.84 17,3.33 18,2.06 19,2.39 20,2.42 21,2.49 22,3.01 23,3.06 24,2.48 25,3.64 26,3.48 27,3.52 28,3.37 29,3.76 30,3.65 31,3.09 32,3.59 33,3.69 34,3.72 35,4.14 36,4.05 37,4.08 38,4.14 39,4.04 39,5.94 38,5.71 37,6.06 36,6.05 35,5.78 34,6.23 33,6.42 32,6.23 31,6.46 30,6.71 29,6.50 28,6.27 27,6.40 26,6.26 25,6.74 24,7.18 23,7.26 22,6.80 21,7.70 20,7.53 19,7.15 18,7.67 17,7.03 16,8.15 15,6.92 14,7.50 13,7.62 12,7.98 11,8.04 10,7.55 9,8.13 8,7.65 7,7.61 6,7.78 5,8.33 4,8.76 3,7.98 2,8.67 1,8.61 0,5.17" ], + [ "openhat-008", "0,5.14 1,0.82 2,-0.24 3,1.72 4,3.06 5,3.86 6,3.92 7,3.85 8,4.17 9,3.95 10,4.31 11,4.40 12,4.29 13,4.32 14,4.41 15,4.25 16,4.42 17,4.43 18,4.42 19,4.13 20,4.06 21,4.10 22,4.55 23,4.03 24,4.01 25,4.06 26,4.15 27,4.19 28,4.22 29,4.14 30,4.22 31,4.16 32,4.19 33,4.20 34,4.30 35,4.15 36,4.18 37,4.18 38,4.25 39,4.19 39,5.74 38,5.75 37,5.83 36,5.73 35,5.79 34,5.72 33,5.81 32,5.82 31,5.95 30,5.91 29,5.87 28,5.80 27,5.82 26,5.81 25,5.89 24,5.84 23,5.91 22,5.57 21,5.79 20,5.92 19,6.04 18,5.62 17,5.46 16,5.49 15,5.83 14,5.65 13,5.42 12,5.79 11,5.58 10,5.72 9,5.66 8,5.85 7,6.03 6,6.01 5,6.33 4,6.68 3,7.92 2,9.82 1,8.91 0,4.90" ], + [ "openhat-009", "0,5.00 1,1.37 2,0.84 3,1.68 4,2.52 5,2.43 6,2.73 7,2.88 8,2.48 9,2.91 10,3.00 11,3.01 12,4.06 13,4.06 14,3.96 15,3.96 16,3.93 17,4.41 18,4.17 19,4.50 20,4.16 21,4.02 22,4.70 23,4.20 24,4.34 25,4.31 26,4.32 27,4.36 28,4.29 29,4.41 30,4.40 31,4.44 32,4.46 33,4.47 34,4.48 35,4.48 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.52 34,5.52 33,5.52 32,5.54 31,5.55 30,5.56 29,5.59 28,5.61 27,5.65 26,5.64 25,5.68 24,5.72 23,5.83 22,5.77 21,5.98 20,5.62 19,5.74 18,5.83 17,5.80 16,5.86 15,5.87 14,5.75 13,5.96 12,5.96 11,6.47 10,6.59 9,6.95 8,7.49 7,6.72 6,7.05 5,7.46 4,8.30 3,8.07 2,9.59 1,9.26 0,5.00" ], + [ "openhat-010", "0,5.50 1,0.90 2,1.37 3,2.01 4,2.26 5,2.58 6,2.71 7,3.07 8,3.26 9,3.28 10,3.15 11,3.23 12,3.44 13,3.64 14,3.94 15,4.10 16,3.98 17,4.02 18,4.23 19,4.12 20,4.23 21,4.24 22,4.14 23,4.37 24,4.39 25,4.40 26,4.35 27,4.38 28,4.44 29,4.34 30,4.02 31,4.01 32,4.12 33,4.07 34,4.07 35,4.14 36,4.12 37,4.28 38,4.20 39,4.30 39,5.77 38,5.83 37,5.75 36,5.90 35,5.79 34,5.88 33,5.87 32,5.90 31,5.92 30,5.93 29,5.55 28,5.57 27,5.54 26,5.69 25,5.47 24,5.65 23,5.66 22,5.81 21,5.67 20,5.68 19,5.96 18,5.87 17,5.72 16,6.05 15,6.05 14,6.18 13,6.19 12,6.67 11,6.68 10,6.56 9,6.38 8,6.51 7,6.54 6,7.20 5,7.31 4,7.16 3,8.67 2,8.42 1,9.43 0,3.63" ], + [ "openhat-011", "0,5.00 1,2.54 2,2.24 3,3.51 4,3.46 5,4.03 6,3.98 7,3.80 8,3.71 9,3.91 10,3.83 11,3.41 12,3.78 13,4.34 14,4.36 15,4.07 16,4.04 17,4.23 18,3.95 19,4.46 20,4.33 21,4.32 22,3.95 23,4.47 24,4.08 25,4.24 26,4.43 27,4.43 28,4.40 29,4.44 30,4.45 31,4.46 32,4.45 33,4.47 34,4.47 35,4.48 36,4.48 37,4.48 38,4.47 39,4.48 39,5.52 38,5.52 37,5.52 36,5.52 35,5.52 34,5.54 33,5.53 32,5.55 31,5.54 30,5.55 29,5.56 28,5.58 27,5.57 26,5.56 25,5.76 24,5.82 23,5.51 22,5.94 21,5.77 20,5.67 19,5.53 18,5.73 17,5.73 16,6.00 15,6.06 14,5.62 13,5.85 12,6.13 11,6.38 10,5.91 9,6.09 8,6.04 7,6.08 6,6.02 5,6.22 4,6.14 3,6.48 2,7.44 1,8.30 0,5.00" ], + [ "openhat-012", "0,5.00 1,4.33 2,4.28 3,3.07 4,1.56 5,1.59 6,1.44 7,1.47 8,1.94 9,1.42 10,2.03 11,2.01 12,2.22 13,2.31 14,2.80 15,2.99 16,3.44 17,3.93 18,4.08 19,4.14 20,4.53 21,4.02 22,4.10 23,4.20 24,4.30 25,4.32 26,4.35 27,4.41 28,4.41 29,4.43 30,4.46 31,4.43 32,4.46 33,4.46 34,4.47 35,4.47 36,4.47 37,4.48 38,4.48 39,4.47 39,5.52 38,5.52 37,5.53 36,5.53 35,5.53 34,5.54 33,5.54 32,5.56 31,5.54 30,5.55 29,5.56 28,5.57 27,5.58 26,5.65 25,5.65 24,5.73 23,5.84 22,5.98 21,5.95 20,5.57 19,5.84 18,5.99 17,6.44 16,6.73 15,7.28 14,7.08 13,7.70 12,8.44 11,8.57 10,8.36 9,9.42 8,8.53 7,8.30 6,9.72 5,8.20 4,8.04 3,6.65 2,5.74 1,5.66 0,5.00" ], + [ "openhat-013", "0,5.02 1,4.33 2,4.33 3,3.82 4,2.99 5,1.61 6,0.39 7,1.21 8,0.54 9,0.79 10,1.54 11,1.17 12,0.73 13,1.86 14,1.15 15,2.00 16,1.55 17,1.96 18,2.77 19,2.80 20,2.59 21,2.57 22,3.23 23,3.34 24,3.90 25,3.80 26,4.02 27,4.12 28,4.34 29,4.00 30,4.24 31,4.23 32,4.29 33,4.41 34,4.45 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.52 34,5.55 33,5.60 32,5.64 31,5.77 30,5.82 29,5.97 28,5.54 27,5.96 26,5.86 25,6.07 24,6.00 23,6.28 22,7.01 21,7.25 20,7.34 19,7.54 18,7.05 17,8.09 16,8.10 15,9.05 14,9.57 13,8.59 12,8.89 11,8.61 10,8.67 9,9.04 8,8.77 7,8.21 6,7.97 5,8.43 4,7.00 3,6.34 2,5.84 1,5.75 0,5.07" ], + [ "openhat-014", "0,5.00 1,4.99 2,5.26 3,5.26 4,5.25 5,5.17 6,5.24 7,5.21 8,5.20 9,5.22 10,5.18 11,5.18 12,5.17 13,5.18 14,5.16 15,4.70 16,4.68 17,4.65 18,4.64 19,4.63 20,4.63 21,4.63 22,4.60 23,4.62 24,4.60 25,4.58 26,4.53 27,4.53 28,4.53 29,4.52 30,4.51 31,4.51 32,4.51 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.51 34,5.52 33,5.53 32,5.54 31,5.56 30,5.59 29,5.63 28,5.69 27,5.77 26,5.90 25,6.07 24,6.33 23,6.40 22,6.42 21,6.43 20,6.48 19,6.53 18,6.54 17,6.59 16,6.61 15,6.66 14,6.19 13,6.22 12,6.24 11,6.28 10,6.31 9,6.36 8,6.40 7,6.44 6,6.47 5,6.49 4,6.55 3,6.58 2,6.63 1,7.00 0,5.00" ], + [ "openhat-015", "0,5.00 1,2.90 2,2.91 3,3.37 4,3.41 5,3.52 6,3.66 7,3.91 8,4.03 9,4.05 10,4.12 11,4.12 12,4.32 13,4.44 14,4.39 15,4.53 16,4.52 17,4.11 18,4.18 19,4.21 20,4.28 21,4.29 22,4.35 23,4.35 24,4.36 25,4.39 26,4.41 27,4.42 28,4.44 29,4.45 30,4.48 31,4.48 32,4.49 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.52 34,5.53 33,5.53 32,5.56 31,5.58 30,5.61 29,5.63 28,5.67 27,5.61 26,5.70 25,5.70 24,5.70 23,5.80 22,5.75 21,5.76 20,5.86 19,5.88 18,5.89 17,6.05 16,5.66 15,5.61 14,5.66 13,5.75 12,5.93 11,5.76 10,6.21 9,6.48 8,6.32 7,6.48 6,6.45 5,6.53 4,7.02 3,7.07 2,7.23 1,8.05 0,5.00" ], + [ "openhat-016", "0,5.00 1,3.22 2,3.50 3,3.68 4,3.74 5,3.64 6,3.72 7,3.96 8,3.73 9,3.87 10,3.73 11,3.61 12,4.04 13,3.51 14,3.57 15,4.09 16,4.10 17,4.29 18,4.07 19,4.03 20,4.15 21,4.17 22,4.16 23,4.06 24,4.26 25,4.29 26,4.41 27,4.16 28,4.29 29,4.20 30,4.15 31,4.37 32,4.37 33,4.40 34,4.47 35,4.36 36,4.46 37,4.14 38,3.96 39,4.02 39,5.97 38,5.95 37,5.92 36,5.48 35,5.62 34,5.58 33,5.55 32,5.53 31,5.58 30,5.84 29,5.79 28,5.61 27,5.90 26,5.61 25,5.75 24,5.82 23,6.19 22,5.93 21,5.85 20,5.88 19,5.90 18,5.88 17,5.75 16,5.84 15,5.93 14,6.36 13,6.45 12,6.07 11,6.43 10,6.22 9,6.26 8,6.32 7,5.87 6,6.24 5,6.33 4,6.26 3,6.41 2,6.54 1,6.91 0,5.00" ], + [ "openhat-017", "0,4.97 1,4.30 2,2.49 3,3.78 4,3.71 5,3.60 6,3.58 7,3.92 8,3.69 9,3.92 10,3.80 11,3.89 12,4.03 13,4.14 14,4.14 15,4.06 16,4.06 17,4.07 18,4.32 19,4.36 20,4.41 21,4.42 22,4.40 23,4.40 24,4.46 25,4.25 26,4.38 27,4.43 28,4.12 29,4.46 30,4.39 31,4.45 32,4.41 33,4.47 34,4.12 35,4.02 36,4.14 37,4.25 38,4.28 39,4.37 39,5.64 38,5.65 37,5.79 36,5.78 35,5.92 34,6.04 33,5.50 32,5.52 31,5.53 30,5.51 29,5.57 28,6.11 27,5.71 26,5.66 25,5.66 24,5.54 23,5.77 22,5.64 21,5.64 20,5.64 19,5.63 18,5.64 17,5.64 16,5.92 15,5.94 14,5.69 13,5.92 12,6.04 11,5.94 10,6.23 9,6.18 8,6.07 7,5.91 6,6.33 5,6.69 4,6.41 3,6.44 2,6.74 1,5.75 0,4.98" ], + "perc", + [ "perc-001", "0,5.00 1,0.24 2,0.00 3,0.50 4,1.01 5,1.32 6,1.96 7,2.35 8,2.81 9,3.55 10,3.58 11,4.13 12,4.52 13,4.30 14,4.23 15,4.42 16,4.30 17,4.09 18,4.12 19,4.49 20,4.23 21,4.21 22,4.37 23,4.43 24,4.44 25,4.46 26,4.46 27,4.45 28,4.46 29,4.47 30,4.48 31,4.48 32,4.49 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.51 31,5.52 30,5.51 29,5.53 28,5.53 27,5.55 26,5.54 25,5.54 24,5.57 23,5.62 22,5.66 21,5.75 20,5.85 19,5.65 18,5.83 17,5.95 16,5.77 15,5.60 14,5.91 13,5.68 12,5.75 11,5.81 10,6.12 9,6.76 8,6.93 7,7.81 6,7.77 5,8.85 4,9.93 3,9.99 2,9.82 1,9.83 0,5.00" ], + [ "perc-002", "0,5.02 1,0.02 2,2.62 3,3.69 4,3.64 5,3.84 6,4.25 7,4.38 8,4.04 9,4.12 10,4.34 11,4.31 12,4.31 13,4.32 14,4.32 15,4.32 16,4.29 17,4.28 18,4.28 19,4.35 20,4.36 21,4.37 22,4.34 23,4.38 24,4.38 25,4.41 26,4.42 27,4.43 28,4.42 29,4.42 30,4.44 31,4.42 32,4.45 33,4.45 34,4.46 35,4.47 36,4.48 37,4.49 38,4.49 39,4.50 39,5.50 38,5.51 37,5.51 36,5.52 35,5.53 34,5.53 33,5.56 32,5.57 31,5.61 30,5.59 29,5.61 28,5.57 27,5.60 26,5.58 25,5.61 24,5.59 23,5.62 22,5.61 21,5.61 20,5.65 19,5.62 18,5.68 17,5.65 16,5.70 15,5.67 14,5.67 13,5.64 12,5.68 11,5.70 10,5.68 9,5.71 8,5.88 7,5.81 6,5.87 5,6.45 4,6.46 3,6.62 2,7.78 1,8.69 0,5.02" ], + [ "perc-003", "0,5.01 1,0.53 2,1.24 3,2.74 4,3.33 5,4.21 6,4.11 7,4.20 8,4.26 9,4.23 10,4.15 11,4.23 12,4.11 13,4.08 14,4.27 15,4.26 16,4.32 17,4.34 18,4.26 19,4.31 20,4.35 21,4.33 22,4.33 23,4.38 24,4.38 25,4.38 26,4.38 27,4.40 28,4.39 29,4.41 30,4.40 31,4.42 32,4.45 33,4.45 34,4.46 35,4.47 36,4.48 37,4.48 38,4.49 39,4.49 39,5.50 38,5.51 37,5.52 36,5.52 35,5.54 34,5.54 33,5.55 32,5.57 31,5.57 30,5.61 29,5.60 28,5.63 27,5.61 26,5.58 25,5.61 24,5.61 23,5.60 22,5.69 21,5.67 20,5.68 19,5.70 18,5.77 17,5.64 16,5.67 15,5.75 14,5.79 13,5.87 12,5.82 11,5.75 10,5.79 9,5.83 8,5.77 7,5.82 6,5.91 5,5.70 4,6.48 3,8.36 2,8.26 1,9.06 0,4.99" ], + [ "perc-004", "0,5.00 1,1.52 2,0.75 3,0.03 4,1.88 5,3.35 6,3.78 7,4.27 8,4.00 9,4.29 10,4.30 11,4.13 12,4.25 13,4.24 14,4.31 15,4.34 16,4.34 17,4.32 18,4.30 19,4.33 20,4.34 21,4.37 22,4.39 23,4.38 24,4.40 25,4.45 26,4.39 27,4.41 28,4.42 29,4.45 30,4.45 31,4.46 32,4.30 33,4.28 34,4.33 35,4.43 36,4.44 37,4.46 38,4.48 39,4.49 39,5.51 38,5.52 37,5.53 36,5.54 35,5.57 34,5.63 33,5.70 32,5.72 31,5.61 30,5.55 29,5.55 28,5.57 27,5.59 26,5.60 25,5.57 24,5.62 23,5.61 22,5.61 21,5.62 20,5.65 19,5.68 18,5.69 17,5.67 16,5.66 15,5.66 14,5.73 13,5.73 12,5.75 11,5.84 10,5.74 9,5.81 8,5.97 7,5.67 6,6.66 5,6.62 4,8.43 3,9.46 2,9.58 1,8.69 0,5.11" ], + [ "perc-005", "0,5.00 1,3.65 2,4.17 3,2.85 4,0.02 5,0.51 6,1.94 7,2.12 8,3.35 9,3.69 10,4.24 11,4.26 12,4.11 13,4.43 14,4.02 15,4.50 16,4.09 17,4.48 18,4.10 19,4.08 20,4.16 21,4.13 22,4.21 23,4.11 24,4.14 25,4.09 26,4.32 27,4.27 28,4.08 29,4.20 30,4.17 31,4.07 32,4.20 33,4.22 34,4.34 35,4.25 36,4.29 37,4.33 38,4.35 39,4.38 39,5.65 38,5.66 37,5.66 36,5.70 35,5.71 34,5.74 33,5.77 32,5.82 31,5.91 30,5.86 29,5.86 28,6.02 27,5.61 26,5.72 25,5.96 24,5.95 23,5.92 22,5.84 21,5.83 20,5.81 19,5.86 18,5.95 17,5.54 16,5.93 15,5.52 14,6.00 13,5.53 12,5.93 11,5.67 10,5.87 9,6.33 8,6.36 7,6.98 6,8.16 5,9.94 4,9.88 3,6.37 2,5.83 1,6.35 0,5.00" ], + [ "perc-006", "0,6.93 1,1.10 2,0.21 3,1.35 4,2.21 5,3.07 6,2.92 7,3.20 8,3.54 9,3.67 10,3.61 11,3.87 12,3.72 13,3.60 14,3.72 15,3.87 16,3.80 17,3.81 18,4.11 19,4.22 20,4.40 21,4.29 22,3.92 23,4.07 24,4.12 25,4.22 26,4.19 27,4.24 28,4.33 29,4.30 30,4.31 31,4.38 32,4.37 33,4.37 34,4.38 35,4.42 36,4.42 37,4.44 38,4.47 39,4.49 39,5.51 38,5.53 37,5.56 36,5.58 35,5.57 34,5.68 33,5.62 32,5.65 31,5.66 30,5.72 29,5.71 28,5.66 27,5.81 26,5.83 25,5.72 24,6.00 23,5.97 22,5.90 21,5.58 20,5.70 19,5.84 18,5.94 17,6.06 16,6.13 15,6.12 14,6.75 13,6.23 12,6.39 11,6.24 10,5.98 9,6.29 8,6.21 7,6.54 6,6.54 5,7.25 4,7.67 3,9.23 2,8.70 1,9.04 0,4.35" ], + "scratch", + [ "scratch-001", "0,5.01 1,0.02 2,1.20 3,3.23 4,2.93 5,2.05 6,3.18 7,4.42 8,3.38 9,4.18 10,5.13 11,4.32 12,3.76 13,4.18 14,4.62 15,4.97 16,4.89 17,4.42 18,4.20 19,3.74 20,3.67 21,3.67 22,4.63 23,5.30 24,3.93 25,3.30 26,3.55 27,3.22 28,2.03 29,2.01 30,2.12 31,2.51 32,1.54 33,3.96 34,4.72 35,5.16 36,4.45 37,3.51 38,4.34 39,4.41 39,5.50 38,5.43 37,5.36 36,5.70 35,6.44 34,5.90 33,5.15 32,6.82 31,8.06 30,7.47 29,7.85 28,7.47 27,7.87 26,6.47 25,4.94 24,6.18 23,6.50 22,6.02 21,5.63 20,5.10 19,5.34 18,5.49 17,5.91 16,6.02 15,6.08 14,6.00 13,5.62 12,5.36 11,5.44 10,6.18 9,5.90 8,4.79 7,6.14 6,6.70 5,6.47 4,8.13 3,8.22 2,8.08 1,7.71 0,5.01" ], + [ "scratch-002", "0,5.00 1,0.03 2,0.98 3,2.33 4,1.18 5,1.35 6,0.00 7,-0.08 8,0.15 9,0.60 10,1.04 11,0.62 12,0.65 13,1.02 14,0.01 15,-0.05 16,0.43 17,0.72 18,0.00 19,-0.02 20,2.50 21,3.62 22,4.24 23,4.49 24,4.34 25,4.46 26,4.47 27,4.47 28,4.47 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.49 37,4.43 38,4.49 39,4.49 39,5.52 38,5.54 37,5.56 36,5.55 35,5.56 34,5.58 33,5.60 32,5.63 31,5.67 30,5.71 29,5.76 28,5.83 27,5.89 26,5.96 25,6.01 24,6.29 23,5.97 22,5.77 21,5.32 20,5.44 19,10.00 18,10.08 17,10.30 16,10.13 15,10.00 14,10.04 13,10.13 12,10.18 11,10.06 10,10.11 9,10.21 8,10.10 7,10.12 6,10.02 5,10.10 4,10.01 3,10.04 2,10.02 1,10.08 0,5.00" ], + "snap", + [ "snap-001", "0,5.00 1,0.94 2,0.44 3,4.15 4,4.17 5,4.23 6,4.21 7,4.31 8,4.34 9,4.40 10,4.38 11,4.43 12,4.40 13,4.45 14,4.45 15,4.46 16,4.46 17,4.45 18,4.46 19,4.47 20,4.47 21,4.48 22,4.48 23,4.48 24,4.47 25,4.49 26,4.49 27,4.48 28,4.48 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.51 34,5.50 33,5.51 32,5.51 31,5.51 30,5.51 29,5.51 28,5.51 27,5.52 26,5.51 25,5.52 24,5.52 23,5.52 22,5.52 21,5.52 20,5.52 19,5.53 18,5.55 17,5.54 16,5.54 15,5.53 14,5.55 13,5.56 12,5.60 11,5.58 10,5.59 9,5.63 8,5.69 7,5.78 6,5.74 5,5.87 4,5.83 3,5.87 2,9.63 1,6.53 0,5.00" ], + [ "snap-002", "0,5.00 1,4.32 2,4.42 3,4.43 4,3.52 5,4.35 6,4.33 7,4.41 8,4.30 9,2.57 10,3.74 11,4.30 12,4.35 13,4.36 14,4.42 15,4.44 16,4.42 17,4.45 18,4.46 19,4.45 20,4.45 21,4.45 22,4.47 23,4.46 24,4.48 25,4.48 26,4.48 27,4.50 28,4.48 29,4.49 30,4.49 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.51 29,5.52 28,5.51 27,5.51 26,5.52 25,5.52 24,5.52 23,5.54 22,5.54 21,5.54 20,5.55 19,5.56 18,5.54 17,5.56 16,5.62 15,5.59 14,5.59 13,5.65 12,5.62 11,5.70 10,6.35 9,7.47 8,5.76 7,5.67 6,5.63 5,5.55 4,6.50 3,5.60 2,5.61 1,5.64 0,5.00" ], + [ "snap-003", "0,4.95 1,2.70 2,3.27 3,4.05 4,4.23 5,4.24 6,4.29 7,2.62 8,4.11 9,3.21 10,2.38 11,4.07 12,4.43 13,4.02 14,4.17 15,4.25 16,4.38 17,4.38 18,4.35 19,4.41 20,4.39 21,4.37 22,4.43 23,4.41 24,4.44 25,4.45 26,4.42 27,4.47 28,4.45 29,4.45 30,4.47 31,4.48 32,4.48 33,4.48 34,4.48 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.52 32,5.52 31,5.53 30,5.52 29,5.55 28,5.54 27,5.55 26,5.56 25,5.55 24,5.56 23,5.58 22,5.56 21,5.62 20,5.61 19,5.62 18,5.62 17,5.65 16,5.66 15,5.75 14,5.85 13,5.87 12,5.92 11,5.91 10,7.35 9,7.35 8,5.87 7,7.45 6,5.70 5,5.69 4,5.82 3,5.92 2,6.40 1,8.17 0,4.95" ], + "snare", + [ "snare-001", "0,5.00 1,0.03 2,0.06 3,0.62 4,0.27 5,0.65 6,2.44 7,3.42 8,3.97 9,4.42 10,4.07 11,4.14 12,4.25 13,4.22 14,4.33 15,4.30 16,4.36 17,4.38 18,4.40 19,4.41 20,4.41 21,4.42 22,4.44 23,4.45 24,4.46 25,4.46 26,4.46 27,4.48 28,4.48 29,4.47 30,4.49 31,4.48 32,4.48 33,4.49 34,4.49 35,4.49 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.51 37,5.51 36,5.51 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.52 29,5.52 28,5.52 27,5.53 26,5.55 25,5.53 24,5.55 23,5.55 22,5.55 21,5.57 20,5.58 19,5.60 18,5.60 17,5.61 16,5.64 15,5.67 14,5.67 13,5.72 12,5.74 11,5.82 10,6.01 9,5.59 8,5.85 7,6.82 6,7.90 5,10.01 4,9.88 3,9.78 2,9.95 1,9.86 0,5.00" ], + [ "snare-002", "0,5.12 1,-0.08 2,0.04 3,0.04 4,0.03 5,-0.05 6,0.09 7,-0.00 8,-0.18 9,-0.01 10,-0.09 11,0.05 12,0.28 13,0.35 14,1.34 15,1.75 16,2.36 17,2.46 18,3.09 19,3.57 20,4.05 21,4.39 22,4.07 23,4.13 24,4.24 25,4.24 26,4.36 27,4.35 28,4.42 29,4.45 30,4.46 31,4.47 32,4.49 33,4.49 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.51 32,5.51 31,5.53 30,5.54 29,5.56 28,5.59 27,5.64 26,5.61 25,5.78 24,5.72 23,5.82 22,5.97 21,5.90 20,6.05 19,6.38 18,7.69 17,7.37 16,6.72 15,7.48 14,8.41 13,8.84 12,9.90 11,9.98 10,10.00 9,9.89 8,10.16 7,10.15 6,10.13 5,10.12 4,10.16 3,10.10 2,10.05 1,10.20 0,5.06" ], + [ "snare-003", "0,5.00 1,4.10 2,4.27 3,2.35 4,2.59 5,1.37 6,1.00 7,0.51 8,0.88 9,1.38 10,1.21 11,1.16 12,2.40 13,3.13 14,2.67 15,2.47 16,3.34 17,3.54 18,3.64 19,4.45 20,4.32 21,4.50 22,4.50 23,4.50 24,4.50 25,4.50 26,4.50 27,4.50 28,4.50 29,4.50 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.50 28,5.50 27,5.50 26,5.50 25,5.50 24,5.50 23,5.50 22,5.50 21,5.50 20,5.73 19,5.67 18,6.41 17,6.68 16,6.66 15,7.46 14,7.01 13,7.77 12,8.08 11,7.55 10,8.43 9,8.02 8,8.10 7,9.55 6,10.14 5,8.53 4,8.26 3,7.24 2,6.37 1,5.99 0,5.00" ], + [ "snare-004", "0,5.01 1,-1.12 2,0.19 3,0.81 4,0.31 5,0.13 6,-0.33 7,0.00 8,-0.07 9,0.22 10,0.08 11,0.49 12,0.10 13,1.19 14,2.43 15,3.65 16,4.15 17,4.00 18,4.13 19,4.22 20,4.33 21,4.34 22,4.39 23,4.42 24,4.43 25,4.45 26,4.47 27,4.47 28,4.48 29,4.49 30,4.49 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.51 29,5.51 28,5.52 27,5.52 26,5.54 25,5.58 24,5.56 23,5.57 22,5.62 21,5.64 20,5.72 19,5.76 18,5.79 17,5.94 16,6.23 15,6.42 14,7.48 13,8.39 12,8.71 11,9.96 10,9.13 9,9.41 8,9.99 7,9.40 6,10.06 5,9.59 4,9.91 3,10.00 2,9.94 1,11.01 0,5.01" ], + [ "snare-005", "0,5.00 1,0.42 2,0.25 3,0.59 4,0.73 5,2.10 6,3.11 7,4.04 8,4.00 9,4.33 10,4.34 11,4.35 12,4.38 13,4.39 14,4.40 15,4.39 16,4.41 17,4.41 18,4.41 19,4.43 20,4.41 21,4.44 22,4.44 23,4.44 24,4.44 25,4.44 26,4.47 27,4.47 28,4.48 29,4.47 30,4.47 31,4.48 32,4.48 33,4.48 34,4.49 35,4.49 36,4.49 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.51 35,5.51 34,5.51 33,5.52 32,5.52 31,5.52 30,5.52 29,5.52 28,5.52 27,5.52 26,5.53 25,5.55 24,5.54 23,5.56 22,5.58 21,5.57 20,5.58 19,5.61 18,5.60 17,5.59 16,5.61 15,5.59 14,5.60 13,5.61 12,5.60 11,5.63 10,5.67 9,5.68 8,5.85 7,6.22 6,6.27 5,8.12 4,8.91 3,9.46 2,9.70 1,10.02 0,5.00" ], + [ "snare-006", "0,3.62 1,3.46 2,1.18 3,1.89 4,0.71 5,0.91 6,1.22 7,0.45 8,0.72 9,1.37 10,1.55 11,1.04 12,1.40 13,1.20 14,0.55 15,1.62 16,1.47 17,1.35 18,1.73 19,2.61 20,2.46 21,2.83 22,2.83 23,3.40 24,3.67 25,4.18 26,4.40 27,4.59 28,4.11 29,4.16 30,4.26 31,4.30 32,4.30 33,4.38 34,4.43 35,4.41 36,4.41 37,4.43 38,4.43 39,4.44 39,5.58 38,5.58 37,5.58 36,5.58 35,5.57 34,5.60 33,5.59 32,5.66 31,5.70 30,5.65 29,5.87 28,5.94 27,5.64 26,5.87 25,5.74 24,6.28 23,6.24 22,6.94 21,7.11 20,7.58 19,8.18 18,8.65 17,7.85 16,8.28 15,8.06 14,8.39 13,9.18 12,8.54 11,8.48 10,8.94 9,9.42 8,9.16 7,8.45 6,8.86 5,9.85 4,9.17 3,9.81 2,8.38 1,6.65 0,3.62" ], + [ "snare-007", "0,5.16 1,0.45 2,1.10 3,3.59 4,4.19 5,4.13 6,4.12 7,4.22 8,4.29 9,4.26 10,4.18 11,4.17 12,4.28 13,4.29 14,4.33 15,4.33 16,4.29 17,4.39 18,4.38 19,4.38 20,4.40 21,4.39 22,4.44 23,4.44 24,4.45 25,4.44 26,4.46 27,4.46 28,4.47 29,4.47 30,4.48 31,4.48 32,4.49 33,4.49 34,4.49 35,4.49 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.51 34,5.51 33,5.51 32,5.52 31,5.52 30,5.52 29,5.52 28,5.53 27,5.54 26,5.54 25,5.55 24,5.56 23,5.60 22,5.57 21,5.59 20,5.64 19,5.61 18,5.60 17,5.64 16,5.61 15,5.65 14,5.68 13,5.72 12,5.70 11,5.76 10,5.81 9,5.75 8,5.80 7,5.85 6,5.85 5,5.91 4,6.16 3,6.97 2,8.93 1,9.63 0,4.54" ], + [ "snare-008", "0,5.00 1,0.01 2,2.13 3,2.35 4,3.41 5,3.37 6,3.86 7,4.36 8,4.36 9,4.18 10,4.14 11,4.20 12,4.33 13,4.29 14,4.37 15,4.37 16,4.40 17,4.37 18,4.41 19,4.41 20,4.42 21,4.41 22,4.44 23,4.43 24,4.44 25,4.45 26,4.44 27,4.45 28,4.46 29,4.46 30,4.47 31,4.48 32,4.48 33,4.48 34,4.49 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.52 32,5.52 31,5.52 30,5.53 29,5.54 28,5.57 27,5.57 26,5.58 25,5.56 24,5.58 23,5.56 22,5.60 21,5.56 20,5.56 19,5.60 18,5.61 17,5.62 16,5.62 15,5.60 14,5.61 13,5.64 12,5.71 11,5.80 10,5.75 9,5.88 8,5.69 7,5.91 6,6.03 5,6.66 4,6.27 3,8.04 2,8.99 1,9.94 0,5.00" ], + [ "snare-009", "0,1.16 1,0.49 2,1.71 3,2.53 4,3.95 5,4.05 6,4.40 7,4.43 8,4.45 9,4.40 10,4.36 11,4.31 12,4.37 13,4.41 14,4.44 15,4.43 16,4.44 17,4.45 18,4.46 19,4.47 20,4.46 21,4.47 22,4.48 23,4.48 24,4.49 25,4.49 26,4.49 27,4.49 28,4.50 29,4.50 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.50 28,5.50 27,5.50 26,5.51 25,5.51 24,5.51 23,5.52 22,5.52 21,5.52 20,5.53 19,5.55 18,5.54 17,5.56 16,5.56 15,5.57 14,5.60 13,5.61 12,5.60 11,5.63 10,5.64 9,5.60 8,5.55 7,5.57 6,5.58 5,5.92 4,6.40 3,7.26 2,8.84 1,9.46 0,2.13" ], + [ "snare-010", "0,5.43 1,-0.09 2,0.19 3,1.42 4,2.48 5,2.43 6,3.67 7,4.46 8,4.16 9,4.13 10,4.23 11,4.17 12,4.30 13,4.30 14,4.31 15,4.33 16,4.32 17,4.30 18,4.35 19,4.38 20,4.36 21,4.40 22,4.42 23,4.42 24,4.43 25,4.42 26,4.44 27,4.44 28,4.45 29,4.44 30,4.46 31,4.45 32,4.47 33,4.47 34,4.47 35,4.48 36,4.49 37,4.49 38,4.49 39,4.50 39,5.50 38,5.51 37,5.51 36,5.51 35,5.52 34,5.52 33,5.54 32,5.54 31,5.55 30,5.55 29,5.54 28,5.55 27,5.55 26,5.55 25,5.54 24,5.56 23,5.57 22,5.59 21,5.60 20,5.61 19,5.65 18,5.63 17,5.63 16,5.63 15,5.63 14,5.71 13,5.75 12,5.70 11,5.76 10,5.79 9,5.86 8,5.88 7,5.55 6,6.00 5,6.92 4,7.93 3,8.52 2,9.81 1,9.43 0,5.48" ], + [ "snare-011", "0,3.60 1,0.06 2,1.65 3,2.99 4,3.20 5,3.39 6,4.00 7,4.30 8,4.16 9,4.19 10,4.31 11,4.35 12,4.37 13,4.32 14,4.33 15,4.34 16,4.34 17,4.34 18,4.33 19,4.34 20,4.34 21,4.35 22,4.36 23,4.41 24,4.41 25,4.41 26,4.45 27,4.45 28,4.45 29,4.45 30,4.47 31,4.48 32,4.48 33,4.48 34,4.49 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.52 32,5.52 31,5.53 30,5.53 29,5.55 28,5.55 27,5.55 26,5.57 25,5.58 24,5.58 23,5.59 22,5.60 21,5.61 20,5.61 19,5.64 18,5.67 17,5.67 16,5.70 15,5.69 14,5.66 13,5.66 12,5.63 11,5.65 10,5.71 9,5.81 8,5.95 7,5.96 6,6.03 5,6.53 4,6.96 3,7.77 2,7.66 1,9.88 0,3.50" ], + [ "snare-012", "0,5.00 1,0.23 2,0.93 3,1.85 4,1.92 5,3.39 6,4.01 7,4.17 8,4.29 9,4.42 10,4.38 11,4.40 12,4.38 13,4.40 14,4.38 15,4.39 16,4.43 17,4.40 18,4.45 19,4.43 20,4.44 21,4.46 22,4.46 23,4.46 24,4.45 25,4.45 26,4.47 27,4.46 28,4.47 29,4.47 30,4.47 31,4.48 32,4.47 33,4.48 34,4.49 35,4.48 36,4.48 37,4.48 38,4.48 39,4.49 39,5.51 38,5.52 37,5.51 36,5.52 35,5.51 34,5.52 33,5.52 32,5.52 31,5.53 30,5.53 29,5.52 28,5.53 27,5.53 26,5.53 25,5.54 24,5.54 23,5.53 22,5.54 21,5.54 20,5.55 19,5.57 18,5.56 17,5.57 16,5.57 15,5.63 14,5.63 13,5.61 12,5.62 11,5.62 10,5.67 9,5.63 8,5.61 7,5.72 6,5.92 5,6.80 4,7.80 3,7.10 2,8.89 1,9.91 0,5.00" ], + [ "snare-013", "0,4.99 1,0.71 2,0.63 3,2.80 4,2.99 5,3.74 6,4.11 7,4.17 8,4.30 9,4.30 10,4.29 11,4.23 12,4.28 13,4.31 14,4.31 15,4.35 16,4.39 17,4.38 18,4.40 19,4.42 20,4.42 21,4.45 22,4.46 23,4.45 24,4.46 25,4.47 26,4.47 27,4.48 28,4.48 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.50 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.51 29,5.51 28,5.52 27,5.52 26,5.52 25,5.52 24,5.53 23,5.53 22,5.56 21,5.56 20,5.57 19,5.61 18,5.59 17,5.62 16,5.63 15,5.66 14,5.65 13,5.69 12,5.70 11,5.70 10,5.71 9,5.74 8,5.68 7,5.84 6,5.54 5,6.18 4,6.58 3,7.11 2,8.72 1,8.84 0,5.00" ], + [ "snare-014", "0,4.99 1,0.85 2,2.65 3,2.93 4,3.84 5,4.40 6,3.96 7,4.13 8,4.43 9,4.15 10,4.21 11,4.24 12,4.28 13,4.40 14,4.41 15,4.43 16,4.44 17,4.45 18,4.45 19,4.47 20,4.47 21,4.47 22,4.49 23,4.48 24,4.49 25,4.49 26,4.49 27,4.49 28,4.49 29,4.49 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.50 28,5.51 27,5.50 26,5.51 25,5.51 24,5.51 23,5.51 22,5.52 21,5.52 20,5.53 19,5.54 18,5.54 17,5.54 16,5.55 15,5.57 14,5.62 13,5.66 12,5.70 11,5.76 10,5.76 9,5.90 8,5.54 7,5.94 6,5.90 5,5.60 4,6.54 3,6.82 2,7.57 1,8.81 0,5.00" ], + [ "snare-015", "0,4.87 1,2.25 2,0.37 3,1.29 4,2.96 5,4.02 6,3.88 7,4.16 8,3.96 9,4.06 10,4.08 11,4.08 12,4.17 13,4.21 14,4.19 15,4.27 16,4.30 17,4.34 18,4.32 19,4.28 20,4.31 21,4.33 22,4.38 23,4.36 24,4.39 25,4.41 26,4.44 27,4.42 28,4.44 29,4.44 30,4.45 31,4.45 32,4.45 33,4.46 34,4.46 35,4.45 36,4.47 37,4.47 38,4.48 39,4.48 39,5.52 38,5.52 37,5.54 36,5.53 35,5.54 34,5.54 33,5.55 32,5.55 31,5.56 30,5.55 29,5.56 28,5.57 27,5.58 26,5.58 25,5.60 24,5.59 23,5.61 22,5.65 21,5.62 20,5.66 19,5.68 18,5.63 17,5.72 16,5.75 15,5.81 14,5.79 13,5.77 12,5.80 11,5.93 10,5.96 9,5.94 8,5.90 7,5.69 6,6.06 5,6.38 4,6.59 3,8.06 2,9.34 1,7.68 0,4.93" ], + [ "snare-016", "0,5.14 1,4.42 2,0.44 3,0.09 4,-0.10 5,0.91 6,1.16 7,1.00 8,3.14 9,2.20 10,2.47 11,3.61 12,3.04 13,3.47 14,3.77 15,3.80 16,4.14 17,4.11 18,4.05 19,4.30 20,4.06 21,4.46 22,4.66 23,4.29 24,4.30 25,4.34 26,4.27 27,4.40 28,4.39 29,4.43 30,4.44 31,4.47 32,4.48 33,4.49 34,4.49 35,4.48 36,4.49 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.51 35,5.51 34,5.51 33,5.51 32,5.53 31,5.55 30,5.55 29,5.57 28,5.61 27,5.60 26,5.63 25,5.66 24,5.68 23,5.83 22,5.66 21,5.54 20,5.88 19,5.89 18,5.83 17,6.10 16,6.02 15,5.91 14,5.99 13,6.58 12,6.22 11,7.00 10,7.90 9,7.54 8,8.71 7,7.98 6,8.52 5,8.27 4,9.16 3,9.76 2,9.66 1,6.29 0,5.14" ], + [ "snare-017", "0,5.01 1,1.17 2,1.99 3,3.17 4,4.38 5,4.12 6,4.17 7,4.17 8,4.19 9,4.20 10,4.16 11,4.17 12,4.27 13,4.17 14,4.27 15,4.27 16,4.30 17,4.34 18,4.30 19,4.33 20,4.32 21,4.33 22,4.35 23,4.34 24,4.35 25,4.38 26,4.37 27,4.39 28,4.39 29,4.40 30,4.40 31,4.39 32,4.41 33,4.41 34,4.42 35,4.43 36,4.42 37,4.44 38,4.42 39,4.43 39,5.56 38,5.57 37,5.56 36,5.56 35,5.58 34,5.58 33,5.59 32,5.58 31,5.62 30,5.60 29,5.63 28,5.58 27,5.60 26,5.64 25,5.65 24,5.63 23,5.65 22,5.67 21,5.64 20,5.72 19,5.70 18,5.65 17,5.68 16,5.74 15,5.71 14,5.71 13,5.77 12,5.73 11,5.73 10,5.73 9,5.97 8,5.89 7,5.82 6,5.83 5,5.82 4,5.81 3,7.21 2,7.67 1,8.52 0,5.01" ], + [ "snare-018", "0,5.00 1,4.01 2,1.40 3,3.25 4,2.70 5,2.84 6,3.43 7,2.59 8,3.40 9,2.34 10,3.71 11,2.79 12,2.66 13,3.04 14,2.35 15,3.12 16,2.86 17,3.50 18,2.90 19,2.36 20,3.07 21,2.34 22,3.33 23,3.27 24,3.86 25,3.31 26,3.49 27,3.57 28,3.38 29,3.64 30,3.79 31,3.83 32,3.61 33,4.31 34,3.94 35,4.01 36,4.25 37,3.97 38,4.30 39,4.36 39,5.58 38,5.81 37,5.93 36,5.73 35,5.81 34,6.05 33,6.30 32,6.01 31,6.92 30,7.20 29,6.64 28,6.78 27,7.00 26,7.32 25,6.10 24,7.27 23,6.92 22,7.20 21,6.59 20,7.46 19,8.00 18,6.31 17,7.73 16,7.22 15,8.20 14,7.16 13,8.25 12,8.17 11,5.75 10,7.94 9,7.09 8,8.22 7,6.20 6,7.89 5,7.38 4,6.82 3,6.90 2,7.37 1,7.07 0,5.00" ], + [ "snare-019", "0,5.00 1,2.79 2,2.53 3,2.45 4,3.26 5,3.22 6,3.50 7,4.05 8,4.23 9,4.28 10,4.05 11,4.03 12,4.15 13,4.23 14,4.24 15,4.37 16,4.39 17,4.35 18,4.40 19,4.44 20,4.44 21,4.45 22,4.46 23,4.47 24,4.46 25,4.48 26,4.48 27,4.48 28,4.49 29,4.49 30,4.49 31,4.49 32,4.49 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.51 31,5.51 30,5.51 29,5.51 28,5.51 27,5.52 26,5.52 25,5.52 24,5.53 23,5.54 22,5.53 21,5.54 20,5.55 19,5.57 18,5.59 17,5.61 16,5.62 15,5.68 14,5.70 13,5.75 12,5.80 11,5.90 10,6.01 9,5.76 8,5.80 7,5.93 6,6.28 5,6.28 4,6.94 3,7.50 2,7.47 1,7.22 0,5.00" ], + [ "snare-020", "0,5.00 1,0.10 2,0.65 3,1.73 4,3.07 5,3.14 6,2.88 7,4.17 8,2.96 9,4.00 10,4.56 11,4.35 12,3.99 13,4.48 14,4.25 15,4.42 16,4.48 17,4.03 18,4.14 19,4.14 20,4.32 21,4.33 22,4.43 23,4.36 24,4.46 25,4.44 26,4.47 27,4.45 28,4.46 29,4.46 30,4.47 31,4.49 32,4.48 33,4.48 34,4.49 35,4.49 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.52 32,5.53 31,5.52 30,5.55 29,5.54 28,5.55 27,5.52 26,5.59 25,5.58 24,5.65 23,5.64 22,5.67 21,5.66 20,5.75 19,5.85 18,5.86 17,5.78 16,5.54 15,5.60 14,5.99 13,5.52 12,5.85 11,5.85 10,5.63 9,6.06 8,6.77 7,6.54 6,6.77 5,7.66 4,8.76 3,9.46 2,10.00 1,10.00 0,5.00" ], + [ "snare-021", "0,5.00 1,1.28 2,1.69 3,2.19 4,2.72 5,3.82 6,4.59 7,4.77 8,4.74 9,4.19 10,3.36 11,3.30 12,3.81 13,4.39 14,5.14 15,4.91 16,4.26 17,3.59 18,3.50 19,3.67 20,4.36 21,4.94 22,4.86 23,4.43 24,4.07 25,3.91 26,3.90 27,4.08 28,4.49 29,4.82 30,4.63 31,4.48 32,4.45 33,4.46 34,4.48 35,4.49 36,4.50 37,4.50 38,4.49 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.49 33,5.48 32,5.48 31,5.63 30,5.84 29,5.90 28,5.85 27,5.49 26,5.12 25,5.12 24,5.43 23,5.93 22,6.26 21,6.33 20,6.04 19,5.40 18,4.77 17,5.30 16,6.02 15,6.51 14,6.61 13,6.27 12,5.76 11,5.04 10,5.14 9,5.39 8,6.36 7,6.91 6,6.53 5,6.29 4,6.09 3,7.02 2,8.85 1,9.01 0,5.00" ], + [ "snare-022", "0,5.00 1,2.50 2,2.83 3,2.91 4,3.44 5,3.78 6,4.25 7,4.16 8,4.41 9,4.42 10,4.06 11,4.03 12,4.21 13,4.34 14,4.23 15,4.18 16,4.29 17,4.30 18,4.40 19,4.43 20,4.43 21,4.45 22,4.46 23,4.46 24,4.46 25,4.46 26,4.47 27,4.47 28,4.47 29,4.48 30,4.49 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.51 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.52 29,5.53 28,5.53 27,5.53 26,5.54 25,5.53 24,5.55 23,5.54 22,5.55 21,5.55 20,5.56 19,5.58 18,5.63 17,5.72 16,5.69 15,5.82 14,5.86 13,5.74 12,5.80 11,5.73 10,5.97 9,5.60 8,5.65 7,5.61 6,5.91 5,6.37 4,6.38 3,7.25 2,7.02 1,8.21 0,5.00" ], + [ "snare-023", "0,5.00 1,3.72 2,1.47 3,2.59 4,2.57 5,2.83 6,3.57 7,3.03 8,3.92 9,3.43 10,3.08 11,3.43 12,3.44 13,4.11 14,4.35 15,4.08 16,4.56 17,4.08 18,4.21 19,4.17 20,4.25 21,4.26 22,4.29 23,4.35 24,4.34 25,4.37 26,4.40 27,4.45 28,4.31 29,4.38 30,4.31 31,4.43 32,4.39 33,4.42 34,4.42 35,4.47 36,4.48 37,4.49 38,4.49 39,4.50 39,5.50 38,5.51 37,5.52 36,5.52 35,5.52 34,5.55 33,5.60 32,5.56 31,5.64 30,5.58 29,5.68 28,5.60 27,5.62 26,5.56 25,5.63 24,5.67 23,5.67 22,5.65 21,5.72 20,5.74 19,5.79 18,5.93 17,5.83 16,5.63 15,5.58 14,6.06 13,5.78 12,5.58 11,6.78 10,6.84 9,6.53 8,6.94 7,5.71 6,7.19 5,6.70 4,7.03 3,8.19 2,7.78 1,7.92 0,5.00" ], + [ "snare-024", "0,5.00 1,2.81 2,-0.02 3,0.22 4,0.97 5,0.38 6,0.89 7,1.99 8,1.91 9,2.35 10,2.10 11,1.26 12,3.03 13,2.94 14,3.04 15,2.97 16,2.50 17,3.37 18,2.56 19,2.64 20,2.54 21,2.52 22,3.13 23,3.85 24,3.52 25,3.43 26,3.55 27,3.76 28,3.68 29,4.06 30,4.47 31,4.09 32,4.23 33,4.14 34,4.29 35,4.34 36,4.40 37,4.44 38,4.47 39,4.49 39,5.50 38,5.49 37,5.47 36,5.45 35,5.42 34,5.47 33,5.53 32,5.77 31,6.01 30,5.52 29,5.83 28,6.30 27,6.32 26,6.54 25,6.92 24,6.87 23,7.24 22,6.92 21,7.35 20,7.69 19,7.07 18,7.49 17,7.16 16,7.72 15,7.47 14,7.85 13,7.70 12,8.37 11,7.62 10,8.71 9,7.26 8,7.90 7,8.68 6,7.37 5,8.02 4,7.85 3,9.34 2,10.07 1,5.02 0,5.00" ], + [ "snare-025", "0,5.00 1,2.03 2,2.14 3,2.47 4,3.04 5,3.48 6,3.59 7,3.80 8,3.90 9,4.17 10,4.36 11,4.45 12,4.48 13,4.23 14,4.30 15,4.27 16,4.27 17,4.39 18,4.42 19,4.42 20,4.47 21,4.45 22,4.46 23,4.48 24,4.48 25,4.48 26,4.47 27,4.47 28,4.48 29,4.48 30,4.48 31,4.49 32,4.49 33,4.49 34,4.49 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.51 32,5.51 31,5.51 30,5.51 29,5.51 28,5.50 27,5.50 26,5.51 25,5.52 24,5.54 23,5.53 22,5.53 21,5.52 20,5.55 19,5.55 18,5.55 17,5.55 16,5.67 15,5.68 14,5.79 13,5.95 12,5.52 11,5.51 10,5.97 9,5.82 8,6.13 7,6.07 6,6.52 5,6.67 4,7.25 3,7.54 2,7.88 1,8.13 0,5.00" ], + [ "snare-026", "0,5.00 1,0.62 2,1.24 3,1.04 4,0.95 5,1.62 6,1.62 7,1.60 8,2.39 9,2.96 10,2.32 11,2.57 12,4.08 13,3.16 14,3.48 15,4.04 16,3.60 17,3.06 18,3.61 19,4.10 20,4.10 21,4.14 22,4.25 23,4.26 24,3.96 25,4.34 26,3.91 27,4.08 28,4.06 29,4.14 30,4.15 31,4.18 32,4.26 33,4.34 34,4.34 35,4.39 36,4.42 37,4.44 38,4.49 39,4.50 39,5.50 38,5.50 37,5.54 36,5.57 35,5.57 34,5.59 33,5.61 32,5.61 31,5.64 30,5.69 29,5.68 28,5.72 27,5.76 26,5.73 25,5.37 24,5.96 23,5.39 22,5.51 21,5.60 20,5.56 19,5.77 18,5.87 17,5.92 16,6.02 15,6.12 14,6.14 13,6.41 12,6.50 11,6.66 10,6.68 9,7.14 8,7.24 7,6.91 6,7.73 5,7.96 4,8.19 3,8.36 2,9.27 1,5.08 0,5.00" ], + [ "snare-027", "0,5.00 1,2.08 2,-0.02 3,-0.00 4,-0.00 5,2.86 6,1.13 7,0.29 8,2.89 9,0.88 10,1.19 11,2.44 12,2.11 13,1.94 14,2.96 15,2.65 16,2.73 17,3.11 18,3.06 19,3.23 20,3.53 21,3.94 22,3.10 23,3.79 24,4.14 25,3.77 26,4.21 27,4.25 28,4.42 29,4.47 30,4.13 31,4.15 32,4.23 33,4.21 34,4.24 35,4.32 36,4.31 37,4.36 38,4.37 39,4.40 39,5.60 38,5.61 37,5.68 36,5.66 35,5.68 34,5.74 33,5.79 32,5.74 31,5.94 30,5.78 29,5.61 28,5.57 27,5.74 26,5.67 25,6.06 24,6.06 23,6.38 22,6.32 21,6.43 20,6.52 19,6.06 18,7.01 17,7.18 16,6.85 15,7.12 14,7.20 13,6.97 12,8.03 11,8.35 10,8.86 9,9.64 8,8.93 7,8.78 6,7.80 5,9.86 4,10.01 3,9.41 2,9.94 1,9.81 0,5.00" ], + [ "snare-028", "0,4.97 1,-0.01 2,0.70 3,0.90 4,2.61 5,1.98 6,2.42 7,3.34 8,2.66 9,2.93 10,3.24 11,2.81 12,3.65 13,3.60 14,3.73 15,3.83 16,3.75 17,3.62 18,3.95 19,3.68 20,3.74 21,4.00 22,4.18 23,4.25 24,4.34 25,4.12 26,4.34 27,4.10 28,4.23 29,3.92 30,4.20 31,3.86 32,4.08 33,4.10 34,4.12 35,4.20 36,4.16 37,4.24 38,4.17 39,4.37 39,5.57 38,5.62 37,5.61 36,5.62 35,5.61 34,5.66 33,5.74 32,5.73 31,5.75 30,5.26 29,5.87 28,5.35 27,5.45 26,5.57 25,5.49 24,5.66 23,5.69 22,5.79 21,5.72 20,6.12 19,5.84 18,6.10 17,6.26 16,6.34 15,6.50 14,6.64 13,7.10 12,6.75 11,7.32 10,7.32 9,7.54 8,7.74 7,7.53 6,7.75 5,8.90 4,7.96 3,8.96 2,8.08 1,8.47 0,4.97" ], + [ "snare-029", "0,5.00 1,2.05 2,1.61 3,2.10 4,2.04 5,2.38 6,1.69 7,2.01 8,2.59 9,2.62 10,2.85 11,1.22 12,2.82 13,3.13 14,3.22 15,2.68 16,2.35 17,2.96 18,2.32 19,3.34 20,3.01 21,3.23 22,3.79 23,3.79 24,3.54 25,3.71 26,3.82 27,3.92 28,4.01 29,4.22 30,4.25 31,4.13 32,4.43 33,4.00 34,4.13 35,4.09 36,4.29 37,4.34 38,4.41 39,4.49 39,5.50 38,5.59 37,5.66 36,5.73 35,5.94 34,5.94 33,5.94 32,5.55 31,5.78 30,5.86 29,5.86 28,5.82 27,6.06 26,5.99 25,6.24 24,7.05 23,6.40 22,6.10 21,6.81 20,6.78 19,6.20 18,7.08 17,6.85 16,7.36 15,7.09 14,7.43 13,6.90 12,7.83 11,7.48 10,8.57 9,7.47 8,8.61 7,8.51 6,8.49 5,8.64 4,8.02 3,9.97 2,8.40 1,7.94 0,5.00" ], + [ "snare-030", "0,5.00 1,1.86 2,1.99 3,2.21 4,2.08 5,1.99 6,2.08 7,1.82 8,1.74 9,2.49 10,3.12 11,3.51 12,4.07 13,4.08 14,4.11 15,4.23 16,4.24 17,4.25 18,4.50 19,4.00 20,4.07 21,4.09 22,4.18 23,4.30 24,4.38 25,4.39 26,4.39 27,4.42 28,4.40 29,4.41 30,4.41 31,4.43 32,4.42 33,4.44 34,4.44 35,4.44 36,4.45 37,4.46 38,4.46 39,4.47 39,5.53 38,5.54 37,5.55 36,5.55 35,5.56 34,5.56 33,5.57 32,5.57 31,5.57 30,5.58 29,5.58 28,5.60 27,5.59 26,5.62 25,5.61 24,5.62 23,5.69 22,5.83 21,5.86 20,5.95 19,5.98 18,5.51 17,5.61 16,5.67 15,5.72 14,5.82 13,5.93 12,5.94 11,6.43 10,7.29 9,7.56 8,7.67 7,8.26 6,8.46 5,8.34 4,7.91 3,8.01 2,8.19 1,8.81 0,5.00" ], + "tom", + [ "tom-001", "0,5.00 1,2.80 2,2.92 3,3.06 4,3.18 5,3.25 6,3.37 7,3.49 8,3.60 9,3.66 10,3.76 11,3.87 12,3.92 13,4.01 14,4.11 15,4.15 16,4.26 17,4.36 18,4.40 19,4.49 20,4.04 21,4.12 22,4.18 23,4.24 24,4.28 25,4.30 26,4.34 27,4.35 28,4.37 29,4.38 30,4.39 31,4.41 32,4.42 33,4.44 34,4.45 35,4.46 36,4.47 37,4.48 38,4.49 39,4.50 39,5.50 38,5.51 37,5.52 36,5.53 35,5.54 34,5.55 33,5.57 32,5.57 31,5.59 30,5.60 29,5.62 28,5.63 27,5.64 26,5.67 25,5.69 24,5.73 23,5.75 22,5.81 21,5.90 20,5.94 19,5.53 18,5.57 17,5.67 16,5.72 15,5.82 14,5.91 13,5.96 12,6.06 11,6.16 10,6.21 9,6.32 8,6.43 7,6.54 6,6.60 5,6.72 4,6.85 3,6.97 2,7.10 1,7.22 0,5.00" ], + [ "tom-002", "0,5.00 1,1.93 2,2.13 3,2.32 4,2.47 5,2.67 6,2.81 7,2.96 8,3.12 9,3.33 10,3.47 11,3.61 12,3.73 13,3.86 14,3.98 15,4.10 16,4.22 17,4.26 18,4.33 19,4.40 20,4.47 21,4.03 22,4.06 23,4.12 24,4.18 25,4.22 26,4.23 27,4.26 28,4.28 29,4.31 30,4.33 31,4.35 32,4.37 33,4.39 34,4.40 35,4.42 36,4.44 37,4.46 38,4.47 39,4.48 39,5.52 38,5.54 37,5.55 36,5.56 35,5.58 34,5.59 33,5.62 32,5.63 31,5.64 30,5.67 29,5.70 28,5.71 27,5.74 26,5.76 25,5.79 24,5.84 23,5.87 22,5.93 21,5.99 20,5.55 19,5.58 18,5.65 17,5.72 16,5.81 15,5.93 14,6.04 13,6.17 12,6.30 11,6.43 10,6.56 9,6.70 8,6.85 7,7.00 6,7.15 5,7.37 4,7.51 3,7.70 2,7.91 1,8.12 0,5.00" ], + [ "tom-003", "0,5.01 1,-0.00 2,2.23 3,2.89 4,3.05 5,4.26 6,3.78 7,3.84 8,4.33 9,4.47 10,4.30 11,4.39 12,4.23 13,4.13 14,4.15 15,4.23 16,4.36 17,4.31 18,4.31 19,4.38 20,4.40 21,4.40 22,4.41 23,4.46 24,4.44 25,4.44 26,4.46 27,4.48 28,4.47 29,4.47 30,4.48 31,4.48 32,4.48 33,4.48 34,4.49 35,4.49 36,4.49 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.51 35,5.51 34,5.51 33,5.51 32,5.52 31,5.51 30,5.52 29,5.53 28,5.53 27,5.52 26,5.53 25,5.56 24,5.56 23,5.55 22,5.59 21,5.60 20,5.58 19,5.61 18,5.68 17,5.70 16,5.63 15,5.77 14,5.85 13,5.84 12,5.83 11,5.66 10,5.70 9,5.52 8,5.78 7,6.34 6,6.19 5,5.95 4,7.41 3,6.94 2,7.99 1,10.00 0,5.01" ], + [ "tom-004", "0,5.00 1,2.46 2,3.11 3,4.08 4,4.32 5,4.41 6,4.01 7,4.06 8,4.15 9,4.20 10,4.22 11,4.28 12,4.33 13,4.36 14,4.39 15,4.41 16,4.42 17,4.43 18,4.44 19,4.45 20,4.46 21,4.46 22,4.47 23,4.47 24,4.48 25,4.48 26,4.48 27,4.49 28,4.49 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.51 31,5.51 30,5.51 29,5.51 28,5.51 27,5.51 26,5.52 25,5.52 24,5.52 23,5.53 22,5.53 21,5.53 20,5.54 19,5.55 18,5.55 17,5.56 16,5.58 15,5.59 14,5.61 13,5.63 12,5.68 11,5.71 10,5.76 9,5.82 8,5.87 7,5.95 6,6.00 5,5.54 4,5.65 3,5.96 2,6.94 1,7.82 0,5.00" ], + [ "tom-005", "0,5.00 1,2.68 2,-0.01 3,-0.01 4,-0.01 5,-0.01 6,0.14 7,0.51 8,0.90 9,1.22 10,1.59 11,1.86 12,2.30 13,2.58 14,2.80 15,2.93 16,3.13 17,3.44 18,3.58 19,3.81 20,3.91 21,3.85 22,4.08 23,4.22 24,4.29 25,4.36 26,3.95 27,4.03 28,4.18 29,4.33 30,4.25 31,4.29 32,4.32 33,4.38 34,4.41 35,4.41 36,4.41 37,4.40 38,4.46 39,4.48 39,5.51 38,5.53 37,5.55 36,5.55 35,5.59 34,5.64 33,5.64 32,5.65 31,5.68 30,5.78 29,5.89 28,5.84 27,5.84 26,5.92 25,5.54 24,5.63 23,5.77 22,5.91 21,5.91 20,6.08 19,6.39 18,6.50 17,6.68 16,6.78 15,7.05 14,7.28 13,7.52 12,7.74 11,8.05 10,8.42 9,8.69 8,8.95 7,9.38 6,9.79 5,10.01 4,10.00 3,10.01 2,10.02 1,8.71 0,5.00" ], + [ "tom-006", "0,5.00 1,1.18 2,0.76 3,-0.01 4,-0.01 5,0.20 6,0.20 7,0.97 8,1.57 9,2.01 10,2.01 11,2.40 12,2.83 13,3.15 14,3.12 15,3.33 16,3.60 17,3.86 18,3.81 19,4.03 20,4.13 21,4.39 22,4.32 23,4.43 24,4.04 25,4.16 26,4.14 27,4.21 28,4.29 29,4.33 30,4.37 31,4.44 32,4.39 33,4.40 34,4.47 35,4.46 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.52 35,5.54 34,5.54 33,5.55 32,5.57 31,5.64 30,5.65 29,5.68 28,5.67 27,5.73 26,5.81 25,5.87 24,5.98 23,5.44 22,5.67 21,5.75 20,5.90 19,5.81 18,6.08 17,6.18 16,6.47 15,6.44 14,6.67 13,7.14 12,7.41 11,7.41 10,7.85 9,8.38 8,8.96 7,8.96 6,9.48 5,10.00 4,10.00 3,10.00 2,10.00 1,5.02 0,5.00" ], + [ "tom-007", "0,5.00 1,0.38 2,0.37 3,0.28 4,0.88 5,1.59 6,1.10 7,1.68 8,2.09 9,2.09 10,2.26 11,2.84 12,3.15 13,2.97 14,3.17 15,3.17 16,3.43 17,3.59 18,3.67 19,3.75 20,3.84 21,3.96 22,3.94 23,4.06 24,4.11 25,4.13 26,4.22 27,4.26 28,4.28 29,4.39 30,4.42 31,4.45 32,4.48 33,4.04 34,4.06 35,4.13 36,4.15 37,4.21 38,4.21 39,4.29 39,5.73 38,5.78 37,5.85 36,5.88 35,5.91 34,5.92 33,6.02 32,5.57 31,5.61 30,5.61 29,5.66 28,5.78 27,5.80 26,5.83 25,5.94 24,5.99 23,6.05 22,5.97 21,6.11 20,6.17 19,6.35 18,6.18 17,6.30 16,6.46 15,6.54 14,6.69 13,6.79 12,6.89 11,7.13 10,7.03 9,7.51 8,7.65 7,7.77 6,8.31 5,8.57 4,9.29 3,9.36 2,9.38 1,9.47 0,5.00" ], + [ "tom-008", "0,5.00 1,1.08 2,1.48 3,1.28 4,2.19 5,1.83 6,2.75 7,3.32 8,1.65 9,3.40 10,2.19 11,2.37 12,3.60 13,2.64 14,4.13 15,3.77 16,3.21 17,4.42 18,3.98 19,3.71 20,4.25 21,4.15 22,4.21 23,4.00 24,4.47 25,4.33 26,4.11 27,4.10 28,4.38 29,4.22 30,4.22 31,4.42 32,4.32 33,4.32 34,4.38 35,4.38 36,4.39 37,4.43 38,4.44 39,4.49 39,5.53 38,5.56 37,5.53 36,5.56 35,5.62 34,5.55 33,5.60 32,5.67 31,5.64 30,5.69 29,5.78 28,5.73 27,5.88 26,5.89 25,5.80 24,5.50 23,5.72 22,5.52 21,5.80 20,5.27 19,5.87 18,6.17 17,6.28 16,6.34 15,6.61 14,6.84 13,7.03 12,5.84 11,7.40 10,7.49 9,5.73 8,7.81 7,7.65 6,8.33 5,8.16 4,6.53 3,8.15 2,7.81 1,8.49 0,5.00" ], + [ "tom-009", "0,5.00 1,0.84 2,2.09 3,3.61 4,3.94 5,3.99 6,4.32 7,4.03 8,4.13 9,4.18 10,4.26 11,4.31 12,4.34 13,4.36 14,4.39 15,4.42 16,4.43 17,4.45 18,4.45 19,4.46 20,4.46 21,4.47 22,4.47 23,4.48 24,4.48 25,4.48 26,4.49 27,4.49 28,4.49 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.51 32,5.51 31,5.51 30,5.51 29,5.51 28,5.51 27,5.51 26,5.52 25,5.52 24,5.52 23,5.52 22,5.53 21,5.53 20,5.54 19,5.54 18,5.55 17,5.56 16,5.58 15,5.59 14,5.61 13,5.64 12,5.67 11,5.71 10,5.76 9,5.82 8,5.91 7,6.00 6,5.71 5,5.86 4,6.15 3,6.62 2,7.51 1,9.15 0,5.00" ], + [ "tom-010", "0,4.99 1,0.49 2,1.82 3,2.89 4,3.53 5,3.97 6,4.26 7,4.43 8,4.06 9,4.11 10,4.20 11,4.26 12,4.30 13,4.33 14,4.36 15,4.38 16,4.40 17,4.41 18,4.43 19,4.44 20,4.45 21,4.46 22,4.46 23,4.47 24,4.47 25,4.48 26,4.48 27,4.48 28,4.48 29,4.49 30,4.49 31,4.49 32,4.49 33,4.49 34,4.49 35,4.49 36,4.49 37,4.49 38,4.50 39,4.50 39,5.50 38,5.50 37,5.51 36,5.51 35,5.51 34,5.51 33,5.51 32,5.51 31,5.51 30,5.51 29,5.51 28,5.52 27,5.52 26,5.52 25,5.53 24,5.53 23,5.53 22,5.54 21,5.54 20,5.55 19,5.56 18,5.57 17,5.59 16,5.60 15,5.63 14,5.64 13,5.69 12,5.70 11,5.76 10,5.85 9,5.88 8,5.99 7,5.66 6,5.73 5,6.15 4,6.13 3,7.09 2,8.08 1,9.32 0,4.99" ], + [ "tom-011", "0,5.00 1,2.70 2,2.70 3,2.67 4,2.97 5,3.36 6,3.09 7,3.38 8,3.71 9,3.58 10,3.68 11,3.95 12,3.97 13,4.02 14,4.11 15,4.12 16,4.30 17,4.25 18,4.40 19,4.46 20,4.01 21,4.02 22,4.09 23,4.12 24,4.18 25,4.20 26,4.25 27,4.25 28,4.28 29,4.30 30,4.34 31,4.34 32,4.36 33,4.37 34,4.39 35,4.40 36,4.41 37,4.41 38,4.43 39,4.44 39,5.57 38,5.57 37,5.59 36,5.60 35,5.61 34,5.64 33,5.63 32,5.65 31,5.67 30,5.69 29,5.70 28,5.75 27,5.76 26,5.79 25,5.83 24,5.86 23,5.89 22,5.94 21,5.92 20,5.99 19,5.59 18,5.59 17,5.59 16,5.70 15,5.75 14,5.82 13,5.87 12,5.92 11,6.03 10,6.00 9,6.22 8,6.27 7,6.35 6,6.60 5,6.75 4,7.12 3,7.15 2,7.18 1,7.23 0,5.00" ], + [ "tom-012", "0,5.00 1,3.67 2,-0.00 3,-0.00 4,-0.00 5,0.13 6,0.51 7,0.92 8,1.32 9,1.66 10,1.95 11,2.00 12,2.31 13,2.59 14,2.86 15,3.09 16,3.33 17,3.52 18,3.69 19,3.86 20,4.02 21,4.16 22,4.25 23,4.30 24,4.34 25,4.45 26,4.01 27,4.08 28,4.13 29,4.20 30,4.23 31,4.26 32,4.30 33,4.33 34,4.35 35,4.37 36,4.38 37,4.39 38,4.42 39,4.46 39,5.53 38,5.58 37,5.60 36,5.64 35,5.67 34,5.70 33,5.73 32,5.76 31,5.80 30,5.83 29,5.83 28,5.89 27,5.93 26,6.00 25,5.57 24,5.64 23,5.73 22,5.81 21,5.93 20,6.07 19,6.20 18,6.36 17,6.51 16,6.54 15,6.74 14,6.95 13,7.19 12,7.46 11,7.75 10,8.05 9,8.40 8,8.79 7,9.20 6,9.67 5,10.00 4,10.00 3,10.00 2,10.00 1,10.01 0,5.00" ], + [ "tom-013", "0,5.00 1,1.22 2,1.49 3,1.81 4,1.95 5,2.23 6,2.49 7,2.74 8,2.85 9,3.08 10,3.28 11,3.38 12,3.56 13,3.65 14,3.81 15,3.96 16,4.05 17,4.20 18,4.28 19,4.41 20,4.47 21,4.08 22,4.14 23,4.23 24,4.26 25,4.31 26,4.33 27,4.37 28,4.38 29,4.41 30,4.42 31,4.42 32,4.44 33,4.45 34,4.46 35,4.47 36,4.47 37,4.48 38,4.49 39,4.49 39,5.51 38,5.51 37,5.52 36,5.52 35,5.53 34,5.54 33,5.55 32,5.56 31,5.57 30,5.59 29,5.60 28,5.61 27,5.64 26,5.66 25,5.70 24,5.73 23,5.79 22,5.84 21,5.94 20,5.50 19,5.62 18,5.69 17,5.83 16,5.91 15,6.07 14,6.15 13,6.31 12,6.48 11,6.57 10,6.77 9,6.98 8,7.09 7,7.33 6,7.58 5,7.71 4,7.98 3,8.25 2,8.56 1,8.88 0,5.00" ], + [ "tom-014", "0,5.00 1,0.31 2,2.04 3,2.29 4,2.72 5,2.89 6,3.06 7,3.22 8,3.37 9,3.68 10,3.80 11,3.93 12,4.04 13,4.14 14,4.22 15,4.30 16,4.39 17,4.44 18,4.00 19,4.05 20,4.10 21,4.14 22,4.17 23,4.20 24,4.23 25,4.26 26,4.28 27,4.31 28,4.33 29,4.35 30,4.36 31,4.38 32,4.40 33,4.41 34,4.43 35,4.45 36,4.47 37,4.48 38,4.48 39,4.50 39,5.50 38,5.51 37,5.52 36,5.53 35,5.54 34,5.56 33,5.58 32,5.60 31,5.62 30,5.63 29,5.65 28,5.67 27,5.68 26,5.70 25,5.73 24,5.75 23,5.78 22,5.81 21,5.84 20,5.88 19,5.92 18,5.97 17,5.53 16,5.60 15,5.66 14,5.75 13,5.89 12,6.05 11,6.18 10,6.31 9,6.43 8,6.61 7,6.79 6,6.95 5,7.25 4,7.40 3,7.54 2,7.71 1,9.86 0,5.00" ], + [ "tom-015", "0,4.99 1,-0.02 2,0.00 3,1.89 4,2.73 5,4.20 6,3.71 7,3.66 8,4.24 9,4.23 10,4.54 11,4.10 12,4.10 13,4.28 14,4.26 15,4.34 16,4.35 17,4.36 18,4.41 19,4.43 20,4.40 21,4.44 22,4.45 23,4.45 24,4.45 25,4.46 26,4.48 27,4.48 28,4.48 29,4.48 30,4.48 31,4.48 32,4.49 33,4.49 34,4.49 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.51 32,5.52 31,5.52 30,5.51 29,5.52 28,5.52 27,5.51 26,5.52 25,5.52 24,5.55 23,5.56 22,5.56 21,5.59 20,5.59 19,5.57 18,5.59 17,5.61 16,5.75 15,5.78 14,5.85 13,5.62 12,5.96 11,5.93 10,5.71 9,5.72 8,5.79 7,6.27 6,5.86 5,6.18 4,6.77 3,7.19 2,9.34 1,10.02 0,4.98" ], + [ "tom-016", "0,5.00 1,2.27 2,2.28 3,2.25 4,2.64 5,2.76 6,3.22 7,3.10 8,3.34 9,3.45 10,3.78 11,3.77 12,3.85 13,4.06 14,3.96 15,3.96 16,4.11 17,4.20 18,4.32 19,4.29 20,4.34 21,4.40 22,4.45 23,4.49 24,4.06 25,4.07 26,4.12 27,4.16 28,4.20 29,4.25 30,4.25 31,4.27 32,4.29 33,4.31 34,4.33 35,4.35 36,4.36 37,4.38 38,4.40 39,4.44 39,5.56 38,5.59 37,5.62 36,5.65 35,5.66 34,5.67 33,5.72 32,5.71 31,5.75 30,5.77 29,5.80 28,5.80 27,5.88 26,5.89 25,5.94 24,5.99 23,5.53 22,5.57 21,5.63 20,5.66 19,5.64 18,5.77 17,5.74 16,5.82 15,5.88 14,5.87 13,6.01 12,6.08 11,6.09 10,6.21 9,6.42 8,6.33 7,6.57 6,6.89 5,7.04 4,7.47 3,7.52 2,7.58 1,7.64 0,5.00" ], + [ "tom-017", "0,5.00 1,-0.00 2,0.95 3,1.78 4,2.23 5,2.51 6,2.73 7,3.09 8,3.20 9,3.36 10,3.48 11,3.75 12,3.91 13,4.07 14,4.21 15,4.36 16,4.47 17,4.54 18,4.09 19,4.14 20,4.18 21,4.23 22,4.26 23,4.29 24,4.32 25,4.34 26,4.36 27,4.38 28,4.39 29,4.41 30,4.42 31,4.43 32,4.44 33,4.45 34,4.45 35,4.46 36,4.46 37,4.47 38,4.47 39,4.48 39,5.53 38,5.54 37,5.54 36,5.55 35,5.55 34,5.56 33,5.57 32,5.58 31,5.59 30,5.60 29,5.62 28,5.63 27,5.65 26,5.67 25,5.70 24,5.73 23,5.76 22,5.80 21,5.84 20,5.89 19,5.95 18,6.01 17,5.59 16,5.68 15,5.80 14,5.93 13,6.11 12,6.34 11,6.58 10,6.81 9,7.12 8,7.18 7,7.50 6,7.74 5,8.08 4,8.27 3,8.27 2,9.46 1,9.29 0,5.00" ], + "triangle", + [ "triangle-001", "0,5.00 1,0.17 2,2.02 3,2.44 4,2.95 5,3.09 6,3.89 7,4.03 8,4.32 9,4.12 10,4.24 11,4.39 12,4.40 13,4.38 14,4.41 15,4.44 16,4.42 17,4.46 18,4.46 19,4.46 20,4.47 21,4.49 22,4.48 23,4.48 24,4.48 25,4.49 26,4.49 27,4.49 28,4.49 29,4.49 30,4.49 31,4.49 32,4.49 33,4.50 34,4.49 35,4.49 36,4.49 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.51 34,5.50 33,5.51 32,5.51 31,5.51 30,5.51 29,5.51 28,5.51 27,5.51 26,5.51 25,5.51 24,5.52 23,5.52 22,5.52 21,5.52 20,5.53 19,5.54 18,5.54 17,5.54 16,5.59 15,5.57 14,5.58 13,5.63 12,5.59 11,5.60 10,5.72 9,5.76 8,5.53 7,5.76 6,6.07 5,6.70 4,7.15 3,7.95 2,7.71 1,8.15 0,5.00" ], + [ "triangle-002", "0,5.00 1,0.80 2,1.12 3,2.43 4,3.04 5,2.99 6,4.17 7,4.29 8,4.09 9,4.11 10,4.26 11,4.32 12,4.42 13,4.44 14,4.47 15,4.47 16,4.48 17,4.48 18,4.49 19,4.49 20,4.49 21,4.49 22,4.49 23,4.49 24,4.49 25,4.49 26,4.49 27,4.49 28,4.49 29,4.49 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.51 33,5.50 32,5.50 31,5.51 30,5.51 29,5.51 28,5.51 27,5.51 26,5.51 25,5.51 24,5.51 23,5.51 22,5.51 21,5.51 20,5.51 19,5.51 18,5.51 17,5.52 16,5.52 15,5.53 14,5.54 13,5.57 12,5.59 11,5.66 10,5.72 9,5.86 8,6.03 7,5.67 6,5.84 5,6.66 4,7.10 3,7.50 2,8.91 1,8.84 0,5.00" ], + [ "triangle-003", "0,7.78 1,0.31 2,1.17 3,0.77 4,1.02 5,0.93 6,1.11 7,2.01 8,2.17 9,3.64 10,4.18 11,4.07 12,4.15 13,4.29 14,4.31 15,4.37 16,4.39 17,4.42 18,4.45 19,4.47 20,4.48 21,4.49 22,4.49 23,4.49 24,4.49 25,4.49 26,4.50 27,4.50 28,4.50 29,4.50 30,4.50 31,4.50 32,4.50 33,4.50 34,4.50 35,4.50 36,4.50 37,4.50 38,4.50 39,4.50 39,5.50 38,5.50 37,5.50 36,5.50 35,5.50 34,5.50 33,5.50 32,5.50 31,5.50 30,5.50 29,5.50 28,5.50 27,5.50 26,5.50 25,5.51 24,5.51 23,5.51 22,5.51 21,5.51 20,5.52 19,5.53 18,5.54 17,5.57 16,5.60 15,5.64 14,5.68 13,5.71 12,5.81 11,5.95 10,5.84 9,6.43 8,7.65 7,8.41 6,8.76 5,8.99 4,9.20 3,9.05 2,9.44 1,10.12 0,7.78" ], + [ "triangle-004", "0,5.02 1,1.68 2,2.52 3,3.38 4,3.39 5,4.05 6,4.24 7,4.38 8,4.47 9,4.46 10,4.06 11,4.12 12,4.14 13,4.18 14,4.23 15,4.26 16,4.25 17,4.31 18,4.34 19,4.38 20,4.38 21,4.39 22,4.40 23,4.42 24,4.42 25,4.44 26,4.44 27,4.45 28,4.46 29,4.47 30,4.46 31,4.47 32,4.47 33,4.48 34,4.48 35,4.48 36,4.49 37,4.49 38,4.49 39,4.49 39,5.51 38,5.51 37,5.51 36,5.52 35,5.52 34,5.52 33,5.52 32,5.52 31,5.53 30,5.53 29,5.54 28,5.54 27,5.55 26,5.55 25,5.57 24,5.58 23,5.59 22,5.59 21,5.61 20,5.62 19,5.63 18,5.65 17,5.70 16,5.70 15,5.76 14,5.82 13,5.81 12,5.84 11,5.89 10,5.92 9,5.49 8,5.60 7,5.69 6,5.76 5,5.97 4,6.21 3,6.80 2,7.29 1,8.41 0,5.02" ], +]; diff --git a/gswaPeriodicWavesList-v1.js b/gswaPeriodicWavesList-v1.js new file mode 100644 index 0000000..95429e8 --- /dev/null +++ b/gswaPeriodicWavesList-v1.js @@ -0,0 +1,36 @@ +"use strict"; + +const gswaPeriodicWavesList = [ + [ "sine", { imag: Array.from( { length: 2048 }, ( _, n ) => n === 1 ? 1 : 0 ) } ], + [ "triangle", { imag: Array.from( { length: 2048 }, ( _, n ) => 8 * Math.sin( n * Math.PI / 2 ) / ( n * Math.PI ) ** 2 ) } ], + [ "sawtooth", { imag: Array.from( { length: 2048 }, ( _, n ) => 2 / ( n * Math.PI ) * ( -1 ) ** ( n + 1 ) ) } ], + [ "square", { imag: Array.from( { length: 2048 }, ( _, n ) => 2 / ( n * Math.PI ) * ( 1 - ( -1 ) ** n ) ) } ], + + // ......................................................................... + [ "bass", { real: [ 0, .5154639175257731, 1, .8144329896907216, .20618556701030927, .020618556701030927 ] } ], + [ "brass", { real: [ 0, .4, 1, 1, 1, .3, .7, .6, .5, .9, .8 ] } ], + [ "organ", { imag: [ 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 ] } ], + [ "organ2", { real: [ 0, .4, .8, .6, .6, .7, .6, 0, .8, .3, 1 ] } ], + + // ......................................................................... + [ "chiptune", { real: Array.from( { length: 2048 }, ( _, n ) => 4 / ( n * Math.PI ) * Math.sin( Math.PI * n * .18 ) ) } ], + [ "organ3", { real: [ 0, 0, -.042008, .010474, -.138038, .002641, -.001673, .001039, -.021054, .000651, -.000422, .000334, -.000236, .000191, -.000161, .000145, -.018478, .000071, -.000066, .000047, -.000044, .000041, -.000034, .000031, -.00003, .000028, -.000025, .000024, -.000022, .00002, -.000015, .000013, -.01157, .000004, -.000003, .000003, -.000003, .000003, -.000003, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000001, .000001, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000898, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, .196487, 0, 0, -.000003, 0, 0, 0, -.000002, 0, 0, 0, 0, 0, 0, 0, -.000007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.00001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "organ4", { real: [ 0, 0, -.06072, .030357, -.015136, .006684, -.003512, .002544, -.002455, .002315, -.001264, .004643, -.000089, .000353, -.000165, .000152, -.000145, .000184, -.000123, .000216, -.000135, .000222, -.000219, .000066, -.000701, .000387, -.000125, .000341, -.000117, .004817, -.000568, .003995, -.000035, .000438, -.00028, .000426, -.000038, .000078, -.000108, .000272, -.000161, .000111, -.000165, .000191, -.000156, .000209, -.000072, .000054, -.000111, .001741, -.000161, .001192, -.000127, .000053, -.000044, .000062, -.000095, .00002, -.000102, .000148, -.000051, .00015, -.0001, .000096, -.000095, .000115, -.000081, .000062, -.000022, .000134, -.00008, .000184, -.000018, .000023, -.000044, .000049, -.000057, .000024, -.000033, .000035, -.000057, .000031, -.000044, .000043, -.00001, .000004, -.000062, .000016, -.00005, .000062, -.000051, .00009, -.000036, .000029, -.00005, .000029, -.000025, .000035, -.000036, .000031, -.000028, .000038, -.000064, .000014, -.000031, .000025, -.000042, .000032, -.000045, .000076, -.000025, .000021, -.000029, .000057, -.000019, .000003, -.000039, .000062, -.000035, .000027, -.000024, .000003, -.000051, .000041, -.000047, .000043, -.000039, .000036, -.000045, .000025, -.000067, .000029, -.000021, .000022, -.000038, .000047, -.000029, .000021, -.000037, .000022, -.000047, .000017, -.000051, .000041, -.000031, .000025, -.000013, .000018, -.000041, .000015, -.000018, .000015, -.000022, .00003, -.00003, .000021, -.000027, .000044, -.000023, .000019, -.000024, .00001, -.00002, .000045, -.000038, .000014, -.000017, .000022, -.000025, .00002, -.00001, .000025, -.000004, .000008, -.000013, .000012, -.000028, .000023, -.000022, .000027, -.000008, .000021, -.000016, .000007, -.000022, .000025, -.000008, .000005, -.000005, .000024, -.000025, .000015, -.000017, .000015, -.000012, .000027, -.000023, .000033, -.000004, .000018, -.000026, .000013, -.000012, .000017, -.000021, .000004, -.000015, .000013, -.000002, .000018, -.000011, .000009, -.000016, .000007, -.000009, .000007, -.000009, .00001, -.000018, .000027, -.000011, .000009, -.000012, .000015, -.000019, .000006, -.000008, .00001, -.000007, .000013, -.000005, .000008, -.000018, .000016, -.000015, .000007, -.000011, .000018, -.000012, .00001, -.000019, .000008, -.000008, .000005, -.000001, .000016, -.000008, .000011, -.000002, .000008, -.000013, .000019, -.000005, .00001, -.000012, .000015, -.000016, .000017, -.000013, .000007, -.000013, .000022, -.000012, .000015, -.000012, .00001, -.000009, .000016, -.000012, .000007, -.000008, .000011, -.000007, .000015, -.000005, .000008, -.000001, .000009, -.000015, .000001, -.000012, .000013, -.000012, .000007, -.000013, .000011, -.000013, .000006, -.000008, .000012, -.000005, .000004, -.000005, .000006, -.000013, .000012, -.00001, .000006, -.000007, .000016, -.00001, .000006, -.000006, .000007, -.000007, .000009, -.000009, .000009, -.000008, .000009, -.000008, .000008, -.000008, .000007, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002 ], imag: [ 0, .168526, 0, 0, 0, 0, 0, 0, 0, 0, 0, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000001, 0, 0, 0, 0, .000006, -.000001, .000006, 0, .000001, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, .000001, 0, 0, 0, .000006, -.000001, .000005, -.000001, 0, 0, 0, 0, 0, -.000001, .000001, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, 0, 0, .000001, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, -.000001, 0, -.000001, .000001, -.000001, .000001, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, .000001, -.000001, 0, -.000001, 0, -.000001, .000001, -.000001, .000001, 0, 0, -.000001, .000001, 0, 0, -.000001, .000001, -.000001, .000001, -.000001, 0, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000002, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000002, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, -.000001, 0, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000001, .000001, -.000001, 0, -.000001, .000002, -.000002, .000001, -.000001, .000001, -.000001, .000001, 0, .000001, 0, 0, -.000001, .000001, -.000001, .000001, -.000001, .000001, 0, .000001, -.000001, 0, -.000001, .000001, 0, 0, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000001, .000002, 0, .000001, -.000002, .000001, -.000001, .000001, -.000001, 0, -.000001, .000001, 0, .000001, -.000001, .000001, -.000001, 0, -.000001, 0, -.000001, .000001, -.000001, .000002, -.000001, .000001, -.000001, .000001, -.000001, 0, -.000001, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000001, .000001, -.000002, .000001, -.000001, 0, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000002, -.000001, .000001, -.000001, .000001, -.000002, .000002, -.000001, .000001, -.000001, .000002, -.000001, .000002, -.000001, .000001, -.000001, .000002, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000001, .000001, 0, .000001, -.000002, 0, -.000001, .000001, -.000001, .000001, -.000002, .000001, -.000002, .000001, -.000001, .000001, -.000001, 0, -.000001, .000001, -.000002, .000002, -.000001, .000001, -.000001, .000002, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000003, .000002, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "organ5", { real: [ 0, 0, -.265053, .031303, -.066069, .013133, -.009975, .007226, -.031381, .005814, -.004185, .00364, -.002811, .002464, -.002233, .002158, -.021544, .001203, -.001169, .00089, -.000868, .000847, -.000732, .000716, -.000701, .000687, -.000653, .000641, -.00061, .000564, -.000434, .000118, -.013082, .000114, -.000112, .000111, -.000109, .000108, -.000106, .00008, -.000079, .000078, -.000077, .000076, -.000075, .000074, -.000073, .000072, -.000072, .000071, -.00007, .00007, -.000069, .000068, -.000068, .000067, -.000049, .000048, -.000048, .000048, -.000047, .000047, -.000046, .000046, -.007244, .000045, -.000045, .000045, -.000044, .000044, -.000044, .000043, -.000043, .000043, -.000043, .000042, -.000042, .000042, -.000041, .000034, -.000034, .000034, -.000034, .000033, -.000033, .000033, -.000033, .000033, -.000032, .000032, -.000032, .000032, -.000032, .000032, -.000031, .000031, -.000031, .000031, -.00003, .00003, -.00003, .000029, -.000029, .000029, -.000029, .000029, -.000029, .000029, -.000028, .000028, -.000028, .000028, -.000028, .000028, -.000028, .000028, -.000027, .000026, -.000026, .000026, -.000026, .000026, -.000026, .000026, -.000026, .000026, -.000026, .000025, -.003235, .000025, -.000025, .000025, -.000025, .000025, -.000025, .000025, -.00002, .00002, -.00002, .00002, -.00002, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000021, -.000021, .000027, -.000027, .000027, -.000027, .000027, -.000027, .000027, -.000027, .000027, -.000027, .000027, -.000027, .000027, -.000027, .000027, -.000024, .000024, -.000024, .000024, -.000024, .000024, -.000024, .000024, -.000024, .000024, -.000024, .000024, -.000024, .000024, -.000023, .000023, -.000023, .000023, -.000023, .000023, -.000023, .000023, -.000023, .000023, -.000023, .000023, -.000023, .000023, -.001577, .000023, -.000023, .000023, -.000023, .000023, -.000023, .000022, -.000022, .000022, -.000022, .000022, -.000022, .000022, -.000022, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.000021, .000021, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .00002, -.00002, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000019, -.000019, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000018, .000018, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000018, -.000018, .000018, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000017, -.000017, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000388, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000016, -.000016, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000015, -.000015, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000014, -.000014, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000013, -.000013, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, .163431, -.000002, 0, -.000002, 0, -.000001, .000001, -.000003, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000008, .000001, -.000001, 0, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, 0, -.00002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000079, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000155, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000004, .000004, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000005, -.000005, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000006, -.000006, .000007, -.000007, .000007, -.000007, .000007, -.000161, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000007, .000007, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000008, .000008, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .000009, -.000009, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .000009, -.000009, .000009, -.000009, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.00001, .00001, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000011, .000011, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, -.000012, .000012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "bass2", { real: [ 0, -.000001, -.085652, .034718, -.036957, .014576, -.005792, .003677, -.002998, .001556, -.000486, .0015, -.000809, .000955, -.000169, .000636, -.000682, .000663, -.000166, .000509, -.00042, .000194, -.000025, .000267, -.000299, .000226, -.000038, .000163, -.000273, .000141, -.000047, .000109, -.000162, .000088, -.000035, .000115, -.000157, .000079, -.000035, .000099, -.000064, .000104, -.00002, .000056, -.0001, .000053, -.000039, .000065, -.000082, .000065, -.000051, .000054, -.00006, .000035, -.000011, .000047, -.000049, .000033, -.00002, .000037, -.000041, .000056, -.000004, .000025, -.000048, .000022, -.000008, .000015, -.000052, .000013, -.000011, .000017, -.000029, .000023, -.000003, .000017, -.000031, .000027, -.000008, .000016, -.000033, .000025, -.000013, .00002, -.000021, .000022, -.000004, .000019, -.000024, .00001, -.000006, .000009, -.000019, .000018, -.000006, .000015, -.000018, .000013, -.000009, .000017, -.000022, .000013, -.000001, .000014, -.000013, .000013, -.000006, .000012, -.000015, .000013, -.000001, .000014, -.000012, .000012, -.000003, .000011, -.000014, .000009, -.000004, .000009, -.000011, .000005, -.000001, .000008, -.00001, .000009, -.000003, .000009, -.000012, .000007, -.000002, .000007, -.000008, .000007, -.000003, .000008, -.000009, .000007, -.000003, .000007, -.000008, .000006, -.000003, .000005, -.000009, .000006, -.000001, .000005, -.000007, .000005, -.000001, .000005, -.000008, .000004, -.000001, .000005, -.000006, .000005, -.000001, .000006, -.000007, .000003, -.000002, .000004, -.000006, .000004, -.000002, .000004, -.000005, .000004, -.000002, .000004, -.000006, .000003, -.000001, .000005, -.000005, .000004, -.000002, .000004, -.000004, .000003, -.000001, .000004, -.000005, .000003, -.000001, .000004, -.000004, .000003, -.000002, .000003, -.000004, .000003, -.000002, .000003, -.000004, .000003, -.000001, .000003, -.000004, .000002, -.000002, .000003, -.000003, .000002, -.000001, .000003, -.000003, .000002, -.000001, .000002, -.000003, .000002, -.000002, .000002, -.000003, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000002, .000002, -.000001, .000002, -.000002, .000002, -.000001, .000002, -.000003, .000002, 0, .000002, -.000004, .000003, -.000001, .000003, -.000005, .000005, -.000003, .000004, -.000007, .000007, -.000006, .000006, -.000008, .000009, -.000008, .000007, -.000009, .00001, -.000009, .000007, -.000008, .000009, -.000009, .000007, -.000007, .000008, -.000008, .000006, -.000005, .000006, -.000007, .000005, -.000003, .000005, -.000005, .000004, -.000002, .000004, -.000004, .000003, -.000002, .000003, -.000004, .000003, -.000002, .000003, -.000004, .000003, -.000001, .000003, -.000003, .000002, -.000001, .000003, -.000003, .000002, -.000001, .000003, -.000003, .000002, -.000001, .000002, -.000003, .000002, -.000001, .000002, -.000003, .000002, -.000001, .000002, -.000003, .000002, -.000001, .000002, -.000003, .000002, -.000001, .000002, -.000003, .000002, -.000001, .000002, -.000002, .000002, -.000001, .000002, -.000002, .000002, -.000001, .000002, -.000002, .000002, -.000001, .000002, -.000002, .000001, -.000001, .000002, -.000002, .000001, -.000001, .000002, -.000002, .000001, 0, .000002, -.000002, .000001, 0, .000002, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000002, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, .000001, 0, .000001, -.000001, 0, 0, .000001, -.000001, 0, 0, .000001, -.000001, 0, 0, .000001, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, .5, -.000001, 0, -.000001, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, 0, .000001, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "bass3", { real: [ 0, -.087481, -.008727, .015668, -.000741, -.002277, -.0016, -.00405, -.001203, -.003604, -.001386, -.00309, -.001163, -.002088, -.001024, -.001233, -.000737, -.000601, -.000461, -.00017, -.000188, -.000004, -.000007, .000086, .000105, .00005, .000133, .000031, .000092, -.000011, .00004, -.000004, -.000029, -.000005, -.000058, .000015, -.000067, .000019, -.000047, .000027, -.000011, .000016, .000018, .000004, .000032, .000002, .000031, -.000006, .000013, -.000011, -.000003, -.000012, -.000019, -.000015, -.000031, -.00001, -.00002, -.000009, -.000014, -.00001, .000004, .000001, .000013, .000001, .000017, .000008, .000019, .000009, .000012, .000008, .000005, .000005, .000001, .000008, -.000007, -.000004, 0, -.000006, -.000001, -.000002, .000002, -.000002, .000005, .000004, .000004, .000009, .000002, .000008, .000003, .000009, .000004, .000006, -.000001, .000001, .000002, -.000002, 0, -.000005, .000001, -.000002, 0, -.000004, .000002, 0, .000002, .000004, .000003, .000006, .000005, .000007, .000003, .000005, .000002, -.000002, .000001, -.000002, 0, -.000001, -.000004, -.000003, .000004, 0, .000001, -.000001, 0, .000005, 0, .000003, .000001, .000002, .000005, .000001, -.000002, .000001, .000003, 0, -.000002, 0, -.000002, 0, 0, .000003, .000001, .000003, .000001, .000003, .000005, .000001, .000003, .000003, .000002, .000001, .000003, .000001, 0, .000002, .000001, .000002, 0, .000004, -.000001, -.000002, .000002, -.000001, 0, .000003, .000002, .000002, .000001, .000001, .000002, -.000001, .000002, .000002, .000003, .000002, .000002, .000002, -.000003, .000002, -.000001, -.000001, .000001, .000002, .000001, .000001, -.000001, .000002, .000003, .000002, 0, .000003, .000001, 0, 0, .000002, .000001, .000003, .000001, -.000001, .000004, 0, .000001, -.000001, .000001, -.000002, -.000001, .000002, -.000001, .000002, .000001, 0, 0, .000001, 0, .000001, -.000001, .000001, 0, -.000001, 0, -.000001, .000003, -.000001, .000002, .000001, 0, 0, -.000002, -.000001, .000001, 0, -.000001, 0, .000002, .000002, .000002, .000001, -.000001, -.000002, .000002, -.000001, .000005, .000003, .000002, .000002, 0, -.000001, -.000001, 0, .000003, -.000002, .000003, .000001, .000002, 0, 0, .000005, 0, .000001, 0, .000001, .000001, 0, -.000002, .000003, 0, .000001, .000001, -.000001, .000001, .000004, 0, 0, .000002, .000002, .000002, 0, 0, -.000002, .000001, 0, .000002, .000002, .000002, .000002, .000005, .000002, -.000002, .000003, 0, .000001, .000002, .000002, -.000002, -.000002, .000002, .000003, 0, -.000001, .000004, -.000001, .000002, -.000003, 0, .000003, -.000001, .000002, .000003, .000001, 0, .000005, .000002, 0, 0, .000001, .000001, .000001, 0, 0, .000003, .000001, .000001, .000003, 0, .000004, .000004, .000001, .000001, -.000001, .000002, .000002, .000001, .000001, .000003, 0, .000003, .000001, .000001, .000002, .000005, .000001, .000004, .000004, .000002, .000003, .000004, .000002, .000003, -.000001, .000002, 0, .000001, 0, .000002, 0, 0, 0, .000001, 0, -.000001, -.000001, 0, -.000001, -.000002, -.000001, -.000002, -.000001, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, .492288, .009944, .032169, .001931, .019775, .001332, .00657, .001131, .004102, .00065, .000918, .000445, .000083, .000082, -.000726, -.000113, -.00063, -.000292, -.000559, -.000277, -.000299, -.000256, -.000153, -.000139, -.000007, -.000037, .000032, .000048, .000041, .00009, .000033, .00009, .000007, .000059, .000009, .000029, .000004, -.000003, .000013, -.000016, .000022, -.000006, .00003, .000007, .000024, .00003, .000031, .000037, .000023, .000037, .000021, .000029, .000019, .000009, .000007, -.000006, .000005, -.000013, -.000003, -.000015, -.000009, -.000008, -.000008, 0, -.000008, .000008, -.000003, .000017, .000005, .00001, .00001, .000008, .000012, .000004, .00001, -.000004, .000004, -.000002, .000006, -.000003, -.000001, -.000002, -.000003, .000004, -.000003, .000004, .000002, .000006, .000006, .000008, .000007, .000004, .000005, .000004, .000005, 0, .000002, -.000001, -.000001, -.000001, -.000002, 0, -.000002, .000002, -.000002, 0, 0, -.000001, .000001, .000001, .000004, .000002, 0, .000005, .000002, .000002, .000001, -.000001, -.000002, -.000003, -.000002, 0, -.000002, -.000003, 0, -.000004, .000002, -.000003, -.000001, .000002, .000001, -.000002, 0, .000001, -.000002, .000003, -.000002, 0, 0, -.000001, -.000005, -.000002, -.000003, -.000002, -.000002, -.000001, .000001, -.000002, .000001, -.000001, -.000002, .000002, .000001, .000004, -.000001, .000002, -.000003, -.000001, -.000001, .000001, .000001, -.000003, 0, -.000002, .000002, -.000001, -.000002, 0, 0, .000001, -.000002, -.000002, .000001, .000002, .000001, 0, -.000001, -.000001, 0, -.000001, .000001, -.000002, .000001, -.000001, -.000001, .000001, -.000003, 0, -.000001, .000001, -.000001, .000001, 0, 0, -.000001, .000003, .000001, -.000001, .000001, -.000001, .000001, -.000002, 0, .000001, -.000001, 0, -.000001, .000001, .000003, -.000003, 0, .000001, 0, 0, .000001, 0, -.000001, -.000001, 0, .000001, -.000002, -.000001, -.000002, -.000002, 0, -.000001, 0, -.000001, .000001, -.000001, -.000001, -.000002, -.000002, -.000001, .000001, .000003, -.000001, .000003, 0, -.000003, -.000002, -.000002, .000001, -.000001, .000002, 0, -.000003, -.000001, -.000001, .000001, -.000002, -.000002, 0, -.000001, 0, -.000002, .000001, -.000002, 0, -.000002, 0, -.000001, -.000001, .000001, .000002, -.000004, 0, -.000001, .000001, .000002, -.000002, .000002, -.000001, -.000002, .000001, 0, .000001, 0, -.000002, -.000002, 0, .000001, 0, 0, -.000001, .000001, 0, -.000002, .000001, 0, -.000003, .000002, -.000001, -.000001, .000001, 0, -.000001, .000001, .000001, -.000001, 0, 0, -.000002, -.000003, -.000002, -.000001, 0, 0, -.000001, .000002, .000001, .000002, .000002, .000001, -.000001, 0, .000002, .000002, -.000002, -.000002, .000001, -.000001, 0, .000001, -.000001, .000002, 0, -.000001, .000001, -.000001, -.000004, .000002, 0, 0, -.000002, 0, -.000001, 0, -.000002, -.000002, -.000002, -.000001, -.000002, -.000001, 0, 0, -.000002, -.000001, -.000002, -.000003, -.000003, -.000003, -.000003, -.000004, -.000004, -.000002, -.000003, -.000003, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "bass4", { real: [ 0, .001056, -.371626, -.038289, -.241364, .065179, -.127552, .014426, -.00302, -.014399, -.01333, .003929, -.013432, .007582, -.002041, -.000047, .003094, -.002225, -.000156, .000395, -.000159, .00016, .000402, .000149, .000178, .00003, .000372, -.000328, .000189, -.000124, .000033, -.000099, .000096, .000033, .000028, .000108, .000076, .000039, .000098, .000036, .000002, .000056, .000063, -.000052, .000077, .000001, .000032, -.00001, .000019, -.000029, .000014, -.000008, .000004, -.000003, .000016, -.000008, -.000004, -.000003, .000008, .000009, -.000007, .000004, .000004, .000011, .000005, -.000003, .000003, -.000004, .000001, -.000005, .000009, -.000007, .000005, .000002, -.000001, .000008, 0, -.000009, -.000004, -.000001, -.000009, .000007, -.000004, .000003, -.000005, .000004, .000013, -.000003, .000006, .000006, .000009, -.000003, -.000001, .000004, -.000004, -.000005, .000003, -.000005, .000004, .000002, -.000011, -.000006, .000008, .000008, -.000008, -.000003, -.000005, .000005, -.000009, .000009, .000001, -.000002, -.000006, .000001, .000006, 0, .000001, .000003, -.000008, .000002, 0, -.000006, -.000003, .000005, .00001, .000007, .000002, -.000004, .000003, 0, .000002, .000001, .000007, .000011, -.000004, .000005, .000002, -.000001, -.000004, .000013, .000007, .000003, .000001, 0, -.000001, .000005, -.000005, -.000005, .000003, .000002, .00001, -.000001, -.000002, .000002, 0, 0, .000003, -.000005, .000008, .000003, -.000005, .000002, .000001, .000001, .000003, .000001, .000011, .000002, -.000003, .000008, 0, -.000004, .000002, .000005, .000006, -.000007, .000005, 0, -.000005, .000004, .000001, .000003, .000013, .000004, .000004, .000001, .000003, .000005, -.000002, .000005, .000005, .000002, .000007, .000009, .000006, 0, -.000002, .000002, 0, -.000002, .000004, -.000006, .000004, .000004, .000008, -.000004, .00001, .000005, .000008, -.000002, .000005, .000005, .000014, .000002, .000008, .000003, .000005, .000002, .000011, -.000007, .000001, 0, -.000003, 0, .000006, .000006, .000004, .00001, .000009, .000004, .000001, .000001, .000005, .000002, -.000004, 0, .000004, .000003, .000008, 0, .000008, -.000004, .000006, .000009, -.000003, .000004, .000008, .000003, .000007, .000007, .000003, .000002, .000006, .000019, .000001, .000006, -.000005, -.000004, .00001, -.000001, .00001, -.00001, .00001, .000005, .00001, .000006, .000011, -.000001, .000008, .000004, 0, .000004, .000001, .000006, .000013, .000013, .000012, .000009, .000004, .000004, .000003, .000003, .000015, .000012, .000015, .000007, .000013, .000006, .000014, .000014, .000012, .000013, .000012, .000015, .000019, .000013, .00001, .000009, .000006, .000001, .000007, .000006, 0, -.000004, -.000008, -.000007, -.00001, -.000011, -.000011, -.000012, -.000012, -.000013, -.000013, -.000012, -.000012, -.000012, -.000011, -.00001, -.00001, -.000009, -.000009, -.000008, -.000007, -.000007, -.000007, -.000006, -.000006, -.000006, -.000005, -.000005, -.000005, -.000005, -.000005, -.000004, -.000004, -.000004, -.000004, -.000004, -.000004, -.000004, -.000004, -.000004, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000003, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, -.499999, .077463, .070331, .132072, .012785, .003997, .02055, -.010545, -.008137, -.000311, -.013317, -.004685, -.00145, -.006016, -.004443, .0041, -.007229, .002437, -.002378, -.000323, -.000455, .000476, -.000748, .000378, -.000138, .000087, -.000111, .000144, -.00017, -.000052, -.000136, -.000061, -.000182, -.000043, -.000061, -.000048, -.000021, .000033, -.000047, .00005, .000033, -.00001, .00001, .000043, -.000003, .000024, .000028, .00001, .000026, .000003, -.000008, -.000005, .000019, -.000006, -.000004, .000007, .000017, 0, .000007, 0, .00001, .000011, .00001, .000002, .000009, .000007, .000009, -.000001, .000013, -.000001, -.000001, .000005, .000009, .000008, .000005, .000006, .000011, .000004, .000001, -.000008, .000008, .000006, .000002, -.000003, .000004, -.000011, .000004, -.000005, .000008, -.000002, .000003, -.000008, -.000001, .000001, -.000008, .000003, .000001, .000005, .000005, -.000002, -.000003, -.000008, -.000002, .000003, .000005, .000007, -.000005, .000004, .000009, -.000011, .000008, -.000006, .000003, .000004, -.000001, -.000002, -.000001, .000007, -.000002, .000012, -.000006, .000005, -.000001, -.000001, .000002, -.000003, .000012, -.000003, .000008, -.000002, .000002, .000009, -.000003, .000008, .000001, .000007, .000005, -.000004, -.000002, -.000004, -.000001, .000001, .000003, .000008, -.000007, 0, -.000002, -.000003, -.000002, .000002, .000004, 0, .000006, 0, -.000001, -.000006, .000001, -.00001, .000003, -.000003, .000005, -.000002, .000007, -.000005, .000009, .000005, .000001, .000002, .000007, .000001, -.000006, .000005, .000001, .000012, .000003, -.000001, -.000001, .000017, .000005, -.000002, .000001, -.000001, -.000005, -.000003, -.000001, .000002, -.000001, -.000011, -.000002, -.000005, -.000004, -.000004, -.000001, .000008, -.000001, .000002, 0, -.000002, .000004, .000007, .000004, -.000009, .000001, .000001, -.000007, -.000008, -.000002, 0, .000008, -.000015, .000002, .000003, .000007, -.000006, .000003, .000007, 0, -.000001, .000002, .000002, .000005, 0, -.000001, .000002, -.000008, -.000003, .000001, .000002, -.000009, -.000006, -.000017, -.000001, .000008, -.000002, -.000002, -.000004, -.000017, -.000001, -.000005, -.000009, .000001, -.000005, .000007, -.000003, -.000012, -.000003, -.000012, .000001, .000007, -.000014, -.000007, 0, -.000003, -.000001, .000002, .000001, 0, .000005, .000006, .000006, .000005, -.000001, -.000009, .000004, -.000003, .000006, -.000005, -.00001, 0, .000001, -.000001, .000007, -.000006, -.000011, .000003, .000005, .000003, -.000006, .00001, -.000012, -.000007, 0, -.000012, -.000004, .000002, -.00001, 0, -.000004, -.000001, -.000014, -.000002, -.000017, -.000013, -.000019, -.000008, -.000015, -.000022, -.000016, -.000024, -.000026, -.00002, -.000024, -.000024, -.000023, -.000017, -.000019, -.000017, -.000017, -.000013, -.000012, -.00001, -.000009, -.000007, -.000006, -.000005, -.000004, -.000003, -.000003, -.000002, -.000002, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "brass2", { real: [ 0, .171738, .131907, -.1948, -.129913, -.081043, .049213, .027828, -.008357, -.005044, .002145, .000773, -.001392, -.000916, -.000012, .000323, -.000003, .000127, -.000135, -.000029, -.000031, .000087, -.000091, .000005, -.000026, .000027, -.000062, -.000017, -.000002, .000002, .000012, -.000024, .000011, -.000011, -.000001, 0, .000003, .000006, -.000009, -.000002, .000001, .000007, .000014, -.000008, -.000001, -.000003, -.000011, -.000003, .000004, -.000002, -.000004, .000001, -.000004, .000001, .000003, .000001, .000002, .000003, -.000001, -.000005, 0, .000001, -.000008, .000001, .000003, -.000004, -.000004, -.000002, .000003, 0, -.000002, -.000009, .000009, .000024, .000011, -.000017, -.000024, -.000002, 0, .000002, .000015, .000022, .000001, -.000022, -.000016, .000001, .000002, -.000003, -.000002, .000001, -.000001, .000005, .000001, -.000001, -.000001, 0, -.000001, -.000003, -.000001, -.000002, .000001, -.000003, -.000002, .000004, .000007, -.000002, -.000006, -.000009, -.000003, -.000001, .000001, 0, .000006, 0, -.000009, -.000011, .000003, .000005, -.000002, -.000002, -.000001, .000001, .000001, 0, -.000001, -.000001, .000001, 0, -.000001, .000002, .000001, 0, 0, 0, -.000001, 0, 0, -.000002, -.000001, 0, 0, 0, .000001, .000001, -.000001, -.000001, -.000002, .000001, .000002, -.000001, -.000004, 0, .000004, .000005, .000001, 0, -.000002, 0, -.000004, .000001, .000004, .000007, 0, -.000004, 0, .000002, .000001, -.000001, .000001, 0, 0, -.000001, 0, -.000002, .000001, .000004, 0, -.000007, .000002, .00003, .000007, -.000035, .000007, .000111, .000036, -.000022, -.000053, 0, .000001, -.000004, .000035, .000082, .00004, -.000032, -.000062, -.000012, .000012, -.000008, -.000006, .000004, .000006, .000003, .000001, 0, .000001, 0, 0, -.000001, -.000001, -.000001, -.000001, -.000002, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, -.090905, .482287, .259485, .009402, -.125271, -.046816, .007872, .001762, -.010488, -.002305, .001791, .001101, -.000303, -.000064, .000143, .000059, .000116, .00012, -.000011, -.000066, -.000019, .000024, .000014, .000069, .000056, .000005, .000002, -.000026, -.000015, .000055, .000012, .000046, -.000007, .000007, -.000003, -.000007, .000002, -.000003, -.00001, -.000011, -.000004, .000003, .000001, .000005, -.000001, -.000004, .000001, .000001, .000001, .000004, 0, -.000001, .000001, .000004, -.000001, -.000002, 0, -.000003, -.000004, .000003, -.000007, 0, .000001, .000003, .000002, 0, -.000001, 0, .000001, .000006, -.000008, -.000016, .000013, .000017, .000013, .000001, 0, -.000002, -.000001, -.000004, .000007, .000016, .000021, -.000008, -.000013, .000003, .000006, -.000001, .000001, .000002, 0, .000001, -.000001, .000001, 0, 0, -.000004, .000002, 0, .000001, .000002, -.000001, -.000005, .000004, .000014, .000005, -.000006, -.000007, -.000001, -.000001, 0, .000009, .000009, .000001, -.000006, -.000008, .000001, .000002, -.000001, -.000002, 0, .000001, .000001, 0, 0, .000002, -.000002, 0, -.000001, 0, 0, -.000001, -.000001, 0, 0, .000001, 0, 0, -.000001, 0, 0, 0, 0, .000001, .000001, -.000002, -.000003, -.000001, .000002, -.000001, -.000007, -.000002, .000002, .000004, 0, .000001, .000001, -.000002, -.000006, -.000002, .000003, .000006, .000001, 0, 0, .000002, -.000001, -.000001, -.000001, .000001, 0, 0, -.000001, 0, .000003, .000008, .000001, -.00001, -.000006, .000015, -.000026, -.000075, -.00001, .00005, .000082, .000023, -.000004, 0, -.000002, -.000045, -.000002, .000041, .000093, -.000009, -.000034, .000008, .00002, -.000001, -.000006, -.000001, 0, -.000002, -.000004, -.000003, -.000003, -.000002, -.000003, -.000002, -.000002, -.000002, -.000001, -.000001, -.000001, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "haa", { real: [ 0, .246738, .08389, .095378, .087885, .165621, .287369, -.328845, -.099613, -.198535, .260484, .012771, .013351, .006221, .003106, .000629, -.003591, -.002876, -.003527, -.002975, -.002648, -.006996, -.004165, -.004266, -.000731, .003727, .018167, .012018, -.017044, -.004816, -.001255, -.002032, .000272, -.001849, .004334, .000773, -.00069, -.000207, .000136, -.000108, .000508, -.000701, -.000958, -.004677, .002005, -.001925, -.00145, -.002212, -.001163, -.000227, .000182, -.000448, .000152, -.000316, -.000054, -.000193, -.00017, -.000138, -.000179, .000059, .000017, .000008, .000252, .000382, -.000319, .00002, -.000087, .00002, -.000024, -.000002, .000044, -.000131, .000145, -.000581, -.000182, -.001087, -.000746, -.002759, -.001195, -.002868, -.000729, -.002915, .000325, -.001489, .000419, -.000322, .000054, -.0002, .000032, .000071, .000196, -.000127, .000355, -.000328, .000518, -.00028, .00062, -.00036, .000553, -.000153, .000088, .000227, .000454, -.000071, .0002, -.000214, .000326, -.00043, .000123, -.000226, .000094, -.000102, -.000003, -.000096, .000084, .000037, -.000107, -.000201, .000152, -.0003, -.000197, -.000083, .000063, -.000092, .000009, -.000076, -.000057, .000094, .000096, -.000071, -.000529, -.000336, -.000661, -.000637, -.001247, -.000167, -.001025, -.001483, .000107, -.000321, -.000251, .000186, .000315, -.000163, -.000102, -.001242, -.001912, -.000113, .000724, .00079, .000078, -.000061, .000077, -.000069, .00005, .000002, -.000077, -.000168, .000073, .000044, .000047, .000093, -.000101, -.000012, -.000048, -.000033, .000034, -.000304, -.000188, -.000116, -.000167, -.000096, -.000298, -.000044, -.000107, -.000036, -.000012, .000043, .000191, -.000126, -.000011, .0001, .000098, -.000021, -.000129, -.000016, -.000182, -.000203, -.000249, -.000452, -.000216, -.000162, .000092, .000246, -.000028, -.000214, .000035, .000038, -.000032, -.000037, -.000015, -.00001, -.000011, -.00004, -.000014, -.00002, -.000031, -.000023, -.000012, 0, 0, .000004, .000008, .000014, .000015, .000016, .000018, .000019, .000019, .000017, .000016, .000015, .000014, .000012, .000011, .00001, .00001, .000009, .000008, .000008, .000008, .000007, .000006, .000007, .000007, .000006, .000005, .000006, .000006, .000005, .000005, .000005, .000005, .000004, .000004, .000004, .000005, .000004, .000004, .000004, .000004, .000004, .000003, .000004, .000004, .000003, .000003, .000003, .000004, .000003, .000003, .000003, .000003, .000003, .000003, .000003, .000003, .000003, .000002, .000003, .000003, .000003, .000002, .000003, .000003, .000002, .000002, .000002, .000003, .000002, .000002, .000002, .000003, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000002, .000001, .000002, .000002, .000002, .000001, .000002, .000002, .000002, .000001, .000002, .000002, .000002, .000001, .000002, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, 0, .000001, .000001, .000001, .000001, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, 0, 0, .000001, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, -.011959, .106385, .027196, .04077, .010807, -.17632, -.376644, .052966, .242678, .322558, -.029071, -.017862, -.018765, -.010794, -.010157, -.004212, -.001923, -.002589, -.000607, -.001983, -.000421, -.001835, .003069, .005389, .012023, .003422, -.013914, -.008548, .007815, .002234, .003867, .000488, .000824, -.002685, -.000085, -.002967, -.000125, -.000831, -.000192, -.000222, -.003892, .000474, -.002069, .001899, .001648, -.00049, .001615, -.000309, -.000211, -.000327, -.000702, .000325, -.000152, .000048, .000011, .000152, -.000106, -.000003, -.000063, .000026, -.000104, -.000479, -.000528, -.000551, -.000202, -.00024, -.000079, -.000078, .000053, -.000058, .000163, .000573, -.000025, .000171, -.001189, .000385, -.000574, -.000608, -.000859, -.00066, -.000638, -.002096, -.000233, -.002119, .000081, -.001687, -.000175, -.00059, .000237, .000237, .000232, .000473, .000578, .00056, .000534, .000858, .001336, .000692, .001099, .000203, -.000084, -.000032, -.000114, -.000094, -.000085, -.000034, -.000303, .000267, .000139, -.000143, .000062, -.000023, -.000049, -.000084, -.000129, -.000141, -.000123, .000102, .000171, -.000007, .000123, .000116, .00012, .000003, .000098, .000055, -.000044, -.000258, -.000552, -.000945, -.00028, -.000222, -.000038, -.000132, -.000249, .00088, .000518, .001033, .000874, .000496, .000873, .000276, -.000206, -.000785, -.000948, -.000148, .001179, .000101, -.000833, -.000357, -.000168, -.000115, -.000072, -.000116, -.000215, -.000148, -.000118, .000104, .000058, -.000093, -.000217, -.000153, -.000159, -.000116, -.000134, -.000078, -.000215, -.000206, .000099, -.000054, -.000095, .000029, -.000054, .000009, -.000064, -.000038, -.000046, -.000145, -.000362, -.00014, -.000172, -.000209, -.000191, -.000257, -.000252, -.000234, -.000525, -.00026, -.000337, .000005, .000083, .000142, -.000229, -.000192, .000069, .000069, .000006, -.000001, -.000011, .000027, .000008, .000009, .000003, .000004, .000022, .000025, .00004, .000038, .000034, .000036, .000037, .000033, .000028, .000026, .000023, .00002, .000016, .000012, .000009, .000008, .000006, .000005, .000003, .000004, .000003, .000003, .000002, .000003, .000003, .000002, .000002, .000002, .000003, .000002, .000002, .000002, .000002, .000002, .000001, .000002, .000002, .000002, .000001, .000002, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000002, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, .000001, 0, .000001, .000001, 0, 0, .000001, .000001, 0, 0, .000001, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, .000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "hoo", { real: [ 0, -.370874, .288281, -.454893, .061559, .049432, -.012918, .129553, -.041687, -.012594, -.006316, .00813, .000601, -.000181, -.005799, .000374, -.000806, .000236, -.001341, .000891, .000361, .000822, -.000374, .0006, .000703, -.002483, .002295, -.000217, .00045, -.00019, .000034, -.000237, .000719, -.000872, .000771, -.000461, .000487, -.000296, -.000324, .000094, -.000297, .000801, -.000836, .000114, .000064, .000199, -.000033, -.000051, -.000107, -.000221, -.000052, .000198, -.000028, -.000199, .000055, -.000105, -.000255, -.00014, .000114, -.000041, -.000117, .000085, -.000033, -.000004, .000011, -.000273, -.000059, -.000038, -.000255, .000055, -.000013, .000089, -.000059, .000164, .000091, .000001, .00007, -.000004, .000151, -.000148, .000486, -.000242, .000123, -.00005, -.00015, .000053, -.000109, .000183, -.000181, .000331, -.000187, .000227, -.000157, .000145, .000079, -.000158, -.000039, -.000118, .000027, -.000315, .000324, -.000773, .000717, -.000255, -.000114, -.000174, -.000084, -.000107, .00003, -.000092, -.000038, -.00001, -.000173, .000146, -.000033, -.000415, .000811, -.000489, .000142, -.00009, .000044, -.000171, .000034, -.000026, -.000217, -.000042, -.000131, .000229, -.000262, .000534, -.001005, .000352, .000284, -.000795, .000905, -.000018, -.000307, .000268, -.000369, .00047, -.00035, .000241, -.000347, .000472, -.000438, .000056, .000835, -.00025, .000228, -.000023, -.000927, .000283, -.000599, .00017, -.000008, .00022, -.000072, .000262, -.000139, .000048, -.000117, .00016, -.000168, .000174, -.000239, .000141, -.000023, -.000095, .000147, -.000017, -.000049, .000112, .000071, -.000373, .000062, .00012, -.000049, .000005, -.000099, .00001, -.000004, -.000051, .000254, -.000079, -.000125, .000128, -.000043, -.000037, -.000002, .000015, -.000069, .000221, -.000129, .00002, .000037, -.000071, .000027, -.000023, -.000007, -.000008, .000021, -.000001, .000006, .000011, .000011, .000001, -.000005, .000003, -.000004, .000001, .000001, -.000007, -.000006, -.000007, -.000007, -.000007, -.000007, -.000007, -.000007, -.000006, -.000005, -.000005, -.000005, -.000004, -.000003, -.000004, -.000004, -.000003, -.000003, -.000003, -.000003, -.000003, -.000002, -.000003, -.000003, -.000002, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, 0, 0, -.000001, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, .046536, .256926, .019372, -.496196, .016047, -.063615, .021345, -.007871, -.020463, .009909, .003165, -.000942, -.002837, .002435, -.003583, .001061, -.002121, -.00013, .000233, -.00032, .000087, .00095, -.001264, .002961, -.000701, .000715, .000451, -.000291, .000048, .000166, -.000528, .000677, -.000218, -.000003, -.00028, -.000135, .000574, -.000348, .000214, -.00044, .000625, .001131, -.000147, .000135, -.000206, -.000013, -.000018, -.000061, -.000043, .00012, .000051, -.000039, .000039, .000068, -.000041, -.000088, -.00007, .000099, -.000165, .000194, -.000161, -.000109, -.000013, -.000071, .000097, -.000165, -.000033, .000068, .000003, .000068, -.000104, .000159, -.000107, .000065, .000007, .000123, -.000005, -.000101, -.000075, .000024, .000528, -.000422, .000479, -.000171, -.000048, -.00015, .00035, -.000185, -.000023, .000163, .000053, -.000016, .000018, -.000264, .000025, -.000246, -.000067, -.000231, .000039, -.000093, .000095, .000045, .00045, -.000697, .00017, .000055, -.00016, .00012, .000118, -.00007, .000054, .000057, -.000246, .000253, -.000389, .000138, -.000053, .000014, -.000032, -.000162, .000048, -.000089, -.000145, -.000163, .000127, .000215, -.000009, -.000012, .000117, .000425, -.000036, .000827, -.001058, -.000607, .000224, .000075, -.000086, -.00014, .000358, -.000212, .000479, -.000007, -.000196, .000109, .000138, .000173, .000108, -.000153, .000167, -.000805, .000246, -.00006, -.000009, .000113, -.000008, .000042, -.000097, -.00003, .000144, -.00013, .000154, .000024, .000062, -.000026, -.000145, .000156, -.000205, .000047, .000042, -.000049, -.00007, .000232, -.000152, -.000228, .00021, -.000025, .000046, -.000051, .000131, -.000038, -.000125, .000053, .000214, -.000195, .000066, .000045, -.000026, .000015, .000001, -.000146, .000059, .000115, -.000094, .000138, 0, .000007, -.000025, .000013, .000011, .000002, .000016, -.000017, -.000014, -.000017, -.000005, -.000008, -.000006, -.000008, -.000018, -.000007, -.000008, -.00001, -.000009, -.000006, -.000004, -.000004, -.000003, -.000002, -.000001, -.000001, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "hee", { real: [ 0, -.18267, -.381543, .046629, -.280517, -.058269, .014912, .011407, -.00491, -.008831, .007088, .005653, -.007082, -.004146, .007708, .007322, -.007934, -.001923, .012704, -.003957, -.025076, .081539, -.028921, -.009431, .029387, -.030368, -.027489, .078646, -.029917, .032701, .025565, -.01946, .006748, -.000172, .001069, -.005152, .000071, -.002174, -.009055, .007263, .006293, -.002175, -.002678, -.00915, -.013944, -.006199, -.002361, .000379, .000083, .00035, -.003055, -.002105, -.000272, .00089, .000309, .000372, -.000033, .000019, .000394, .002459, .000636, .000037, -.000448, -.000024, .000167, .00011, -.000273, -.001496, .000576, -.000046, .000392, .001059, -.000534, -.001739, -.000852, .000874, -.000216, -.000045, .00067, -.000683, -.000112, .000774, .00061, -.000969, .001546, -.002348, -.000035, .000377, .000047, -.000193, -.000005, .000063, .00062, .001381, .000166, -.000893, -.001365, .000227, -.001158, -.000931, .000769, .000677, -.001738, -.000036, .00173, -.001, .00118, .000523, .000082, -.001654, .000389, -.000019, .000313, .000609, .000098, -.000023, -.000075, .000049, .000117, .00012, .000112, -.000222, -.000516, .000126, .000504, -.00001, .000212, .000085, -.000913, -.000224, .000658, -.000036, -.000046, -.000009, -.000536, .000095, -.000029, .000541, .001019, .000433, .001496, .000125, .001146, -.000755, .000334, .000348, -.000312, .00007, .000234, -.00004, -.000131, .000076, -.000156, .00013, -.000085, -.000091, .000188, -.000039, .000024, .000344, -.000242, -.00007, .000319, -.000416, .000025, -.00011, .000055, -.000194, .000158, .000058, .000076, -.00024, -.000046, .000113, -.000122, .000069, .000447, -.000375, .00049, -.000148, -.00026, .000153, -.000188, -.000029, .0001, -.00003, -.000155, .000216, .000072, -.00003, .00018, .000012, .00005, .000055, -.000011, -.000057, .000173, .000043, .000086, .000179, .000049, .000115, -.000086, .000031, .000013, -.000048, .000034, -.000004, .000054, .000046, -.000026, -.000003, .000006, -.000024, -.000016, -.000016, -.000021, -.000022, -.000023, -.000021, -.000019, -.000019, -.000019, -.000016, -.000013, -.000013, -.000013, -.000011, -.000009, -.00001, -.00001, -.000009, -.000007, -.000008, -.000008, -.000007, -.000006, -.000007, -.000007, -.000006, -.000005, -.000006, -.000007, -.000006, -.000005, -.000005, -.000006, -.000005, -.000004, -.000005, -.000005, -.000005, -.000004, -.000004, -.000005, -.000004, -.000003, -.000004, -.000005, -.000004, -.000003, -.000004, -.000004, -.000004, -.000003, -.000004, -.000004, -.000003, -.000003, -.000003, -.000004, -.000003, -.000003, -.000003, -.000004, -.000003, -.000002, -.000003, -.000004, -.000003, -.000002, -.000003, -.000003, -.000003, -.000002, -.000003, -.000003, -.000003, -.000002, -.000003, -.000003, -.000003, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000003, -.000002, -.000002, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], imag: [ 0, -.43237, -.202117, .451975, -.413897, .067733, -.004269, -.003175, -.010887, .002024, .010798, -.007897, -.001622, .006998, .000402, -.004589, .002325, .012148, -.000278, -.026627, .030999, .000779, .003562, .059443, -.000897, -.060501, .050517, -.071021, -.016851, .033358, -.020689, .017911, .003015, -.001239, -.001775, .002736, .004554, -.00915, -.004987, -.002883, -.00365, .007024, .012555, .004629, .005519, -.00267, -.005895, -.002137, .001283, .004861, .001504, .001201, -.000659, -.000842, .000634, .000375, .0001, -.000789, -.000378, .001145, .000364, .000262, -.000061, -.000102, .000159, .000251, -.000692, -.000857, -.000218, -.000893, .000143, .000225, -.000062, -.000535, -.000438, -.000737, -.001102, .000446, .000278, -.000187, .000046, .000234, -.000884, .00202, .000283, -.001297, .001203, -.000222, -.000362, -.000121, .000121, -.000191, .001329, -.000903, .00118, .000885, -.000269, -.000627, -.001597, .000511, .000786, -.000873, -.00213, .002391, -.00209, -.001152, .000507, .000232, -.000004, -.000316, -.000121, -.001509, -.000535, -.000056, .000351, .000182, -.000082, -.000408, .000097, .000283, .000473, -.000282, -.0003, .000261, -.00032, -.000398, .001237, -.000129, .000208, .000185, -.000386, -.00013, .000326, .000293, -.000305, -.000676, -.000229, -.000485, -.00119, -.000019, -.000357, .000688, .00034, -.000466, .0008, .000173, .000018, .000227, -.000105, .000098, .000167, -.000184, -.000029, -.000012, -.00009, -.000032, .000072, -.000079, .000188, -.000016, -.000123, .000382, -.000205, .00008, .000012, -.00011, .000033, -.000315, .000191, -.000128, -.000093, -.000093, .000028, -.000154, -.00029, .0002, -.000182, -.000142, .000841, -.00028, .00006, -.000014, -.000124, .000064, .000018, -.000067, .000051, .000001, -.000068, .00004, .000001, .000026, .000054, .000084, -.000004, -.000021, -.000016, -.000091, .00009, -.000108, .0001, .000023, .000091, .000047, -.000064, .000005, -.000043, -.000018, -.000049, -.000061, -.000034, -.000021, -.000049, -.000041, -.000028, -.00003, -.000024, -.000022, -.000017, -.000012, -.00001, -.000009, -.000006, -.000003, -.000004, -.000004, -.000003, -.000001, -.000002, -.000003, -.000002, -.000001, -.000002, -.000003, -.000002, -.000001, -.000002, -.000003, -.000002, -.000001, -.000002, -.000002, -.000002, -.000001, -.000002, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, -.000001, -.000001, -.000002, -.000001, 0, -.000001, -.000002, -.000001, 0, -.000001, -.000002, -.000001, 0, -.000001, -.000002, -.000001, 0, -.000001, -.000002, -.000001, 0, -.000001, -.000002, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, -.000001, -.000001, -.000001, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } ], + [ "buzz", { real: [ 0, -.000001, -.139102, .086216, -.053293, .034018, -.024299, .01707, -.015971, .01553, -.012639, .011335, -.011541, .01043, -.009167, .008078, -.007356, .007138, -.006327, .005447, -.001334, .000749, -.000421, .000303, -.000297, .000234, -.00023, .000212, -.000208, .000246, -.000242, .000238, -.000234, .000389, -.000383, .000378, -.000373, .000582, -.000575, .000567, -.001135, .001121, -.001108, .002151, -.002127, .002103, -.004914, .004862, -.008108, .017829, -.01765, .018022, -.014397, .014261, -.014129, .011645, -.011541, .009515, -.006526, .00647, -.003472, .002311, -.001538, .001573, -.001561, .001549, -.001537, .001525, -.001299, .001289, -.00128, .001271, -.001262, .001417, -.001641, .001631, -.00162, .001609, -.001599, .001589, -.001579, .001569, -.00156, .00155, -.001541, .001532, -.001619, .00161, -.001601, .001592, -.001583, .001574, -.001566, .001557, -.001549, .001541, -.001533, .001525, -.001517, .00151, -.001502, .001495, -.001487, .00148, -.001473, .001466, -.001459, .001452, -.001446, .001439, -.001432, .001426, -.00142, .001413, -.001407, .001401, -.001395, .001389, -.001383, .001377, -.001372, .001366, -.00136, .001355, -.001349, .001344, -.001339, .001333, -.001328, .001323, -.001318, .001313, -.001308, .001303, -.001298, .001293, -.001288, .001284, -.001279, .001397, -.001392, .001387, -.001383, .001378, -.001373, .001368, -.001363, .001359, -.001354, .00135, -.001345, .001341, -.001336, .001332, -.001328, .001323, -.001319, .001315, -.001311, .001306, -.001302, .001298, -.001294, .00129, -.001286, .001282, -.001279, .001275, -.001271, .001267, -.001263, .00126, -.001256, .001252, -.001249, .001245, -.001242, .001238, -.001234, .001231, -.001228, .001224, -.001221, .001217, -.001214, .001211, -.001207, .001204, -.001201, .001198, -.001195, .001191, -.001188, .001185, -.001182, .001179, -.001176, .001173, -.00117, .001167, -.001164, .001161, -.001158, .001155, -.001152, .00115, -.001147, .001144, -.001141, .001138, -.001136, .001133, -.00113, .001128, -.000755, .000753, -.000751, .000773, -.000771, .000769, -.000767, .000766, -.000764, .000762, -.00076, .000759, -.000757, .000755, -.000753, .000752, -.000798, .000796, -.000794, .000792, -.000791, .000789, -.000787, .000786, -.000784, .000782, -.00078, .000779, -.000777, .000775, -.000774, .000772, -.000771, .000769, -.000767, .000766, -.000764, .000836, -.000835, .000833, -.000831, .000829, -.000854, .000852, -.00085, .000848, -.000847, .000845, -.000843, .000842, -.00084, .000838, -.000837, .000835, -.000833, .000832, -.00083, .000829, -.000827, .000825, -.000824, .000822, -.000821, .000819, -.000818, .000816, -.000815, .000813, -.000812, .00081, -.000809, .000783, -.000781, .00078, -.000778, .000777, -.000775, .000751, -.000749, .000748, -.000747, .000745, -.000744, .000743, -.000741, .00074, -.000739, .000737, -.000736, .000735, -.000733, .000732, -.000731, .000729, -.000728, .000727, -.000726, .000724, -.000723, .000722, -.000721, .000719, -.000718, .000717, -.000716, .000714, -.000713, .000712, -.000711, .00071, -.000708, .000707, -.000706, .000705, -.000704, .000702, -.000701, .0007, -.000699, .000698, -.000697, .000696, -.000694, .000693, -.000692, .000691, -.00069, .000689, -.000688, .000686, -.000685, .000684, -.000704, .000703, -.000702, .000701, -.0007, .000699, -.000698, .000696, -.000695, .000694, -.000693, .000692, -.000691, .00069, -.000689, .000688, -.000686, .000685, -.000684, .000683, -.000682, .000681, -.00068, .000679, -.000678, .000677, -.000676, .000675, -.000674, .000672, -.000671, .00067, -.000669, .000668, -.000667, .000666, -.000665, .000664, -.000663, .000662, -.000661, .00066, -.000659, .000658, -.000657, .000656, -.000655, .000654, -.000653, .000652, -.000651, .00065, -.000649, .000648, -.000647, .000646, -.000645, .000644, -.000643, .000642, -.000641, .00064, -.000639, .000638, -.000637, .000636, -.000635, .000634, -.000614, .000613, -.000612, .000611, -.00061, .000609, -.000608, .000607, -.000607, .000606, -.000605, .000604, -.000603, .000602, -.000601, .0006, -.000599, .000598, -.000597, .000596, -.000596, .000595, -.000594, .000593, -.000592, .000591, -.00059, .000589, -.000588, .000587, -.000587, .000586, -.000585, .000584, -.000583, .000582, -.000581, .00058, -.000579, .000579, -.000578, .000577, -.000576, .000575, -.000574, .000573, -.000572, .000571, -.000571, .00057, -.000569, .000568, -.000567, .000566, -.000565, .000564, -.000564, .000563, -.000562, .000561, -.00056, .000559, -.000558, .000558, -.000557, .000556, -.000555, .000554, -.000553, .000552, -.000473, .000472, -.000472, .000471, -.00047, .000469, -.000469, .000468, -.000467, .000466, -.000466, .000465, -.000464, .000463, -.000463, .000462, -.000461, .000461, -.00046, .000459, -.000458, .000458, -.000457, .000456, -.000455, .000455, -.000454, .000453, -.000452, .000452, -.000451, .00045, -.00045, .000449, -.000448, .000447, -.000447, .000446, -.000445, .000445, -.000444, .000443, -.000442, .000442, -.000441, .00044, -.000439, .000439, -.000438, .000437, -.000437, .000436, -.000435, .000434, -.000434, .000433, -.000432, .000431, -.000431, .00043, -.000429, .000429, -.000428, .000427, -.000426, .000426, -.000425, .000424, -.000423, .000423, -.000422, .000421, -.000421, .00042, -.000419, .000418, -.000418, .000417, -.000416, .000415, -.000415, .000414, -.000413, .000413, -.000412, .000411, -.00041, .00041, -.000409, .000408, -.000407, .000407, -.000406, .000405, -.000405, .000404, -.000403, .000402, -.000402, .000401, -.0004, .000399, -.000399, .000398, -.000397, .000396, -.000396, .000349, -.000349, .000348, -.000347, .000347, -.000346, .000345, -.000345, .000344, -.000343, .000343, -.000342, .000341, -.000341, .00034, -.00034, .000339, -.000338, .000338, -.000337, .000336, -.000336, .000335, -.000334, .000334, -.000333, .000332, -.000332, .000331, -.00033, .00033, -.000329, .000328, -.000328, .000327, -.000326, .000326, -.000325, .000324, -.000324, .000323, -.000322, .000322, -.000321, .00032, -.00032, .000319, -.000318, .000318, -.000317, .000316, -.000316, .000315, -.000314, .000314, -.000313, .000312, -.000311, .000311, -.00031, .000309, -.000309, .000308, -.000307, .000307, -.000306, .000305, -.000305, .000304, -.000303, .000303, -.000302, .000301, -.000301, .0003, -.000299, .000298, -.000298, .000297, -.000296, .000296, -.000295, .000294, -.000294, .000293, -.000292, .000291, -.000291, .00029, -.000289, .000271, -.000271, .00027, -.00027, .000269, -.000268, .000268, -.000267, .000266, -.000266, .000265, -.000264, .000264, -.000263, .000262, -.000262, .000261, -.00026, .000259, -.000259, .000258, -.000257, .000257, -.000256, .000255, -.000255, .000254, -.000253, .000253, -.000252, .000251, -.000251, .00025, -.000249, .000249, -.000248, .000247, -.000247, .000246, -.000245, .000245, -.000244, .000243, -.000242, .000242, -.000241, .00024, -.00024, .000239, -.000238, .000238, -.000237, .000236, -.000235, .000235, -.000234, .000233, -.000233, .000232, -.000231, .000231, -.00023, .000229, -.000228, .000228, -.000227, .000226, -.000226, .000225, -.000224, .000223, -.000223, .000222, -.000221, .000221, -.00022, .000219, -.000218, .000218, -.000217, .000216, -.000216, .000215, -.000214, .000213, -.000213, .000212, -.000211, .00021, -.00021, .000209, -.000208, .000208, -.000207, .000206, -.000205, .000205, -.000204, .000203, -.000202, .000178, -.000178, .000177, -.000176, .000176, -.000175, .000174, -.000174, .000173, -.000172, .000172, -.000171, .00017, -.00017, .000169, -.000168, .000168, -.000167, .000166, -.000166, .000165, -.000164, .000164, -.000163, .000162, -.000162, .000161, -.00016, .00016, -.000159, .000158, -.000158, .000157, -.000156, .000156, -.000155, .000154, -.000154, .000153, -.000152, .000152, -.000151, .00015, -.000149, .000149, -.000148, .000147, -.000147, .000146, -.000145, .000145, -.000144, .000143, -.000143, .000142, -.000141, .000141, -.00014, .000139, -.000138, .000138, -.000137, .000136, -.000136, .000135, -.000134, .000134, -.000133, .000132, -.000131, .000131, -.00013, .000129, -.000129, .000128, -.000127, .000126, -.000126, .000125, -.000124, .000124, -.000123, .000122, -.000121, .000121, -.00012, .000119, -.000118, .000118, -.000117, .000116, -.000116, .000115, -.000114, .000113, -.000113, .000112, -.000111, .000111, -.00011, .000109, -.000108, .000108, -.000107, .000106, -.000105, .000105, -.000104, .000103, -.000103, .000102, -.000101, .0001, -.0001, .000099, -.000098, .000097, -.000097, .000096, -.000095, .000094, -.000094, .000093, -.000092, .000091, -.000091, .00009, -.000089, .000088, -.000088, .000087, -.000086, .000085, -.000085, .000084, -.000083, .000083, -.000082, .000081, -.00008, .000079, -.000079, .000078, -.000077, .000076, -.000076, .000075, -.000074, .000073, -.000073, .000072, -.000071, .00007, -.00007, .000069, -.000068, .000067, -.000067, .000066, -.000065, .000064, -.000064, .000063, -.000062, .000061, -.00006, .00006, -.000059, .000058, -.000057, .000057, -.000056, .000055, -.000054, .000052, -.000051, .000051, -.00005, .000049, -.000048, .000048, -.000047, .000046, -.000045, .000045, -.000044, .000043, -.000042, .000042, -.000041, .00004, -.000039, .000039, -.000038, .000037, -.000036, .000036, -.000035, .000034, -.000033, .000033, -.000032, .000031, -.00003, .000029, -.000029, .000028, -.000027, .000026, -.000026, .000025, -.000024, .000023, -.000023, .000022, -.000021, .00002, -.00002, .000019, -.000018, .000017, -.000017, .000016, -.000015, .000014, -.000014, .000013, -.000012, .000011, -.000011, .00001, -.000009, .000008, -.000008, .000007, -.000006, .000005, -.000005, .000004, -.000003, .000002, -.000002, .000001, 0, -.000001, .000002, -.000002, .000003, -.000004, .000005, -.000005, .000006, -.000007, .000008, -.000008, .000009, -.00001, .000011, -.000011, .000012, -.000013, .000014, -.000014, .000015, -.000016, .000017, -.000017, .000018, -.000019, .00002, -.00002, .000021, -.000022, .000023, -.000024, .000024, -.000025, .000026, -.000027, .000027, -.000028, .000029, -.00003, .00003, -.000031, .000032, -.000033, .000033, -.000034, .000035, -.000036, .000036, -.000037, .000038, -.000039, .000039, -.00004, .000041, -.000041, .000042, -.000043, .000044, -.000044, .000045, -.000046, .000047, -.000047, .000048, -.000049, .00005, -.00005, .000051, -.000052, .000053, -.000053, .000054, -.000055, .000056, -.000056, .000057, -.000058, .000059, -.000059, .00006, -.000061, .000062, -.000062, .000063, -.000064, .000065, -.000065, .000066, -.000067, .000067, -.000068, .000069, -.00007, .00007, -.000071, .000072, -.000073, .000073, -.000074, .000075, -.000075, .000076, -.000077, .000078, -.000078, .000079, -.00008, .00008, -.000081, .000082, -.000083, .000083, -.000084, .000085, -.000085, .000086, -.000087, .000087, -.000088, .000089, -.00009, .00009, -.000091, .000092, -.000092, .000093, -.000094, .000095, -.000095, .000096, -.000097, .000097, -.000098, .000099, -.000099, .0001, -.000101, .000101, -.000102, .000103, -.000104, .000104, -.000105, .000106, -.000106, .000107, -.000108, .000108, -.000109, .000109, -.00011, .000111, -.000112, .000112, -.000113, .000114, -.000114, .000115, -.000116, .000116, -.000117, .000118, -.000118, .000119, -.000119, .00012, -.000121, .000121, -.000122, .000123, -.000123, .000124, -.000125, .000125, -.000126, .000126, -.000127, .000128, -.000128, .000129, -.00013, .00013, -.000131, .000131, -.000132, .000133, -.000133, .000134, -.000135, .000135, -.000136, .000136, -.000137, .000138, -.000138, .000139, -.000139, .00014, -.00014, .000141, -.000142, .000142, -.000143, .000144, -.000144, .000145, -.000145, .000146, -.000146, .000147, -.000148, .000148, -.000149, .000149, -.00015, .00015, -.000151, .000152, -.000152, .000153, -.000153, .000154, -.000154, .000155, -.000155, .000156, -.000156, .000157, -.000157, .000158, -.000159, .000159, -.00016, .00016, -.000161, .000161, -.000162, .000162, -.000163, .000163, -.000164, .000164, -.000165, .000165, -.000166, .000166, -.000167, .000178, -.000178, .000179, -.000179, .00018, -.00018, .000181, -.000181, .000182, -.000182, .000183, -.000183, .000184, -.000184, .000185, -.000185, .000186, -.000186, .000187, -.000187, .000188, -.000188, .000189, -.000189, .00019, -.00019, .000191, -.000191, .000191, -.000192, .000192, -.000193, .000193, -.000194, .000194, -.000194, .000195, -.000195, .000196, -.000196, .000197, -.000197, .000197, -.000198, .000198, -.000199, .000199, -.000199, .0002, -.0002, .000201, -.000201, .000201, -.000202, .000202, -.000202, .000203, -.000203, .000204, -.000204, .000204, -.000205, .000205, -.000205, .000206, -.000206, .000206, -.000207, .000207, -.000207, .000208, -.000208, .000208, -.000209, .000209, -.000209, .000209, -.00021, .00021, -.00021, .000211, -.000211, .000211, -.000211, .000212, -.000212, .000212, -.000213, .000213, -.000213, .000213, -.000214, .000214, -.000214, .000214, -.000215, .000215, -.000215, .000215, -.000215, .000216, -.000216, .000216, -.000216, .000217, -.000217, .000217, -.000217, .000217, -.000217, .000218, -.000218, .000218, -.000218, .000218, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .00022, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.00022, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000222, -.000222, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000221, -.000221, .000221, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000218, .000218, -.000218, .000218, -.000218, .000218, -.000217, .000217, -.000217, .000217, -.000217, .000216, -.000216, .000216, -.000216, .000215, -.000215, .000215, -.000215, .000215, -.000214, .000214, -.000214, .000213, -.000213, .000213, -.000213, .000212, -.000212, .000212, -.000211, .000211, -.000211, .000211, -.00021, .00021, -.00021, .000209, -.000209, .000209, -.000208, .000208, -.000208, .000207, -.000207, .000207, -.000206, .000206, -.000205, .000205, -.000205, .000204, -.000204, .000204, -.000203, .000203, -.000202, .000202, -.000202, .000201, -.000201, .0002, -.0002, .000199, -.000199, .000199, -.000198, .000198, -.000197, .000197, -.000196, .000196, -.000195, .000195, -.000194, .000194, -.000193, .000193, -.000192, .000192, -.000191, .000191, -.00019, .00019, -.000189, .000189, -.000188, .000188, -.000187, .000187, -.000186, .000186, -.000185, .000185, -.000184, .000183, -.000183, .000182, -.000182, .000181, -.000181, .00018, -.000179, .000179, -.000178, .000178, -.000177, .000176, -.000176, .000175, -.000175, .000174, -.000173, .000173, -.000172, .000171, -.000171, .00017, -.000169, .000169, -.000168, .000167, -.000167, .000166, -.000165, .000165, -.000164, .000163, -.000163, .000162, -.000161, .000161, -.00016, .000159, -.000158, .000158, -.000157, .000156, -.000156, .000155, -.000154, .000153, -.000153, .000152, -.000151, .00015, -.00015, .000149, -.000148, .000147, -.000147, .000146, -.000145, .000144, -.000143, .000143, -.000142, .000141, -.00014, .000139, -.000139, .000138, -.000137, .000136, -.000135, .000135, -.000134, .000133, -.000132, .000131, -.00013, .00013, -.000129, .000128, -.000127, .000126, -.000125, .000125, -.000124, .000123, -.000122, .000121, -.00012, .000119, -.000118, .000118, -.000117, .000116, -.000115, .000114, -.000113, .000112, -.000111, .00011, -.00011, .000109, -.000108, .000107, -.000106, .000105, -.000104, .000103, -.000102, .000101, -.0001, .000099, -.000099, .000098, -.000097, .000096, -.000095, .000094, -.000093, .000092, -.000091, .00009, -.000089, .000088, -.000087, .000086, -.000085, .000084, -.000083, .000082, -.000081, .00008, -.000079, .000078, -.000077, .000076, -.000075, .000074, -.000073, .000072, -.000071, .00007, -.000069, .000068, -.000067, .000066, -.000065, .000064, -.000063, .000062, -.000061, .00006, -.000059, .000058, -.000057, .000056, -.000055, .000054, -.000053, .000052, -.000051, .00005, -.000049, .000048, -.000047, .000046, -.000045, .000044, -.000043, .000042, -.000041, .00004, -.000039, .000038, -.000037, .000036, -.000035, .000033, -.000032, .000031, -.00003, .000029, -.000028, .000027, -.000026, .000025, -.000024, .000023, -.000022, .000021, -.00002, .000019, -.000018, .000017, -.000016, .000014, -.000013, .000012, -.000011, .00001, -.000009, .000008, -.000007, .000006, -.000005, .000004, -.000003, .000002, -.000001, 0, .000001, -.000003, .000004, -.000005, .000006, -.000007, .000008, -.000009, .00001, -.000011, .000012, -.000013, .000014, -.000015, .000016, -.000017, .000018, -.00002, .000021, -.000022, .000023, -.000024, .000025, -.000026, .000027, -.000028, .000029, -.00003, .000031, -.000032, .000033, -.000034, .000035, -.000036, .000037, -.000038, .000039, -.000041, .000041, -.000043, .000044, -.000045, .000046, -.000047, .000048, -.000049, .00005, -.000051, .000052, -.000053, .000054, -.000055, .000056, -.000057, .000058, -.000059, .00006, -.000061, .000062, -.000063, .000064, -.000065, .000066, -.000067, .000068, -.000069, .00007, -.000071, .000072, -.000073, .000074, -.000075, .000076, -.000077, .000078, -.000079, .00008, -.000081, .000082, -.000083, .000084, -.000085, .000086, -.000087, .000088, -.000089, .00009, -.00009, .000091, -.000092, .000093, -.000094, .000095, -.000096, .000097, -.000098, .000099, -.0001, .000101, -.000101, .000102, -.000103, .000104, -.000105, .000106, -.000107, .000108, -.000109, .000109, -.00011, .000111, -.000112, .000113, -.000114, .000115, -.000116, .000116, -.000117, .000118, -.000119, .00012, -.000121, .000121, -.000122, .000123, -.000124, .000125, -.000125, .000126, -.000127, .000128, -.000129, .000129, -.00013, .000131, -.000132, .000133, -.000133, .000134, -.000135, .000136, -.000149, .00015, -.000151, .000152, -.000153, .000153, -.000154, .000155, -.000156, .000157, -.000157, .000158, -.000159, .00016, -.00016, .000161, -.000162, .000163, -.000163, .000164, -.000165, .000165, -.000166, .000167, -.000168, .000168, -.000169, .00017, -.00017, .000171, -.000172, .000172, -.000173, .000174, -.000174, .000175, -.000175, .000176, -.000177, .000177, -.000178, .000178, -.000179, .00018, -.00018, .000181, -.000181, .000182, -.000182, .000183, -.000184, .000184, -.000185, .000185, -.000186, .000186, -.000187, .000187, -.000188, .000188, -.000189, .000189, -.00019, .00019, -.00019, .000191, -.000191, .000192, -.000192, .000193, -.000193, .000193, -.000194, .000194, -.000195, .000195, -.000195, .000196, -.000196, .000196, -.000197, .000197, -.000197, .000198, -.000198, .000198, -.000199, .000199, -.000199, .000199, -.0002, .0002, -.0002, .0002, -.000201, .000201, -.000201, .000201, -.000201, .000202, -.000202, .000202, -.000202, .000202, -.000203, .000203, -.000203, .000203, -.000203, .000203, -.000203, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000204 ], imag: [ 0, .341455, -.000001, .000002, -.000001, .000001, -.000001, .000001, -.000002, .000002, -.000002, .000002, -.000002, .000003, -.000003, .000003, -.000003, .000003, -.000003, .000003, -.000001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, .000001, -.000001, .000001, -.000001, .000001, -.000001, .000001, -.000003, .000003, -.000003, .000006, -.000006, .000006, -.000016, .000016, -.000028, .000064, -.000066, .00007, -.000058, .00006, -.000062, .000053, -.000054, .000046, -.000033, .000034, -.000019, .000013, -.000009, .000009, -.00001, .00001, -.00001, .00001, -.000009, .000009, -.000009, .00001, -.00001, .000011, -.000013, .000014, -.000014, .000014, -.000015, .000015, -.000015, .000015, -.000016, .000016, -.000016, .000017, -.000018, .000018, -.000019, .000019, -.000019, .00002, -.00002, .00002, -.000021, .000021, -.000021, .000021, -.000022, .000022, -.000023, .000023, -.000023, .000024, -.000024, .000024, -.000025, .000025, -.000025, .000026, -.000026, .000026, -.000027, .000027, -.000027, .000028, -.000028, .000028, -.000029, .000029, -.00003, .00003, -.00003, .000031, -.000031, .000031, -.000032, .000032, -.000033, .000033, -.000033, .000034, -.000034, .000035, -.000035, .000035, -.000036, .000036, -.000036, .00004, -.000041, .000041, -.000042, .000042, -.000043, .000043, -.000044, .000044, -.000044, .000045, -.000045, .000046, -.000046, .000047, -.000047, .000048, -.000048, .000049, -.000049, .000049, -.00005, .00005, -.000051, .000051, -.000052, .000052, -.000053, .000053, -.000054, .000054, -.000055, .000055, -.000056, .000056, -.000057, .000057, -.000058, .000058, -.000059, .000059, -.00006, .00006, -.000061, .000061, -.000062, .000062, -.000063, .000063, -.000064, .000064, -.000065, .000065, -.000066, .000066, -.000067, .000067, -.000068, .000068, -.000069, .000069, -.00007, .00007, -.000071, .000071, -.000072, .000072, -.000073, .000074, -.000074, .000075, -.000075, .000076, -.000076, .000077, -.000052, .000052, -.000053, .000055, -.000055, .000055, -.000056, .000056, -.000057, .000057, -.000057, .000058, -.000058, .000058, -.000059, .000059, -.000063, .000064, -.000064, .000065, -.000065, .000065, -.000066, .000066, -.000067, .000067, -.000067, .000068, -.000068, .000069, -.000069, .00007, -.00007, .00007, -.000071, .000071, -.000072, .000079, -.00008, .00008, -.000081, .000081, -.000084, .000085, -.000085, .000086, -.000086, .000087, -.000087, .000088, -.000088, .000088, -.000089, .00009, -.00009, .000091, -.000091, .000092, -.000092, .000092, -.000093, .000094, -.000094, .000095, -.000095, .000096, -.000096, .000097, -.000097, .000098, -.000098, .000096, -.000096, .000097, -.000097, .000098, -.000098, .000096, -.000096, .000097, -.000097, .000098, -.000098, .000099, -.000099, .0001, -.0001, .000101, -.000101, .000102, -.000102, .000103, -.000103, .000104, -.000104, .000105, -.000105, .000106, -.000106, .000107, -.000107, .000108, -.000108, .000109, -.000109, .00011, -.00011, .000111, -.000111, .000112, -.000112, .000113, -.000113, .000114, -.000114, .000115, -.000115, .000116, -.000116, .000117, -.000118, .000118, -.000119, .000119, -.00012, .00012, -.000121, .000121, -.000122, .000122, -.000123, .000123, -.000128, .000128, -.000129, .000129, -.00013, .00013, -.000131, .000131, -.000132, .000133, -.000133, .000134, -.000134, .000135, -.000135, .000136, -.000136, .000137, -.000138, .000138, -.000139, .000139, -.00014, .00014, -.000141, .000142, -.000142, .000143, -.000143, .000144, -.000144, .000145, -.000145, .000146, -.000147, .000147, -.000148, .000148, -.000149, .000149, -.00015, .000151, -.000151, .000152, -.000152, .000153, -.000153, .000154, -.000155, .000155, -.000156, .000156, -.000157, .000158, -.000158, .000159, -.000159, .00016, -.00016, .000161, -.000162, .000162, -.000163, .000163, -.000164, .000164, -.000165, .000166, -.000161, .000162, -.000162, .000163, -.000163, .000164, -.000165, .000165, -.000166, .000166, -.000167, .000168, -.000168, .000169, -.000169, .00017, -.00017, .000171, -.000171, .000172, -.000173, .000173, -.000174, .000174, -.000175, .000176, -.000176, .000177, -.000177, .000178, -.000179, .000179, -.00018, .00018, -.000181, .000181, -.000182, .000182, -.000183, .000184, -.000184, .000185, -.000185, .000186, -.000187, .000187, -.000188, .000188, -.000189, .00019, -.00019, .000191, -.000191, .000192, -.000192, .000193, -.000194, .000194, -.000195, .000195, -.000196, .000197, -.000197, .000198, -.000198, .000199, -.0002, .0002, -.000201, .000201, -.000173, .000174, -.000174, .000175, -.000175, .000176, -.000176, .000177, -.000177, .000178, -.000178, .000179, -.000179, .00018, -.00018, .000181, -.000181, .000182, -.000182, .000183, -.000183, .000184, -.000184, .000185, -.000185, .000186, -.000186, .000187, -.000187, .000188, -.000188, .000189, -.00019, .00019, -.000191, .000191, -.000192, .000192, -.000193, .000193, -.000194, .000194, -.000195, .000195, -.000196, .000196, -.000197, .000197, -.000198, .000198, -.000199, .000199, -.0002, .0002, -.000201, .000201, -.000202, .000202, -.000203, .000203, -.000204, .000204, -.000205, .000205, -.000206, .000206, -.000207, .000207, -.000208, .000208, -.000209, .000209, -.00021, .00021, -.000211, .000211, -.000212, .000213, -.000213, .000213, -.000214, .000215, -.000215, .000216, -.000216, .000217, -.000217, .000218, -.000218, .000219, -.000219, .00022, -.00022, .000221, -.000221, .000222, -.000222, .000223, -.000223, .000224, -.000224, .000225, -.000225, .000226, -.000226, .000227, -.000227, .000201, -.000202, .000202, -.000203, .000203, -.000204, .000204, -.000205, .000205, -.000205, .000206, -.000206, .000207, -.000207, .000208, -.000208, .000209, -.000209, .00021, -.00021, .00021, -.000211, .000211, -.000212, .000212, -.000213, .000213, -.000214, .000214, -.000214, .000215, -.000215, .000216, -.000216, .000217, -.000217, .000218, -.000218, .000218, -.000219, .000219, -.00022, .00022, -.000221, .000221, -.000221, .000222, -.000222, .000223, -.000223, .000224, -.000224, .000224, -.000225, .000225, -.000226, .000226, -.000227, .000227, -.000227, .000228, -.000228, .000229, -.000229, .00023, -.00023, .00023, -.000231, .000231, -.000232, .000232, -.000233, .000233, -.000234, .000234, -.000234, .000235, -.000235, .000236, -.000236, .000236, -.000237, .000237, -.000238, .000238, -.000238, .000239, -.000239, .00024, -.00024, .000226, -.000227, .000227, -.000227, .000228, -.000228, .000229, -.000229, .000229, -.00023, .00023, -.00023, .000231, -.000231, .000232, -.000232, .000232, -.000233, .000233, -.000234, .000234, -.000234, .000235, -.000235, .000235, -.000236, .000236, -.000237, .000237, -.000237, .000238, -.000238, .000238, -.000239, .000239, -.000239, .00024, -.00024, .000241, -.000241, .000241, -.000242, .000242, -.000242, .000243, -.000243, .000243, -.000244, .000244, -.000244, .000245, -.000245, .000246, -.000246, .000246, -.000247, .000247, -.000247, .000248, -.000248, .000248, -.000249, .000249, -.000249, .00025, -.00025, .00025, -.000251, .000251, -.000251, .000252, -.000252, .000252, -.000253, .000253, -.000253, .000254, -.000254, .000254, -.000255, .000255, -.000255, .000256, -.000256, .000256, -.000257, .000257, -.000257, .000258, -.000258, .000258, -.000259, .000259, -.000259, .00026, -.00026, .00026, -.00026, .000261, -.000261, .000231, -.000231, .000232, -.000232, .000232, -.000232, .000233, -.000233, .000233, -.000234, .000234, -.000234, .000234, -.000235, .000235, -.000235, .000235, -.000236, .000236, -.000236, .000236, -.000237, .000237, -.000237, .000237, -.000238, .000238, -.000238, .000238, -.000239, .000239, -.000239, .000239, -.000239, .00024, -.00024, .00024, -.00024, .000241, -.000241, .000241, -.000241, .000242, -.000242, .000242, -.000242, .000242, -.000243, .000243, -.000243, .000243, -.000244, .000244, -.000244, .000244, -.000244, .000245, -.000245, .000245, -.000245, .000245, -.000246, .000246, -.000246, .000246, -.000246, .000247, -.000247, .000247, -.000247, .000247, -.000248, .000248, -.000248, .000248, -.000248, .000248, -.000249, .000249, -.000249, .000249, -.000249, .000249, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000252, .000252, -.000252, .000252, -.000252, .000252, -.000252, .000253, -.000253, .000253, -.000253, .000253, -.000253, .000253, -.000254, .000254, -.000254, .000254, -.000254, .000254, -.000254, .000254, -.000255, .000255, -.000255, .000255, -.000255, .000255, -.000255, .000255, -.000255, .000256, -.000256, .000256, -.000256, .000256, -.000256, .000256, -.000256, .000256, -.000256, .000257, -.000257, .000257, -.000257, .000257, -.000257, .000257, -.000257, .000257, -.000257, .000257, -.000257, .000257, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000258, -.000258, .000259, -.000259, .000259, -.000259, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.000251, .000251, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.00025, .00025, -.000249, .000249, -.000249, .000249, -.000249, .000249, -.000249, .000249, -.000249, .000249, -.000249, .000249, -.000248, .000248, -.000248, .000248, -.000248, .000248, -.000248, .000248, -.000248, .000247, -.000247, .000247, -.000247, .000247, -.000247, .000247, -.000247, .000246, -.000246, .000246, -.000246, .000246, -.000246, .000246, -.000245, .000245, -.000245, .000245, -.000245, .000245, -.000245, .000244, -.000244, .000244, -.000244, .000244, -.000243, .000243, -.000243, .000243, -.000243, .000243, -.000242, .000242, -.000242, .000242, -.000242, .000241, -.000241, .000241, -.000241, .000241, -.00024, .00024, -.00024, .00024, -.000239, .000239, -.000239, .000239, -.000239, .000238, -.000238, .000238, -.000238, .000237, -.000237, .000237, -.000237, .000236, -.000236, .000236, -.000236, .000235, -.000235, .000235, -.000235, .000234, -.000234, .000234, -.000233, .000233, -.000233, .000233, -.000232, .000232, -.000232, .000231, -.000231, .000231, -.000231, .00023, -.00023, .00023, -.000229, .000229, -.000229, .000228, -.000228, .000228, -.000227, .000227, -.000227, .000226, -.000226, .000226, -.000225, .000225, -.000225, .000224, -.000224, .000224, -.000223, .000223, -.000223, .000222, -.000222, .000222, -.000221, .000221, -.00022, .00022, -.00022, .000219, -.000219, .000218, -.000218, .000218, -.000217, .000217, -.000217, .000216, -.000216, .000215, -.000215, .000214, -.000214, .000214, -.000213, .000213, -.000212, .000212, -.000212, .000211, -.000211, .00021, -.00021, .000209, -.000209, .000209, -.000208, .000208, -.000207, .000207, -.000206, .000206, -.000205, .000205, -.000204, .000204, -.000203, .000203, -.000203, .000202, -.000202, .000201, -.000201, .0002, -.0002, .000199, -.000199, .000198, -.000198, .000197, -.000197, .000196, -.000196, .000195, -.000195, .000194, -.000194, .000193, -.000193, .000192, -.000191, .000191, -.00019, .00019, -.000189, .000189, -.000188, .000188, -.000187, .000187, -.000186, .000185, -.000185, .000184, -.000184, .000183, -.000183, .000182, -.000182, .000181, -.00018, .00018, -.000179, .000179, -.000178, .000177, -.000177, .000176, -.000176, .000175, -.000175, .000174, -.000173, .000173, -.000172, .000172, -.000171, .00017, -.00017, .000169, -.000168, .000168, -.000167, .000167, -.000166, .000165, -.000165, .000164, -.000163, .000163, -.000162, .000161, -.000161, .00016, -.00016, .000159, -.000158, .000158, -.000157, .000156, -.000156, .000155, -.000154, .000154, -.000153, .000152, -.000152, .000151, -.00015, .000149, -.000149, .000148, -.000147, .000147, -.000155, .000155, -.000154, .000153, -.000152, .000152, -.000151, .00015, -.000149, .000149, -.000148, .000147, -.000146, .000145, -.000145, .000144, -.000143, .000142, -.000142, .000141, -.00014, .000139, -.000139, .000138, -.000137, .000136, -.000135, .000135, -.000134, .000133, -.000132, .000131, -.000131, .00013, -.000129, .000128, -.000127, .000127, -.000126, .000125, -.000124, .000123, -.000122, .000122, -.000121, .00012, -.000119, .000118, -.000117, .000117, -.000116, .000115, -.000114, .000113, -.000112, .000111, -.000111, .00011, -.000109, .000108, -.000107, .000107, -.000106, .000105, -.000104, .000103, -.000102, .000101, -.0001, .0001, -.000099, .000098, -.000097, .000096, -.000095, .000094, -.000093, .000093, -.000092, .000091, -.00009, .000089, -.000088, .000087, -.000086, .000085, -.000085, .000084, -.000083, .000082, -.000081, .00008, -.000079, .000078, -.000077, .000077, -.000076, .000075, -.000074, .000073, -.000072, .000071, -.00007, .000069, -.000068, .000067, -.000066, .000065, -.000065, .000064, -.000063, .000062, -.000061, .00006, -.000059, .000058, -.000057, .000056, -.000055, .000054, -.000053, .000052, -.000052, .000051, -.00005, .000049, -.000048, .000047, -.000046, .000045, -.000044, .000043, -.000042, .000041, -.00004, .000039, -.000038, .000037, -.000036, .000035, -.000035, .000034, -.000033, .000032, -.000031, .00003, -.000029, .000028, -.000027, .000026, -.000025, .000024, -.000023, .000022, -.000021, .00002, -.000019, .000018, -.000017, .000016, -.000015, .000015, -.000014, .000013, -.000012, .000011, -.00001, .000009, -.000008, .000007, -.000006, .000005, -.000004, .000003, -.000002, .000001, 0, -.000001, .000002, -.000003, .000004, -.000005, .000006, -.000007, .000008, -.000008, .000009, -.00001, .000011, -.000012, .000013, -.000014, .000015, -.000016, .000017, -.000018, .000019, -.00002, .000021, -.000022, .000023, -.000024, .000025, -.000026, .000027, -.000028, .000029, -.00003, .000031, -.000031, .000032, -.000033, .000034, -.000035, .000036, -.000037, .000038, -.000039, .00004, -.000041, .000042, -.000043, .000044, -.000045, .000046, -.000047, .000047, -.000048, .000049, -.00005, .000051, -.000052, .000053, -.000054, .000055, -.000056, .000057, -.000058, .000059, -.00006, .000061, -.000061, .000062, -.000063, .000064, -.000065, .000066, -.000067, .000068, -.000069, .00007, -.000071, .000072, -.000072, .000073, -.000074, .000075, -.000076, .000077, -.000078, .000079, -.00008, .00008, -.000081, .000082, -.000083, .000084, -.000085, .000086, -.000087, .000088, -.000088, .000089, -.00009, .000091, -.000092, .000093, -.000094, .000094, -.000095, .000096, -.000097, .000098, -.000099, .0001, -.0001, .000101, -.000102, .000103, -.000104, .000105, -.000105, .000106, -.000107, .000108, -.000109, .00011, -.00011, .000111, -.000112, .000113, -.000114, .000115, -.000115, .000116, -.000117, .000118, -.000119, .000119, -.00012, .000121, -.000122, .000122, -.000123, .000124, -.000125, .000126, -.000126, .000127, -.000128, .000129, -.000129, .00013, -.000131, .000132, -.000132, .000133, -.000134, .000135, -.000135, .000136, -.000137, .000138, -.000138, .000139, -.00014, .00014, -.000141, .000142, -.000142, .000143, -.000144, .000145, -.000145, .000146, -.000147, .000147, -.000148, .000149, -.000149, .00015, -.000151, .000151, -.000152, .000153, -.000153, .000154, -.000155, .000155, -.000156, .000156, -.000157, .000158, -.000158, .000159, -.00016, .00016, -.000161, .000161, -.000162, .000162, -.000163, .000164, -.000164, .000165, -.000165, .000166, -.000167, .000167, -.000168, .000168, -.000169, .000169, -.00017, .00017, -.000171, .000171, -.000172, .000172, -.000173, .000173, -.000174, .000174, -.000175, .000175, -.000176, .000176, -.000177, .000177, -.000178, .000178, -.000179, .000179, -.00018, .00018, -.000181, .000181, -.000181, .000182, -.000182, .000183, -.000183, .000184, -.000184, .000184, -.000185, .000185, -.000186, .000186, -.000186, .000187, -.000187, .000187, -.000188, .000188, -.000188, .000189, -.000189, .00019, -.00019, .00019, -.00019, .000191, -.000191, .000191, -.000192, .000192, -.000192, .000193, -.000193, .000193, -.000193, .000194, -.000194, .000194, -.000194, .000195, -.000195, .000195, -.000195, .000196, -.000196, .000196, -.000196, .000196, -.000197, .000197, -.000197, .000197, -.000197, .000198, -.000198, .000198, -.000198, .000198, -.000198, .000199, -.000199, .000199, -.000199, .000199, -.000199, .000199, -.000199, .000199, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.0002, .0002, -.000199, .000199, -.000199, .000199, -.000199, .000199, -.000199, .000199, -.000199, .000198, -.000198, .000198, -.000198, .000198, -.000198, .000197, -.000197, .000197, -.000197, .000197, -.000196, .000196, -.000196, .000196, -.000196, .000195, -.000195, .000195, -.000195, .000194, -.000194, .000194, -.000193, .000193, -.000193, .000193, -.000192, .000192, -.000192, .000191, -.000191, .000191, -.00019, .00019, -.00019, .000189, -.000189, .000189, -.000188, .000188, -.000188, .000187, -.000187, .000186, -.000186, .000186, -.000185, .000185, -.000184, .000184, -.000183, .000183, -.000183, .000182, -.000182, .000181, -.000181, .00018, -.00018, .000179, -.000179, .000178, -.000178, .000177, -.000177, .000176, -.000176, .000175, -.000175, .000174, -.000174, .000173, -.000173, .000172, -.000171, .000171, -.00017, .00017, -.000169, .000168, -.000168, .000167, -.000167, .000166, -.000165, .000165, -.000164, .000164, -.000163, .000162, -.000162, .000161, -.00016, .00016, -.000159, .000158, -.000158, .000157, -.000156, .000156, -.000155, .000154, -.000153, .000153, -.000152, .000151, -.000151, .00015, -.000149, .000148, -.000148, .000147, -.000146, .000145, -.000145, .000144, -.000143, .000142, -.000142, .000141, -.00014, .000139, -.000138, .000138, -.000137, .000149, -.000148, .000147, -.000146, .000145, -.000144, .000144, -.000143, .000142, -.000141, .00014, -.000139, .000138, -.000137, .000136, -.000135, .000134, -.000133, .000132, -.000131, .00013, -.000129, .000128, -.000127, .000126, -.000125, .000124, -.000123, .000122, -.000121, .00012, -.000119, .000118, -.000117, .000116, -.000115, .000114, -.000113, .000112, -.000111, .00011, -.000108, .000107, -.000106, .000105, -.000104, .000103, -.000102, .000101, -.0001, .000099, -.000098, .000096, -.000095, .000094, -.000093, .000092, -.000091, .00009, -.000089, .000087, -.000086, .000085, -.000084, .000083, -.000082, .00008, -.000079, .000078, -.000077, .000076, -.000075, .000074, -.000072, .000071, -.00007, .000069, -.000068, .000066, -.000065, .000064, -.000063, .000062, -.000061, .000059, -.000058, .000057, -.000056, .000054, -.000053, .000052, -.000051, .00005, -.000048, .000047, -.000046, .000045, -.000043, .000042, -.000041, .00004, -.000039, .000037, -.000036, .000035, -.000034, .000032, -.000031, .00003, -.000029, .000027, -.000026, .000025, -.000024, .000023, -.000021, .00002, -.000019, .000018, -.000016, .000015, -.000014, .000013, -.000011, .00001, -.000009, .000008, -.000006, .000005, -.000004, .000003, -.000001 ] } ], + [ "buzz2", { real: [ 0, .126773, .017974, -.018236, -.000572, .018139, -.001907, .002945, -.007326, .005861, .000958, .001293, -.001846, -.002062, .001217, -.000753, .001256, -.001891, -.002088, .001745, -.000204, .000173, -.000884, .002247, -.00241, .002232, .002181, -.003279, .003242, -.00095, -.001026, .002184, -.003085, .002124, -.002152, -.001293, .002599, -.002155, -.002941, .002503, .002728, -.001087, .000901, .001888, -.002741, .002782, -.002764, .001516, -.001023, -.001274, .001432, -.002487, .002618, -.00191, .001318, -.000263, -.001235, .00215, -.002365, .002234, -.000981, .000604, .00032, -.000442, .001822, -.001934, .000528, -.00068, -.000302, .001319, -.00185, .001594, -.001648, .00065, -.000618, -.000763, .000747, -.001512, .001385, -.001188, .000802, .000728, -.000843, .001206, -.001445, .001227, -.001186, -.000298, -.000425, -.001364, .000437, -.00135, .001139, -.000642, -.000374, .000923, -.001139, .000224, -.001272, .001266, -.000643, .000204, -.000017, -.001054, -.001249, -.001247, .001118, -.000955, -.001001, .000121, -.001124, .000892, -.00105, -.000692, .001116, -.000923, -.000601, -.001035, .000094, -.000626, .000494, -.000222, -.000828, .000203, -.001105, -.000212, -.001105, -.00089, -.001009, -.00097, -.001022, -.001044, -.001018, -.001014, -.000921, -.000681, -.001038, -.000811, -.001011, -.000766, -.000843, -.00102, -.00062, -.000869, -.001005, -.001001, -.000934, -.000999, -.000986, -.000806, -.000909, -.000986, -.000946, -.000979, -.000912, -.000751, -.000971, -.000805, -.000872, -.000801, -.000869, -.000789, -.000867, -.000866, -.000822, -.000785, -.000851, -.000853, -.000853, -.00082, -.000745, -.000841, -.000843, -.000801, -.000799, -.000835, -.000834, -.00079, -.000815, -.000764, -.000795, -.000708, -.000787, -.000818, -.000806, -.000742, -.000808, -.000783, -.000745, -.000766, -.000766, -.00064, -.000769, -.000747, -.000741, -.000766, -.000744, -.000747, -.000759, -.00076, -.000749, -.000698, -.000736, -.000753, -.000742, -.000743, -.000747, -.00074, -.000716, -.000739, -.00074, -.000731, -.000723, -.000717, -.000716, -.000693, -.000679, -.000631, -.000604, -.000564, -.000485, -.000444, -.000345, -.000282, -.000179, -.00009, .000013, .000107, .000182, .000272, .000354, .000428, .000479, .00053, .00058, .000613, .00063, .000645, .000622, .000631, .000629, .000627, .000632, .000634, .000626, .00062, .000625, .000627, .000617, .00061, .000617, .00062, .000609, .000602, .000611, .000614, .000602, .000595, .000605, .000609, .000596, .000588, .000599, .000604, .00059, .000581, .000594, .0006, .000585, .000575, .000589, .000595, .000579, .00057, .000585, .000591, .000574, .000565, .000581, .000587, .00057, .00056, .000576, .000583, .000566, .000555, .000572, .000579, .000562, .000551, .000569, .000576, .000558, .000547, .000565, .000572, .000554, .000543, .000561, .000569, .00055, .000539, .000558, .000566, .000547, .000536, .000555, .000562, .000543, .000532, .000551, .000559, .00054, .000529, .000548, .000556, .000537, .000525, .000545, .000553, .000534, .000522, .000542, .00055, .000531, .000519, .000539, .000547, .000528, .000516, .000536, .000544, .000525, .000513, .000533, .000541, .000522, .00051, .000531, .000539, .00052, .000508, .000528, .000536, .000517, .000505, .000525, .000533, .000514, .000502, .000522, .00053, .000512, .0005, .00052, .000528, .000509, .000497, .000517, .000525, .000507, .000495, .000514, .000522, .000504, .000492, .000512, .00052, .000502, .00049, .00051, .000518, .000499, .000487, .000507, .000515, .000497, .000485, .000505, .000512, .000495, .000483, .000502, .00051, .000493, .000481, .0005, .000508, .000491, .000478, .000498, .000505, .000488, .000476, .000495, .000503, .000486, .000474, .000493, .000501, .000484, .000472, .000491, .000498, .000482, .00047, .000489, .000496, .00048, .000468, .000487, .000494, .000479, .000466, .000485, .000492, .000476, .000463, .000482, .00049, .000474, .000462, .00048, .000488, .000472, .00046, .000478, .000485, .00047, .000458, .000476, .000483, .000468, .000456, .000474, .000481, .000467, .000455, .000472, .000479, .000465, .000452, .000471, .000477, .000463, .000451, .000468, .000475, .000461, .000449, .000467, .000473, .000459, .000447, .000465, .000471, .000458, .000446, .000463, .000469, .000456, .000444, .000461, .000467, .000454, .000442, .000459, .000465, .000452, .000441, .000457, .000464, .000451, .00044, .000456, .000462, .000449, .000438, .000454, .00046, .000447, .000435, .000452, .000458, .000446, .000434, .00045, .000456, .000445, .000433, .000449, .000455, .000443, .000434, .000447, .000453, .000441, .000429, .000449, .000445, .000441, .000423, .000458, .000468, .000468, .000455, .000469, .000476, .000464, .000452, .000468, .000474, .000462, .000449, .000466, .000473, .000462, .000448, .000465, .00047, .000459, .000447, .000464, .000469, .000457, .000446, .000462, .000467, .000456, .000444, .00046, .000466, .000454, .000442, .000458, .000464, .000453, .000441, .000457, .000462, .000451, .00044, .000455, .00046, .00045, .000439, .000454, .000459, .000448, .000436, .000452, .000457, .000447, .000436, .00045, .000456, .000445, .000434, .000449, .000454, .000444, .000432, .000448, .000452, .000443, .00043, .000446, .000451, .000441, .000429, .000444, .000449, .00044, .000429, .000443, .000448, .000438, .000427, .000442, .000446, .000437, .000425, .00044, .000445, .000436, .000424, .000438, .000443, .000435, .000423, .000436, .000442, .000433, .000421, .000436, .00044, .000431, .00042, .000435, .000439, .00043, .000418, .000434, .000438, .000429, .000417, .000432, .000436, .000428, .000417, .00043, .000435, .000427, .000416, .000429, .000433, .000425, .000414, .000428, .000432, .000424, .000413, .000427, .000431, .000422, .000411, .000426, .000429, .000422, .00041, .000424, .000428, .00042, .00041, .000423, .000427, .000419, .000409, .000421, .000425, .000418, .000406, .00042, .000424, .000417, .000406, .000419, .000423, .000415, .000405, .000418, .000421, .000414, .000404, .000416, .00042, .000413, .000402, .000415, .000419, .000412, .000403, .000414, .000418, .00041, .000401, .000426, .000429, .000422, .000411, .000425, .000428, .000421, .000411, .000423, .000427, .00042, .00041, .000422, .000425, .000419, .000408, .000421, .000424, .000418, .000408, .00042, .000423, .000417, .000407, .000419, .000422, .000415, .000405, .000418, .000421, .000414, .000403, .000416, .000419, .000414, .000403, .000415, .000418, .000412, .000402, .000414, .000417, .000411, .000401, .000413, .000416, .00041, .0004, .000412, .000415, .000409, .000399, .000411, .000414, .000408, .000399, .00041, .000412, .000407, .000398, .000409, .000411, .000406, .000396, .000407, .00041, .000405, .000395, .000407, .000409, .000404, .000395, .000406, .000408, .000403, .000393, .000404, .000407, .000402, .000391, .000404, .000406, .000401, .00039, .000402, .000405, .000399, .000391, .000401, .000404, .000399, .000389, .0004, .000403, .000398, .000389, .000399, .000401, .000396, .000387, .000398, .0004, .000396, .000386, .000397, .000399, .000395, .000386, .000396, .000398, .000394, .000384, .000395, .000397, .000393, .000384, .000394, .000396, .000392, .000383, .000393, .000395, .000391, .000382, .000393, .000394, .00039, .000381, .000391, .000393, .000389, .00038, .00039, .000392, .000388, .000379, .00039, .000391, .000387, .000379, .000389, .00039, .000386, .000378, .000388, .000389, .000386, .000376, .000387, .000388, .000385, .000376, .000386, .000388, .000384, .000374, .000385, .000387, .000384, .000374, .000384, .000386, .000382, .000374, .000383, .000385, .000381, .00037, .000382, .000384, .00038, .000371, .000381, .000383, .000379, .000371, .00038, .000382, .000378, .00037, .00038, .000381, .000378, .000369, .000379, .00038, .000377, .000368, .000378, .000379, .000376, .000367, .000377, .000378, .000375, .000366, .000376, .000377, .000374, .000366, .000376, .000376, .000374, .000366, .000374, .000376, .000373, .000364, .000373, .000375, .000372, .000362, .000373, .000374, .000372, .000363, .000372, .000373, .00037, .000362, .000371, .000372, .000369, .000361, .00037, .000371, .000368, .000361, .00037, .000371, .000368, .000362, .000368, .00037, .000367, .000359, .000368, .000369, .000366, .000358, .000367, .000368, .000366, .000358, .000366, .000367, .000365, .000359, .000366, .000367, .000365, .000355, .000365, .000366, .000363, .000354, .000364, .000365, .000363, .000353, .000363, .000364, .000362, .000355, .000362, .000363, .000361, .000352, .000362, .000362, .00036, .000353, .000361, .000362, .000359, .000351, .00036, .000361, .000359, .000351, .00036, .00036, .000358, .000351, .000359, .000359, .000357, .000348, .000358, .000359, .000357, .000349, .000357, .000357, .000355, .000349, .000357, .000357, .000356, .000348, .000356, .000356, .000355, .000347, .000355, .000356, .000354, .000346, .000354, .000355, .000352, .000347, .000354, .000354, .000352, .000346, .000353, .000353, .000351, .000344, .000352, .000353, .000351, .000342, .000351, .000351, .00035, .000342, .00035, .000351, .000348, .000343, .00035, .000351, .00034, .000342, .00035, .00035, .000338, .000348, .000348, .000348, .000348, .000341, .000349, .000348, .000347, .000336, .000348, .000347, .000347, .000337, .000347, .000347, .000346, .00034, .000346, .000345, .000345, .00034, .000345, .000346, .000345, .000337, .000345, .000345, .000344, .000337, .000344, .000344, .000343, .000338, .000343, .000343, .000342, .000337, .000343, .000343, .000341, .000334, .000342, .000342, .000341, .000334, .000342, .000342, .000341, .000332, .000341, .000341, .00034, .000332, .00034, .00034, .000338, .000332, .00034, .000339, .000338, .000331, .000339, .000339, .000338, .000332, .000339, .000338, .000338, .000332, .000338, .000338, .000337, .000331, .000337, .000337, .000336, .000329, .000337, .000336, .000336, .00033, .000336, .000336, .000336, .000328, .000335, .000336, .000335, .000328, .000335, .000334, .000334, .000326, .000334, .000334, .000333, .000326, .000334, .000334, .000332, .000326, .000333, .000333, .000332, .000325, .000332, .000333, .000331, .000325, .000332, .000332, .000331, .000345, .000352, .00035, .000352, .000347, .000351, .000351, .000351, .000343, .000351, .00035, .00035, .000344, .00035, .00035, .000349, .000342, .00035, .00035, .000349, .000342, .000349, .000349, .000348, .000341, .000348, .000348, .000348, .000341, .000347, .000347, .000347, .000339, .000347, .000346, .000347, .00034, .000347, .000346, .000345, .000339, .000346, .000345, .000346, .00034, .000345, .000345, .000345, .000338, .000345, .000344, .000344, .000336, .000344, .000344, .000343, .000337, .000344, .000343, .000342, .000336, .000343, .000343, .000342, .000338, .000343, .000342, .000342, .000337, .000342, .000342, .000341, .000334, .000341, .000341, .000341, .000335, .000341, .000341, .00034, .000334, .00034, .000339, .000339, .000333, .000339, .000339, .000339, .000334, .000339, .000339, .000339, .000332, .000338, .000338, .000338, .000332, .000338, .000337, .000337, .000331, .000337, .000337, .000337, .00033, .000337, .000336, .000336, .00033, .000337, .000336, .000336, .00033, .000336, .000335, .000336, .000328, .000336, .000335, .000335, .000329, .000335, .000334, .000334, .00033, .000334, .000334, .000334, .000328, .000334, .000334, .000333, .000327, .000333, .000333, .000333, .000327, .000333, .000332, .000332, .000328, .000332, .000331, .000331, .000325, .000332, .000331, .000331, .000326, .000331, .000329, .000331, .000325, .000331, .00033, .00033, .000324, .00033, .000329, .00033, .000324, .000329, .000328, .000329, .000325, .000328, .000328, .000329, .000323, .000329, .000328, .000328, .000323, .000328, .000327, .000328, .000322, .000328, .000327, .000327, .000321, .000327, .000327, .000327, .000321, .000327, .000326, .000326, .000319, .000326, .000325, .000326, .000321, .000325, .000325, .000325, .000316, .000325, .000324, .000325, .000318, .000325, .000324, .000324, .000319, .000324, .000323, .000324, .00032, .000324, .000322, .000323, .000318, .000323, .000322, .000323, .000318, .000323, .000322, .000322, .000316, .000322, .000321, .000322, .000317, .000322, .000321, .000322, .000315, .000321, .00032, .000321, .000317, .000321, .00032, .000321, .000315, .000321, .000319, .00032, .000314, .00032, .000319, .000319, .000312, .000319, .000318, .000319, .000314, .000319, .000317, .000319, .000311, .000319, .000317, .000318, .000314, .000318, .000318, .000318, .000312, .000318, .000316, .000317, .000332, .000337, .000336, .000337, .000329, .000337, .000336, .000336, .000331, .000336, .000334, .000336, .00033, .000336, .000334, .000335, .000329, .000335, .000334, .000335, .00033, .000335, .000333, .000334, .00033, .000335, .000332, .000334, .000328, .000334, .000332, .000333, .00033, .000334, .000333, .000333, .000329, .000333, .000331, .000333, .000326, .000333, .000331, .000332, .000325, .000332, .000331, .000331, .000327, .000331, .00033, .000331, .000326, .000331, .000329, .000331, .000325, .00033, .00033, .000331, .000323, .00033, .000329, .00033, .000325, .00033, .000328, .000329, .000324, .000329, .000328, .000329, .000325, .000329, .000328, .000329, .000323, .000329, .000327, .000327, .000323, .000328, .000326, .000328, .000321, .000328, .000326, .000327, .000323, .000327, .000325, .000327, .000324, .000327, .000325, .000326, .000323, .000326, .000325, .000326, .000321, .000326, .000324, .000325, .000321, .000325, .000324, .000325, .00032, .000325, .000324, .000324, .000319, .000325, .000323, .000324, .00032, .000324, .000321, .000324, .000314, .000324, .000323, .000308, .000305, .000323, .000322, .000323, .000319, .000323, .000321, .000323, .000319, .000323, .00032, .000322, .000316, .000322, .00032, .000322, .000317, .000322, .000321, .000321, .000316, .000321, .00032, .000321, .000315, .000321, .000318, .00032, .000315, .000319, .000314, .00032, .00032, .000319, .000317, .00032, .000313, .00032, .000318, .000319, .000316, .000319, .000317, .000319, .000314, .000318, .000316, .000319, .000314, .000318, .000316, .000318, .000314, .000318, .000315, .000318, .000345, .000348, .000345, .000348, .000342, .000348, .000346, .000347, .000342, .000347, .000346, .000347, .000341, .000347, .000345, .000346, .000344, .000346, .000344, .000346, .000341, .000346, .000342, .000346, .000341, .000345, .000344, .000344, .000344, .000344, .000344, .000343, .000342, .000345, .000342, .000344, .00034, .000344, .000342, .000344, .00034, .000344, .000342, .000344, .000338, .000343, .000341, .000342, .000337, .000343, .000341, .000343, .000338, .000343, .000341, .000342, .000337, .000342, .000339, .000342, .000337, .000342, .000339, .000341, .000336, .000341, .000339, .000341, .000336, .000341, .000336, .00034, .000333, .00034, .000339, .00034, .000335, .00034, .000338, .000339, .000337, .000339, .000337, .000339, .000335, .000339, .000337, .000339, .000333, .000339, .000335, .000338, .000335, .000339, .000337, .000338, .000334, .000338, .000336, .000338, .000333, .000337, .000335, .000337, .000335, .000337, .000336, .000337, .000332, .000337, .000333, .000337, .000332, .000336, .000335, .000336, .000328, .000336, .000334, .000335, .00033, .000336, .000333, .000335, .00033, .000335, .000332, .000335, .000332, .000335, .000332, .000335, .00033, .000334, .000333, .000334, .000327, .000334, .000332, .000334, .000329, .000334, .000331, .000333, .000329, .000333, .00033, .000333, .000329, .000333, .000331, .000333, .000328, .000333, .00033, .000332, .000327, .000332, .00033, .000332, .000327, .000332, .000329, .000331, .000328, .000331, .000331, .000331, .000326, .000331, .000329, .000331, .000326, .000331, .000329, .00033, .000326, .00033, .000329, .00033, .000325, .00033, .000326, .00033, .000325, .000329, .000328, .000329, .000326, .000329, .000325, .000329, .000325, .000329, .000325, .000329, .000323, .000328, .000325, .000328, .000324, .000328, .000324, .000328, .000325, .000328, .000325, .000327, .000322, .000327, .000325, .000327, .000323, .000327, .000324, .000327, .000321, .000326, .000324, .000326, .000322, .000326, .000325, .000326, .00032, .000326, .000323, .000326, .000321, .000325, .000318, .000379, .000376, .000379, .000375, .000379, .000373, .000379, .000375, .000378, .000373, .000378, .000375, .000378, .000373, .000378, .000376, .000377, .000373, .000377, .000374, .000377, .000374, .000377, .000372, .000377, .000372, .000376, .000373, .000376, .000372, .000376, .000374, .000376, .000369, .000376, .000371, .000375, .000371, .000375, .000372, .000375, .000369, .000375, .000371, .000375, .00037, .000374, .000372, .000374, .000372, .000374, .00037, .000374, .000368, .000374, .000371, .000373, .000369, .000373, .00037, .000373, .000368, .000373, .000369, .000373, .000366, .000372, .000369, .000372, .000368, .000372, .000367, .000372, .000366, .000372, .000369, .000371, .000368, .000371, .000367, .000371, .000367, .000371, .000368, .000371, .000366, .00037, .000367, .00037, .000366, .00037, .000365, .00037, .000365, .00037, .000367, .000369, .000362, .000369, .000367, .000369, .000364, .000369, .000364, .000369, .000364, .000369, .000366, .000368, .000364, .000368, .000366, .000368, .000362, .000368, .000365, .000368, .000364, .000367, .000365, .000367, .000361, .000367, .000357, .000367, .000362, .000367, .000366, .000366, .000362, .000366, .000364, .000366, .000362, .000366, .000361, .000365, .000363, .000365, .000362, .000365, .000362, .000365, .00036, .000365, .00036, .000365, .000361, .000364, .00036, .000364, .00036, .000364, .000358, .000364, .000361, .000364, .000359, .000363, .000357, .000363, .000361, .000363, .000361, .000363, .00036, .000363, .000407, .00041, .000403, .00041, .000406, .00041, .000404, .000409, .000407, .000409, .000405, .000409, .000405, .000409, .000403, .000409, .000402, .000408, .000404, .000408, .000404, .000408, .000402, .000408, .000406, .000408, .000404, .000407, .000403, .000407, .000404, .000407, .000402, .000406, .000402, .000406, .000402, .000406, .000402, .000406, .000402, .000405, .000399, .000404, .000397, .000406, .000394, .000404, .000393, .000405, .000398, .000405, .000366, .000369, .000364, .000369, .000366, .000369, .000367, .000369, .000365, .000368, .000364, .000368, .000366, .000368, .000364, .000368, .000363, .000368, .000363, .000367, .000364, .000367, .000363, .000367, .000364, .000367, .000364, .000367, .000363, .000367, .000362, .000366, .000363, .000366, .000362, .000366, .000365 ], imag: [ 0, -.049064, -.06626, .053048, -.003642, .016123, -.016702, -.003665, .002182, .00251, .003818, -.002636, .001435, -.001056, .001955, .002094, -.00175, .000892, -.000171, .001398, .002456, .003367, -.003502, .003155, .002928, -.002971, .001835, -.000748, -.00063, .003104, -.003022, .002255, -.000799, -.00231, .00222, -.002864, .001688, -.002168, -.000668, .001613, -.001096, .002791, -.002819, .002233, -.000921, .00066, .000596, -.002351, .002573, -.002426, .002304, -.001014, .000473, .001579, -.002072, .002419, -.002071, .001044, -.000144, -.000728, .002113, -.00223, .002269, -.00223, .001087, .000831, -.002021, .001959, -.002036, .001317, -.000024, .000914, .000784, -.001691, .001415, -.00133, .001328, -.000073, -.000587, .000906, -.00125, .001284, -.0012, .000819, .00011, -.000668, .000722, -.001349, .001306, .000069, .001286, -.000006, -.000712, .001172, -.001275, .000947, -.000657, .001289, -.000277, .000272, .001117, -.001266, .001276, -.000708, -.000189, -.000164, -.000563, .0008, -.000732, .001228, .000497, -.000837, .000616, -.000995, .00046, -.000769, .001035, .000591, .001183, .001002, .001068, .001151, -.000822, .001144, .000343, -.001133, .000311, .000718, .000361, .000445, -.000294, .000181, .000278, .000278, -.000499, .000791, .000053, .000644, .000206, -.000686, .000582, -.000056, -.000807, -.000522, -.000101, -.000112, -.000368, -.000054, -.000145, .000581, .000392, -.000041, .00027, -.000042, .00035, -.00062, -.000022, .000363, .000114, .000356, -.000094, .00037, .000061, .000005, .000265, -.000353, -.000116, .000066, .000004, .000226, .000406, .000089, .000016, .000257, .000256, .000045, .000015, .00026, .000154, .000316, .00022, .000418, .000231, -.000003, .000127, .000334, .000072, .000041, .000238, .000149, .000139, .000439, .000094, .000198, .000212, .000066, .000186, .000163, .000073, .000036, .00012, .000292, .00017, .00001, .000115, .000099, -.000037, -.000093, .000204, .000064, .000009, .000106, .000144, .000163, .000158, .000234, .000268, .000363, .000404, .000455, .000537, .000569, .000632, .000661, .000694, .00071, .000714, .000704, .000687, .000655, .000613, .000562, .000517, .000462, .000395, .000338, .000302, .000266, .000203, .000168, .000169, .000171, .000146, .000132, .000159, .000177, .000154, .00014, .000173, .000192, .000163, .000146, .000182, .000201, .000168, .00015, .000188, .000207, .000171, .00015, .000192, .000213, .000173, .00015, .000195, .000216, .000174, .000149, .000197, .000219, .000174, .000148, .000198, .000221, .000173, .000146, .000198, .000222, .000172, .000144, .000198, .000222, .000171, .000142, .000198, .000222, .00017, .000139, .000197, .000221, .000168, .000137, .000196, .000221, .000166, .000135, .000194, .000221, .000164, .000132, .000193, .000219, .000162, .000129, .000191, .000218, .00016, .000126, .000189, .000217, .000158, .000123, .000188, .000215, .000156, .00012, .000186, .000214, .000154, .000117, .000184, .000212, .000152, .000114, .000182, .00021, .00015, .000112, .00018, .000208, .000147, .00011, .000178, .000207, .000146, .000106, .000175, .000206, .000143, .000104, .000174, .000204, .000141, .000102, .000171, .000202, .000138, .000099, .000169, .0002, .000136, .000098, .000167, .000199, .000135, .000095, .000166, .000197, .000133, .000093, .000163, .000195, .000131, .00009, .000161, .000193, .000129, .000087, .000159, .000192, .000127, .000085, .000158, .00019, .000125, .000083, .000155, .000189, .000123, .000082, .000153, .000186, .000121, .000081, .000151, .000185, .000119, .000078, .000149, .000183, .000117, .000076, .000148, .000182, .000116, .000072, .000146, .000179, .000115, .000072, .000143, .000177, .000113, .00007, .000142, .000176, .000111, .000067, .000139, .000175, .000111, .000063, .000135, .000173, .000109, .000066, .000137, .000173, .000107, .000063, .000136, .000171, .000106, .00006, .000133, .000169, .000104, .00006, .000132, .000168, .000104, .000057, .000131, .000166, .000101, .000057, .000128, .000164, .000099, .000055, .000126, .000164, .000098, .000053, .000125, .000162, .000098, .000052, .000123, .000161, .000096, .000049, .000122, .000159, .000094, .000048, .00012, .000156, .000093, .000047, .000119, .000156, .000091, .000046, .000119, .000156, .000091, .000046, .000117, .000152, .000091, .000043, .000114, .00015, .000088, .00004, .000115, .00015, .000087, .000039, .000114, .000152, .000085, .000038, .00011, .00015, .000088, .000038, .000108, .000145, .000085, .000037, .000106, .000138, .000082, .000031, .000106, .000148, .000056, .000082, .0001, .000158, .000144, .000101, .0001, .000147, .000089, .000037, .000112, .000152, .000086, .000033, .000109, .000153, .000087, .00003, .000101, .000151, .000081, .000035, .000107, .000147, .000078, .000031, .000106, .000146, .000078, .00003, .000103, .000144, .000081, .000029, .000104, .000146, .000078, .000027, .000102, .000142, .000076, .000027, .000101, .000142, .000078, .00003, .000101, .00014, .000076, .000026, .000099, .000143, .000076, .000025, .000098, .000138, .000076, .000024, .000098, .000139, .000074, .000026, .000096, .00014, .000072, .000024, .000093, .000139, .000071, .000019, .000093, .000138, .000073, .000021, .000092, .000133, .000071, .000024, .000092, .000133, .00007, .000018, .000091, .000134, .000069, .000023, .00009, .000133, .00007, .000016, .000087, .000131, .000078, .00002, .000088, .000133, .000066, .000016, .000089, .00013, .000065, .000015, .000088, .000132, .000063, .000014, .000085, .00013, .000064, .000017, .000084, .000127, .000066, .000013, .000083, .000125, .000063, .000009, .000082, .000125, .000061, .000011, .00008, .000125, .000061, .000011, .000083, .000126, .00006, .000014, .000079, .000124, .000061, .000011, .00008, .000121, .00006, .000011, .000079, .000119, .000062, .000014, .000077, .000126, .000058, .000005, .000076, .00012, .000058, .000008, .000078, .000119, .000056, .000009, .000075, .000117, .000059, .000008, .000075, .000119, .000057, .000009, .000074, .000113, .000057, .000003, .000076, .000113, .000056, .000006, .000075, .00012, .000056, .000007, .000074, .000117, .000058, .000007, .000073, .000118, .000058, .000015, .00007, .000119, .000054, .000003, .000072, .000114, .000053, .000001, .000069, .000114, .000052, .000004, .000073, .000114, .000052, .000005, .00007, .000117, .000052, .000002, .000067, .000115, .000054, .000004, .000067, .000114, .000051, .000003, .00007, .000114, .000048, -.000003, .000067, .000112, .000052, -.000003, .000065, .00011, .000049, -.000002, .000063, .000108, .000049, -.000001, .000066, .000107, .000047, -.000002, .000066, .000108, .000051, -.000001, .000066, .00011, .000046, -.000005, .00006, .000104, .000044, -.000003, .000063, .000108, .000047, -.000005, .000062, .00011, .000044, 0, .000061, .000109, .000047, -.000003, .000063, .000103, .000047, -.000005, .000058, .000105, .000045, -.000005, .000058, .000102, .000045, -.000004, .000061, .000105, .000044, -.000003, .000058, .000104, .000047, -.000001, .00006, .000102, .000043, -.000009, .000058, .000105, .000045, -.000005, .000056, .000099, .000044, -.000005, .000056, .0001, .000044, -.000008, .000053, .000101, .00004, -.000007, .000054, .0001, .000044, -.000006, .000054, .000101, .000041, -.000012, .000056, .000099, .000039, -.000007, .000056, .000096, .000041, -.000012, .000055, .000098, .000041, -.000009, .000053, .0001, .000037, -.000009, .000051, .000096, .000039, -.000006, .000051, .000099, .000039, -.000009, .000045, .000096, .000039, -.000005, .00005, .000094, .000041, -.000012, .000052, .000103, .000038, -.000015, .00005, .000097, .000037, -.000016, .000053, .000094, .000038, -.00001, .000051, .000095, .000037, -.000009, .000047, .000092, .000038, -.000013, .000049, .000092, .000033, -.000016, .000049, .000093, .000039, -.000011, .00005, .000093, .000037, -.000011, .000049, .00009, .000033, -.000015, .000047, .000089, .000035, -.000014, .000046, .000092, .000037, -.000014, .000044, .000094, .000032, -.000013, .000041, .00009, .000037, -.000019, .000046, .000089, .000034, -.000014, .00005, .000088, .000036, -.000015, .000048, .000085, .000031, 0, .000043, .000079, .000036, -.000016, .000042, .000087, .000033, -.000013, .000044, .000088, .000032, -.000015, .000039, .000087, .000032, -.000022, .000039, .000079, .000031, -.000009, .000037, .000089, .000032, -.000017, .000048, .00009, .000033, -.000012, .000041, .000091, .000034, .000003, .000043, .000082, .000037, -.000008, .000044, .00009, .000031, -.000016, .000046, .000083, .000032, -.000016, .000043, .000087, .000029, -.000023, .000039, .000086, .000027, -.000014, .00004, .00008, .00003, -.00002, .000042, .000091, .000031, -.000014, .000037, .000082, .000032, -.000026, .000043, .000081, .000028, -.000016, .000033, .00008, .000031, -.000019, .000032, .000081, .000031, -.000012, .00004, .000083, .00003, -.00002, .000045, .000073, .000027, -.000024, .000037, .000075, .000031, -.000024, .000041, .00008, .000026, -.000017, .000037, .000087, .000029, -.000028, .000041, .000083, .00004, -.000022, .000052, .000077, .000028, -.000005, .000085, .000077, .000017, .000019, .000092, .000038, .000034, -.000031, .000035, .000073, .000018, -.000018, .000035, .000093, .00002, -.000025, .000028, .000086, .000025, -.000022, .000025, .00007, .000031, -.000038, .000032, .000068, .00003, -.000018, .000029, .000079, .000025, -.000025, .00003, .000073, .000021, -.000018, .000037, .000068, .000025, -.000023, .000037, .00007, .000026, -.000022, .000037, .00008, .000024, -.000021, .000033, .000076, .000021, -.000023, .00003, .000081, .000025, -.000013, .000033, .000078, .000023, -.000021, .00004, .000075, .000025, -.000027, .000036, .000077, .000026, -.000027, .000036, .00007, .00002, -.000022, .000029, .000069, .000024, -.000018, .000033, .000071, .000021, -.000028, .00003, .000075, .000022, -.000027, .00003, .000066, .000021, -.000009, .000025, .000073, .000027, .000004, .000024, .00007, .000021, -.000025, .000032, .000078, .000027, -.000023, .000032, .000075, .000022, -.000018, .000034, .00007, .000022, -.000021, .000026, .000075, .000021, -.000016, .000032, .000071, .000019, -.000023, .000026, .000075, .000021, -.000043, .000026, .000062, .000025, -.000025, .000024, .000078, .000027, -.000028, .000032, .000073, .000023, -.000024, .000034, .000079, .000024, -.000021, .00003, .000072, .000023, -.000026, .000033, .000077, .000022, -.00003, .000029, .000074, .000028, -.000027, .000032, .000078, .000021, -.000037, .000027, .000071, .000015, -.000027, .000033, .000072, .000018, -.000031, .000023, .000067, .000024, -.000031, .000025, .000073, .000021, -.000027, .000031, .000078, .000023, -.000024, .000032, .00007, .000022, -.00003, .000036, .000076, .000017, -.000017, .000034, .000063, .000018, -.000028, .000026, .000062, .00002, -.000024, .000027, .000075, .000024, -.000027, .000026, .000067, .000023, -.000024, .000031, .000068, .00002, -.000031, .000031, .000071, .000026, -.000027, .00003, .000063, .000017, -.000027, .000026, .00007, .000024, -.000032, .000022, .000066, .000018, -.000028, .000027, .000071, .000023, -.000026, .000024, .000072, .000018, -.000032, .000025, .000067, .000019, -.000029, .000029, .000067, .000016, -.000033, .00002, .000073, .000015, -.000029, .000028, .000068, .000021, -.000029, .000028, .000057, .000019, -.000022, .000026, .000063, .000016, -.000022, .00002, .000068, .000015, -.000022, .000021, .000066, .000019, -.000023, .000023, .000058, .000019, -.000028, .000027, .00007, .000019, -.000021, .00002, .000062, .000016, -.000039, .000021, .000063, .000017, -.000022, .000027, .000069, .000015, -.000027, .000022, .000064, .000022, -.000032, .000023, .000056, .000037, -.000028, .000017, .000065, .00001, -.00003, .000018, .000062, .000014, -.00003, .000023, .000066, .00002, -.000025, .000021, .000066, .000009, -.000023, .000022, .000064, .000014, -.000026, .000022, .00007, .000017, -.000026, .000021, .000061, .000022, -.00003, .000025, .000078, .00001, -.000029, .000018, .000066, .000015, -.000026, .000019, .000062, .000018, -.00003, .000022, .000053, .000009, -.000033, .000017, .000059, .000014, -.000032, .000019, .000059, .000016, -.000028, .000021, .000068, .000015, -.000035, .000018, .00006, .000019, -.000028, .000017, .000067, .000018, -.000033, .000025, .000055, .000013, -.000031, .000016, .000064, .000013, -.000028, .000015, .000063, .000014, -.000027, .000025, .00007, .000015, -.000032, .000024, .000057, .000013, -.000039, .00002, .00007, .000013, -.000032, .000017, .000056, .000015, -.000021, .000021, .000063, .000016, -.000032, .000027, .000065, .000016, -.000029, .000014, .000072, .000014, -.000028, .00002, .000061, .000012, -.000038, .000021, .000065, .000014, -.000035, .000021, .000065, .00002, -.000029, .000017, .000061, .00001, -.000035, .000022, .000059, .000008, -.000044, .000013, .000064, .000016, -.000038, .000028, .000054, .000003, -.000023, .000023, .000052, .000018, -.000037, .000017, .000067, .000009, -.000035, .000015, .000071, .000016, -.000034, .000023, .000058, .000018, -.000033, .000017, .000059, .000013, -.000038, .000012, .000062, .000019, -.000029, .000012, .000069, .000008, -.000031, .000019, .000058, .000016, -.000039, .000024, .000059, .000017, -.000031, .000017, .000056, .000011, -.000032, .000016, .000063, .00001, -.000036, .000029, .000057, .000012, -.000042, .000018, .000069, .000013, -.000037, .000013, .000056, .000009, -.000036, .000011, .000045, .000014, -.00003, .000014, .000048, .000013, -.00003, .000012, .000058, .000004, -.000039, .000023, .000054, .000014, -.00003, .000018, .000059, .00001, -.000027, .000019, .00006, .000005, -.000035, .00001, .000055, .000006, -.000042, -.000006, .000081, -.000001, -.000019, .0001, .000108, -.000019, -.000034, .000015, .000054, .000013, -.000035, .000011, .000052, .000006, -.000039, .000022, .000064, .000014, -.00004, .000013, .000053, .000008, -.000024, .000016, .000059, .00001, -.000032, .000014, .00006, .000011, -.000042, .000019, .000059, .000029, -.000065, .000012, .000012, .000021, -.000043, .000014, .000064, .000007, -.000032, .000019, .000048, .000003, -.000034, .000007, .000058, .000021, -.000039, .000009, .000054, .000008, -.000037, .000011, .000053, .00001, -.000041, .000008, .000048, .000013, -.000045, .000006, .000064, .000003, -.000038, .000018, .000062, .000014, -.000029, .000014, .000065, .000014, -.000037, .000015, .000045, .00001, -.00004, .000005, .000059, 0, -.000051, .000013, .000058, .000014, -.000036, .000033, .000027, -.000025, -.000027, .000041, .000045, .00001, -.000041, .000014, .000055, .00001, -.000037, .000009, .000053, .000006, -.000034, .000004, .000062, .000008, -.000043, .000026, .000065, .000009, -.000041, .000011, .000055, .000011, -.000035, .000014, .000058, .000008, -.000047, .00001, .000056, .000005, -.000041, .000013, .000061, .000004, -.00004, .000013, .000056, .000017, -.000055, .000018, .000073, .000014, -.000035, .000011, .000059, .000003, -.000038, .000018, .000047, .000017, -.000042, .000015, .000056, -.000002, -.000037, .000005, .000063, .00001, -.000052, .000019, .000047, .000001, -.000029, -.000002, .000056, .000009, -.000036, .000009, .000059, .000012, -.000043, .000006, .000039, .000004, -.000032, .000007, .000058, .000001, -.000052, .000009, .000054, .000007, -.000031, .000007, .000072, .000006, -.000036, .000022, .000064, .000006, -.000043, .000011, .00006, .000011, -.000043, .00001, .000048, .000008, -.000043, .000007, .000054, .000005, -.000033, .000015, .000068, .000017, -.000034, .000013, .000057, .000008, -.000044, .000014, .000051, .000018, -.000044, .000009, .00005, .000014, -.000036, .000011, .000055, .000001, -.000044, .000003, .000056, .000003, -.000033, 0, .000057, .000002, -.000042, .000012, .000049, .000006, -.000022, .000016, .000058, .000008, -.000036, .000012, .000057, .000009, -.000036, .000005, .000056, .000006, -.000027, .000004, .000055, .000007, -.000047, .000009, .000052, .000006, -.000035, .000005, .000049, .000001, -.000051, .000008, .000049, -.000002, -.000049, 0, .000058, .000002, -.000043, .000004, .000055, .000003, -.000049, .000003, .000044, -.000004, -.000038, -.000014, .00006, .000008, -.000041, -.000002, .000049, .000004, -.00004, .000007, .000058, .000007, -.00004, .000012, .000052, .000001, -.000032, .000002, .000059, .000006, -.000044, .000008, .000052, .000001, -.000067, .000012, .000048, 0, -.000057, .000009, .000064, .000005, -.000051, .000017, .000064, .000003, -.000051, -.000003, .00006, .000008, -.000036, .000006, .000057, .000001, -.000048, .000007, .00005, .00001, -.000062, .000011, .000061, .000011, -.000048, .000006, .000054, -.000001, -.00004, -.000002, .000072, -.000001, -.000056, .000009, .000055, -.000005, -.000046, .000004, .000066, -.000003, -.000054, .000003, .000059, .000006, -.00004, .000009, .000042, 0, -.000053, .000012, .000066, .000008, -.000042, .000003, .000058, .000004, -.000047, .000004, .000058, -.000001, -.000055, .000009, .000069, -.000003, -.00005, -.000005, .000052, .000004, -.000059, .000001, .000065, .000005, -.000047, .000002, .000052, .000003, -.000055, .000006, .000052, -.000003, -.000041, .000001, .000057, .000004, -.00005, .000001, .000058, -.000003, -.000058, .000004, .000059, .000008, -.000047, .000008, .000072, .000006, -.000043, -.000002, .000058, 0, -.000057, .000005, .000059, .000002, -.000044, .000003, .000056, .000001, -.00004, .000008, .000063, .000003, -.000044, -.000001, .000052, .000004, -.000045, 0, .000068, -.000003, -.000084, .000001, .000057, -.000002, -.000004, .000001, .000053, -.000006, -.000035, -.000007, .000052, .000005, -.000057, .000017, .000044, -.000004, -.000053, .000003, .000045, .000007, -.000058, .000003, .000056, .000009, -.000054, .000011, .000058, .000002, -.000055, -.000006, .000065, .000009, -.000048, -.000001, .000058, .000009, -.000066, -.000003, .000039, -.000006, -.000041, .000011, .000047, -.000002, -.000049, .000004, .000076, -.000007, -.000057, .000001, .000067, .000009, -.000041, -.000003, .000055, .000005, -.000055, -.000001, .000066, .000001, -.00007, 0, .000059, .000005, -.000057, .000004, .000068, .000006, -.000036, .000004, .000055, -.000015, -.000056, .000009, .000051, -.000009, -.000061, -.000018, .000059, .000013, -.000058, -.000004, .000058, -.000003, -.000059, .000022, .000075, .000041, -.000082, .000002, .000097, .000031, -.000098, -.000003, .000076, 0, -.00005, 0, .000062, .000007, -.000047, .000006, .000031, -.000004, -.000051, .000004, .000054, .000006, -.000038, .000008, .000052, .000002, -.000056, .000001, .000055, 0, -.000052, .000005, .000055, .00001, -.000051, 0, .000047, .000012, -.000049, 0, .000054, -.000009, -.000045, .000012, .000054, 0, -.00003 ] } ], + [ "dissonance", { real: [ 0, -.000001, -.001193, .000975, -.225597, .000556, -.000341, .146408, -.000401, .000356, -.082233, .000203, -.000177, .054735, -.000862, .000714, -.054117, .000464, -.000438, .042607, -.000199, .000105, -.04084, .000061, -.00006, .027337, -.000058, .000057, -.033029, .00005, -.000049, .037746, -.000047, .000047, -.040758, .000062, -.001234, .008164, -.008056, .007953, -.007853, .007757, -.007665, .007575, -.007489, .007405, -.007103, .007028, -.006954, .006675, -.006608, .006543, -.00648, .006419, -.00636, .006302, -.005696, .005646, -.005597, .00555, -.005503, .005458, -.005414, .005371, -.005012, .004973, -.004936, .004899, -.004863, .004827, -.004793, .004759, -.004726, .003904, -.003878, .003852, -.003826, .003802, -.003777, .003753, -.00373, .003707, -.003684, .003662, -.003423, .003403, -.003384, .003364, -.003345, .003326, -.003308, .00329, -.003272, .003254, -.003237, .00322, -.003203, .003186, -.003074, .003059, -.003043, .003028, -.003014, .002999, -.002985, .00297, -.002956, .002942, -.002929, .002915, -.002902, .002889, -.002876, .002863, -.002851, .002839, -.002826, .002814, -.002802, .00279, -.002779, .002767, -.002756, .002745, -.002734, .002723, -.002712, .002701, -.002691, .00268, -.00267, .00266, -.00265, .00264, -.00263, .00262, -.00261, .002601, -.002591, .002582, -.002653, .002644, -.002634, .002625, -.002616, .002607, -.002598, .002589, -.00258, .002572, -.002563, .002555, -.002546, .002538, -.00253, .002521, -.002513, .002505, -.002497, .002489, -.002482, .002474, -.002466, .002459, -.002451, .002444, -.002436, .002429, -.002497, .00249, -.002482, .002475, -.002468, .002461, -.002453, .002446, -.002439, .002432, -.002426, .002419, -.002412, .002405, -.002399, .002392, -.002385, .002379, -.002373, .002366, -.00236, .002353, -.002347, .002341, -.002335, .002329, -.002323, .002317, -.002311, .002305, -.002299, .002293, -.002287, .002281, -.002276, .00227, -.002408, .002402, -.002396, .00239, -.002384, .002378, -.002373, .002367, -.002361, .002356, -.00235, .002345, -.002339, .002334, -.002328, .002323, -.002317, .002312, -.002307, .002301, -.002296, .002291, -.002286, .002281, -.002276, .00227, -.002265, .00226, -.002255, .00225, -.002246, .002241, -.002236, .002231, -.002226, .002221, -.002217, .002212, -.002207, .002202, -.002198, .002193, -.002189, .002184, -.00218, .002175, -.00217, .002166, -.002162, .002157, -.002153, .002148, -.002144, .00214, -.002135, .002198, -.002193, .002189, -.002185, .00218, -.002176, .002172, -.002167, .002163, -.002159, .002155, -.002151, .002146, -.002142, .002138, -.002134, .00213, -.002126, .002122, -.002118, .002114, -.00211, .002106, -.002102, .002098, -.002094, .00209, -.002086, .002083, -.002079, .002075, -.002071, .002067, -.002064, .00206, -.002056, .002052, -.002049, .002045, -.002041, .002038, -.002034, .002031, -.002027, .002023, -.00202, .002016, -.002013, .002009, -.002006, .002002, -.001999, .001995, -.001992, .001988, -.001985, .001981, -.001978, .001975, -.001971, .001968, -.001964, .001961, -.001958, .001954, -.001951, .001948, -.001945, .001941, -.001938, .001935, -.001932, .001928, -.001925, .001922, -.001919, .001916, -.001912, .001909, -.001906, .001903, -.0019, .001897, -.001894, .001891, -.001887, .001884, -.001881, .001878, -.001875, .001872, -.001869, .001866, -.001863, .00186, -.001857, .001854, -.001851, .001848, -.001845, .001842, -.001839, .001836, -.001833, .001831, -.001828, .001825, -.001822, .001819, -.001816, .001813, -.00181, .001807, -.001805, .001802, -.001799, .001796, -.001793, .001791, -.001788, .001785, -.001782, .001779, -.001777, .001774, -.001771, .001768, -.001766, .001763, -.00176, .001757, -.001755, .001752, -.001749, .001747, -.001744, .001741, -.001738, .001736, -.001733, .00173, -.001728, .001725, -.001722, .00172, -.001717, .001715, -.001712, .001709, -.001707, .001704, -.001701, .001699, -.001696, .001694, -.001691, .001689, -.001686, .001683, -.001681, .001678, -.001676, .001673, -.001671, .001668, -.001665, .001663, -.00166, .001658, -.001655, .001143, -.001142, .00114, -.001138, .001137, -.001135, .001133, -.001131, .00113, -.001128, .001126, -.001124, .001123, -.001121, .001119, -.001118, .001116, -.001114, .001112, -.001111, .001109, -.001107, .001106, -.001104, .001102, -.001101, .001099, -.001097, .001096, -.001094, .001092, -.001091, .001158, -.001156, .001154, -.001153, .001151, -.001149, .001147, -.001145, .001144, -.001142, .00114, -.001138, .001137, -.001135, .001133, -.001131, .00113, -.001128, .001126, -.001124, .001123, -.001121, .001119, -.001117, .001116, -.001114, .001112, -.00111, .001109, -.001107, .001105, -.001103, .001102, -.0011, .001098, -.001097, .001095, -.001093, .001091, -.00109, .001088, -.001086, .001084, -.001083, .001081, -.001079, .001078, -.001076, .001074, -.001072, .001071, -.001069, .001067, -.001065, .001064, -.001062, .00106, -.001059, .001057, -.001055, .001053, -.001052, .00105, -.001048, .001047, -.001045, .001043, -.001041, .00104, -.001038, .001036, -.001035, .001033, -.001031, .001029, -.001028, .001026, -.001024, .001023, -.001021, .001019, -.001017, .001016, -.001014, .001012, -.001011, .001009, -.001007, .001005, -.001004, .001002, -.001, .000999, -.000997, .000995, -.000993, .000992, -.00099, .000988, -.000987, .000985, -.000983, .000981, -.00098, .000978, -.000976, .000975, -.000973, .000971, -.000969, .000968, -.000966, .000964, -.000962, .000961, -.000959, .000957, -.000956, .000954, -.000952, .00095, -.000949, .000947, -.000945, .000943, -.000942, .00094, -.000938, .000937, -.000935, .000933, -.000931, .00093, -.000928, .000926, -.000924, .000923, -.000921, .000919, -.000917, .000916, -.000914, .000912, -.00091, .000909, -.000907, .000905, -.000903, .000902, -.0009, .000898, -.000896, .000895, -.000814, .000813, -.000811, .000809, -.000808, .000806, -.000805, .000803, -.000801, .0008, -.000798, .000796, -.000795, .000793, -.000792, .00079, -.000788, .000787, -.000785, .000783, -.000782, .00078, -.000778, .000777, -.000775, .000774, -.000772, .00077, -.000769, .000767, -.000765, .000764, -.000762, .00076, -.000759, .000757, -.000755, .000754, -.000752, .00075, -.000749, .000747, -.000745, .000744, -.000742, .00074, -.000739, .000737, -.000735, .000734, -.000732, .00073, -.000729, .000727, -.000725, .000724, -.000722, .00072, -.000719, .000717, -.000715, .000713, -.000712, .00071, -.000708, .000707, -.000705, .000703, -.000702, .0007, -.000698, .000696, -.000695, .000693, -.000691, .000689, -.000688, .000686, -.000684, .000683, -.000681, .000679, -.000677, .000676, -.000674, .000672, -.00067, .000669, -.000667, .000665, -.000663, .000662, -.00066, .000658, -.000656, .000655, -.000653, .000651, -.000649, .000648, -.000646, .000644, -.000642, .00064, -.000639, .000637, -.000635, .000633, -.000632, .00063, -.000628, .000626, -.000624, .000623, -.000621, .000619, -.000617, .000615, -.000614, .000612, -.00061, .000608, -.000606, .000604, -.000603, .000601, -.000599, .000597, -.000595, .000593, -.000592, .00059, -.000588, .000586, -.000584, .000582, -.000581, .000579, -.000577, .000575, -.000573, .000571, -.000569, .000568, -.000566, .000564, -.000562, .00056, -.000558, .000556, -.000554, .000553, -.000551, .000471, -.000469, .000467, -.000466, .000464, -.000463, .000461, -.000459, .000458, -.000456, .000454, -.000453, .000451, -.00045, .000448, -.000446, .000445, -.000443, .000441, -.00044, .000438, -.000436, .000435, -.000433, .000431, -.00043, .000428, -.000426, .000425, -.000423, .000421, -.00042, .000418, -.000416, .000415, -.000413, .000411, -.00041, .000408, -.000406, .000404, -.000403, .000401, -.000399, .000398, -.000396, .000394, -.000393, .000391, -.000389, .000387, -.000386, .000384, -.000382, .000381, -.000379, .000377, -.000375, .000374, -.000372, .00037, -.000369, .000367, -.000365, .000363, -.000362, .00036, -.000358, .000356, -.000355, .000353, -.000351, .000349, -.000348, .000346, -.000344, .000342, -.000341, .000339, -.000337, .000335, -.000333, .000332, -.00033, .000328, -.000326, .000325, -.000323, .000321, -.000319, .000317, -.000316, .000314, -.000312, .00031, -.000308, .000307, -.000305, .000303, -.000301, .000299, -.000298, .000296, -.000294, .000292, -.00029, .000289, -.000287, .000285, -.000283, .000281, -.00028, .000278, -.000276, .000274, -.000272, .00027, -.000269, .000267, -.000265, .000263, -.000261, .000259, -.000258, .000256, -.000254, .000252, -.00025, .000248, -.000246, .000245, -.000243, .000241, -.000239, .000237, -.000235, .000233, -.000232, .00023, -.000228, .000226, -.000224, .000222, -.00022, .000219, -.000217, .000215, -.000213, .000211, -.000209, .000207, -.000205, .000203, -.000202, .0002, -.000198, .000196, -.000194, .000192, -.00019, .000188, -.000186, .000185, -.000183, .000181, -.000179, .000177, -.000175, .000173, -.000171, .000169, -.000167, .000165, -.000164, .000162, -.00016, .000158, -.000156, .000154, -.000152, .00015, -.000148, .000146, -.000144, .000142, -.000141, .000139, -.000137, .000135, -.000133, .000131, -.000129, .000112, -.000111, .000109, -.000107, .000106, -.000104, .000102, -.0001, .000099, -.000097, .000095, -.000093, .000092, -.00009, .000088, -.000087, .000085, -.000083, .000081, -.00008, .000078, -.000076, .000075, -.000073, .000071, -.000069, .000068, -.000066, .000064, -.000062, .000061, -.000059, .000057, -.000056, .000054, -.000052, .00005, -.000049, .000047, -.000045, .000043, -.000042, .00004, -.000038, .000036, -.000035, .000033, -.000031, .00003, -.000028, .000026, -.000024, .000023, -.000021, .000019, -.000017, .000016, -.000014, .000012, -.00001, .000009, -.000007, .000005, -.000003, .000002, 0, -.000002, .000003, -.000005, .000007, -.000009, .00001, -.000012, .000014, -.000016, .000017, -.000019, .000021, -.000023, .000024, -.000026, .000028, -.00003, .000031, -.000033, .000035, -.000036, .000038, -.00004, .000042, -.000043, .000045, -.000047, .000049, -.00005, .000052, -.000054, .000056, -.000057, .000059, -.000061, .000062, -.000064, .000066, -.000068, .000069, -.000071, .000073, -.000075, .000076, -.000078, .00008, -.000081, .000083, -.000085, .000087, -.000088, .00009, -.000092, .000093, -.000095, .000097, -.000099, .0001, -.000102, .000104, -.000105, .000107, -.000109, .000111, -.000112, .000114, -.000116, .000117, -.000119, .000121, -.000122, .000124, -.000126, .000128, -.000129, .000131, -.000133, .000134, -.000136, .000138, -.000139, .000141, -.000143, .000144, -.000146, .000148, -.000149, .000151, -.000153, .000154, -.000156, .000158, -.000159, .000161, -.000163, .000164, -.000166, .000168, -.000169, .000171, -.000173, .000174, -.000176, .000178, -.000179, .000181, -.000183, .000184, -.000186, .000188, -.000189, .000191, -.000192, .000194, -.000196, .000197, -.000199, .000201, -.000202, .000204, -.000205, .000207, -.000209, .00021, -.000212, .000213, -.000215, .000217, -.000218, .00022, -.000221, .000223, -.000224, .000226, -.000228, .000229, -.000231, .000232, -.000201, .000202, -.000203, .000205, -.000206, .000207, -.000209, .00021, -.000211, .000213, -.000214, .000215, -.000217, .000218, -.000219, .00022, -.000222, .000223, -.000224, .000226, -.000227, .000228, -.00023, .000231, -.000232, .000233, -.000235, .000236, -.000237, .000238, -.00024, .000241, -.000242, .000244, -.000245, .000246, -.000247, .000249, -.00025, .000251, -.000252, .000253, -.000255, .000256, -.000257, .000258, -.00026, .000261, -.000262, .000263, -.000264, .000266, -.000267, .000268, -.000269, .00027, -.000272, .000273, -.000274, .000275, -.000276, .000277, -.000279, .00028, -.000281, .000282, -.000283, .000284, -.000285, .000287, -.000288, .000289, -.00029, .000291, -.000292, .000293, -.000294, .000295, -.000297, .000298, -.000299, .0003, -.000301, .000302, -.000303, .000304, -.000305, .000306, -.000307, .000308, -.000309, .000311, -.000312, .000313, -.000314, .000315, -.000316, .000317, -.000318, .000319, -.00032, .000321, -.000322, .000323, -.000324, .000325, -.000326, .000327, -.000328, .000329, -.00033, .000331, -.000331, .000332, -.000333, .000334, -.000335, .000336, -.000337, .000338, -.000339, .00034, -.000341, .000342, -.000343, .000343, -.000344, .000345, -.000346, .000347, -.000348, .000349, -.00035, .00035, -.000351, .000352, -.000353, .000354, -.000355, .000355, -.000356, .000357, -.000358, .000359, -.000359, .00036, -.000361, .000362, -.000363, .000363, -.000364, .000365, -.000366, .000366, -.000367, .000368, -.000368, .000369, -.00037, .000371, -.000371, .000372, -.000373, .000373, -.000374, .000375, -.000375, .000376, -.000377, .000377, -.000378, .000379, -.000379, .00038, -.000381, .000381, -.000382, .000382, -.000383, .000384, -.000384, .000385, -.000385, .000386, -.000387, .000387, -.000388, .000388, -.000389, .000389, -.00039, .00039, -.000391, .000391, -.000392, .000392, -.000393, .000393, -.000394, .000394, -.000395, .000395, -.000396, .000396, -.000396, .000397, -.000397, .000398, -.000398, .000399, -.000399, .000399, -.0004, .0004, -.0004, .000401, -.000401, .000402, -.000402, .000402, -.000403, .000403, -.000403, .000404, -.000404, .000404, -.000404, .000405, -.000405, .000405, -.000406, .000406, -.000406, .000406, -.000406, .000407, -.000407, .000407, -.000407, .000408, -.000408, .000408, -.000408, .000408, -.000291, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000293, .000293, -.000293, .000293, -.000293, .000293, -.000293, .000293, -.000293, .000293, -.000293, .000293, -.000293, .000293, -.000293, .000293, -.000293, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000292, .000292, -.000291, .000291, -.000291, .000291, -.000291, .000291, -.000291, .00029, -.00029, .00029, -.00029, .00029, -.00029, .000289, -.000289, .000289, -.000289, .000289, -.000288, .000288, -.000288, .000288, -.000288, .000287, -.000287, .000287, -.000287, .000286, -.000286, .000286, -.000286, .000285, -.000285, .000285, -.000284, .000284, -.000284, .000283, -.000283, .000283, -.000282, .000282, -.000282, .000281, -.000281, .000281, -.00028, .00028, -.00028, .000279, -.000279, .000278, -.000278, .000278, -.000277, .000277, -.000276, .000276, -.000276, .000275, -.000275, .000274, -.000274, .000273, -.000273, .000272, -.000272, .000271, -.000271, .00027, -.00027, .000269, -.000269, .000268, -.000268, .000267, -.000267, .000266, -.000266, .000265, -.000265, .000264, -.000263, .000263, -.000262, .000262, -.000261, .000261, -.00026, .000259, -.000259, .000258, -.000258, .000257, -.000256, .000256, -.000255, .000254, -.000254, .000253, -.000252, .000252, -.000251, .00025, -.00025, .000249, -.000248, .000248, -.000247, .000246, -.000245, .000245, -.000244, .000243, -.000243, .000242, -.000241, .00024, -.00024, .000239, -.000238, .000237, -.000236, .000236, -.000235, .000234, -.000233, .000232, -.000232, .000231, -.00023, .000229, -.000228, .000228, -.000227, .000226, -.000225, .000224, -.000223, .000222, -.000222, .000221, -.00022, .000219, -.000218, .000217, -.000216, .000215, -.000214, .000214, -.000213, .000212, -.000211, .00021, -.000209, .000208, -.000207, .000206, -.000205, .000204, -.000203, .000202, -.000201, .0002, -.000199, .000198, -.000197, .000196, -.000195, .000194, -.000193, .000192, -.000191, .00019, -.000189, .000188, -.000187, .000186, -.000185, .000184, -.000183, .000182, -.000181, .00018, -.000179, .000177, -.000176, .000175, -.000174, .000173, -.000172, .000171, -.00017, .000169, -.000168, .000166, -.000165, .000164, -.000163, .000162, -.000161, .00016, -.000159, .000157, -.000156, .000155, -.000154, .000153, -.000152, .00015, -.000149, .000148, -.000147, .000146, -.000144, .000143, -.000142, .000141, -.00014, .000138, -.000137, .000136, -.000135, .000134, -.000132, .000131, -.00013, .000129, -.000127, .000126, -.000125, .000124, -.000122, .000121, -.00012, .000119, -.000117, .000116, -.000115, .000114, -.000112, .000111, -.00011, .000108, -.000107, .000106, -.000105, .000103, -.000102, .000101, -.000099, .000098, -.000097, .000095, -.000094, .000093, -.000092, .00009, -.000089, .000088, -.000086, .000085, -.000084, .000082, -.000081, .00008, -.000078, .000077, -.000076, .000074, -.000073, .000071, -.00007, .000069, -.000067, .000055, -.000054, .000053, -.000052, .00005, -.000049, .000048, -.000047, .000046, -.000045, .000044, -.000042, .000041, -.00004, .000039, -.000038, .000037, -.000036, .000034, -.000033, .000032, -.000031, .00003, -.000029, .000027, -.000026, .000025, -.000024, .000023, -.000022, .000021, -.000019, .000018, -.000017, .000016, -.000015, .000014, -.000012, .000011, -.00001, .000009, -.000008, .000007, -.000005, .000004, -.000003, .000002, -.000001, 0, .000002, -.000003, .000004, -.000005, .000006, -.000007, .000009, -.00001, .000011, -.000012, .000013, -.000014, .000016, -.000017, .000018, -.000019, .00002, -.000021, .000023, -.000024, .000025, -.000026, .000027, -.000028, .000029, -.000031, .000032, -.000033, .000034, -.000035, .000036, -.000038, .000039, -.00004, .000041, -.000042, .000043, -.000044, .000046, -.000047, .000048, -.000049, .00005, -.000051, .000052, -.000054, .000055, -.000056, .000057, -.000058, .000059, -.00006, .000061, -.000062, .000064, -.000065, .000066, -.000067, .000068, -.000069, .00007, -.000071, .000072, -.000074, .000075, -.000076, .000077, -.000078, .000079, -.00008, .000081, -.000082, .000083, -.000084, .000085, -.000087, .000088, -.000089, .00009, -.000091, .000092, -.000093, .000094, -.000095, .000096, -.000097, .000098, -.000099, .0001, -.000101, .000102, -.000103, .000104, -.000105, .000106, -.000107, .000108, -.000109, .00011, -.000111, .000112, -.000113, .000114, -.000115, .000116, -.000117, .000118, -.000119, .00012, -.000121, .000122, -.000123, .000124, -.000125, .000126, -.000127, .000128, -.000129, .000129, -.00013, .000131, -.000132, .000133, -.000134, .000135, -.000136, .000137, -.000138, .000138, -.000139, .00014, -.000141, .000142, -.000143, .000144, -.000144, .000145, -.000146, .000147, -.000148, .000149, -.000149, .00015, -.000151, .000152, -.000153, .000153, -.000154, .000155, -.000156, .000157, -.000157, .000158, -.000159, .00016, -.00016, .000161, -.000162, .000163, -.000163, .000164, -.000165, .000165, -.000166, .000167, -.000168, .000168, -.000169, .00017, -.00017, .000171, -.000172, .000172, -.000173, .000174, -.000174, .000175, -.000175, .000176, -.000177, .000177, -.000178, .000178, -.000179, .00018, -.00018, .000181, -.000181, .000182, -.000182, .000183, -.000184, .000184, -.000185, .000185, -.000186, .000186, -.000187, .000187, -.000188, .000188, -.000189, .000189, -.00019, .00019, -.00019, .000191, -.000191, .000192, -.000192, .000193, -.000193, .000193, -.000194, .000194, -.000195, .000195, -.000195, .000196, -.000196, .000196, -.000197, .000197, -.000197, .000198, -.000198, .000198, -.000199, .000199, -.000199, .000199, -.0002, .0002, -.0002, .0002, -.000201, .000201, -.000201, .000201, -.000201, .000202, -.000202, .000202, -.000202, .000202, -.000203, .000203, -.000203, .000203, -.000203, .000203, -.000203, .000204, -.000204, .000204, -.000204, .000204, -.000204, .000186, -.000186, .000186, -.000186, .000186, -.000186, .000186, -.000186, .000186, -.000186, .000186, -.000186, .000186, -.000186, .000186 ], imag: [ 0, .670914, 0, 0, -.000005, 0, 0, .000011, 0, 0, -.000012, 0, 0, .000014, 0, 0, -.000021, 0, 0, .000023, 0, 0, -.00003, 0, 0, .000026, 0, 0, -.000039, 0, 0, .000054, 0, 0, -.000071, 0, -.000002, .000017, -.000017, .000018, -.000019, .00002, -.00002, .000021, -.000022, .000022, -.000023, .000023, -.000024, .000024, -.000025, .000025, -.000026, .000027, -.000028, .000029, -.000027, .000027, -.000028, .000029, -.00003, .00003, -.000031, .000032, -.000031, .000031, -.000032, .000033, -.000034, .000034, -.000035, .000036, -.000037, .000031, -.000032, .000032, -.000033, .000034, -.000034, .000035, -.000036, .000036, -.000037, .000038, -.000036, .000037, -.000037, .000038, -.000039, .000039, -.00004, .000041, -.000041, .000042, -.000043, .000044, -.000044, .000045, -.000044, .000045, -.000046, .000046, -.000047, .000048, -.000048, .000049, -.00005, .00005, -.000051, .000052, -.000053, .000053, -.000054, .000055, -.000056, .000056, -.000057, .000058, -.000058, .000059, -.00006, .000061, -.000061, .000062, -.000063, .000064, -.000065, .000065, -.000066, .000067, -.000068, .000068, -.000069, .00007, -.000071, .000072, -.000072, .000073, -.000074, .000075, -.000078, .000079, -.00008, .00008, -.000081, .000082, -.000083, .000084, -.000085, .000086, -.000086, .000087, -.000088, .000089, -.00009, .000091, -.000092, .000093, -.000093, .000094, -.000095, .000096, -.000097, .000098, -.000099, .0001, -.000101, .000102, -.000106, .000107, -.000108, .000108, -.000109, .00011, -.000111, .000112, -.000113, .000114, -.000115, .000116, -.000117, .000118, -.000119, .00012, -.000121, .000122, -.000123, .000124, -.000125, .000126, -.000127, .000128, -.000129, .00013, -.000131, .000132, -.000133, .000134, -.000135, .000136, -.000137, .000138, -.000139, .00014, -.00015, .000151, -.000153, .000154, -.000155, .000156, -.000157, .000158, -.000159, .00016, -.000161, .000163, -.000164, .000165, -.000166, .000167, -.000168, .000169, -.000171, .000172, -.000173, .000174, -.000175, .000176, -.000178, .000179, -.00018, .000181, -.000182, .000183, -.000185, .000186, -.000187, .000188, -.000189, .000191, -.000192, .000193, -.000194, .000195, -.000197, .000198, -.000199, .0002, -.000201, .000203, -.000204, .000205, -.000206, .000207, -.000209, .00021, -.000211, .000212, -.000214, .000222, -.000223, .000224, -.000225, .000227, -.000228, .000229, -.000231, .000232, -.000233, .000234, -.000236, .000237, -.000238, .00024, -.000241, .000242, -.000244, .000245, -.000246, .000248, -.000249, .00025, -.000252, .000253, -.000254, .000256, -.000257, .000258, -.00026, .000261, -.000262, .000264, -.000265, .000266, -.000268, .000269, -.00027, .000272, -.000273, .000275, -.000276, .000277, -.000279, .00028, -.000281, .000283, -.000284, .000286, -.000287, .000288, -.00029, .000291, -.000293, .000294, -.000295, .000297, -.000298, .0003, -.000301, .000302, -.000304, .000305, -.000307, .000308, -.000309, .000311, -.000312, .000314, -.000315, .000317, -.000318, .000319, -.000321, .000322, -.000324, .000325, -.000327, .000328, -.000329, .000331, -.000332, .000334, -.000335, .000337, -.000338, .00034, -.000341, .000343, -.000344, .000345, -.000347, .000348, -.00035, .000351, -.000353, .000354, -.000356, .000357, -.000359, .00036, -.000362, .000363, -.000365, .000366, -.000368, .000369, -.000371, .000372, -.000374, .000375, -.000377, .000378, -.00038, .000381, -.000383, .000384, -.000386, .000387, -.000389, .00039, -.000392, .000393, -.000395, .000396, -.000398, .000399, -.000401, .000402, -.000404, .000405, -.000407, .000408, -.00041, .000411, -.000413, .000415, -.000416, .000418, -.000419, .000421, -.000422, .000424, -.000425, .000427, -.000428, .00043, -.000432, .000433, -.000435, .000436, -.000438, .000439, -.000441, .000442, -.000444, .000446, -.000447, .000449, -.00045, .000452, -.000453, .000455, -.000457, .000458, -.00046, .000461, -.000463, .000464, -.000466, .000323, -.000325, .000326, -.000327, .000328, -.000329, .00033, -.000331, .000332, -.000333, .000334, -.000336, .000337, -.000338, .000339, -.00034, .000341, -.000342, .000343, -.000344, .000346, -.000347, .000348, -.000349, .00035, -.000351, .000352, -.000353, .000354, -.000356, .000357, -.000358, .000382, -.000383, .000384, -.000385, .000386, -.000388, .000389, -.00039, .000391, -.000392, .000393, -.000395, .000396, -.000397, .000398, -.000399, .000401, -.000402, .000403, -.000404, .000405, -.000407, .000408, -.000409, .00041, -.000411, .000413, -.000414, .000415, -.000416, .000417, -.000419, .00042, -.000421, .000422, -.000423, .000425, -.000426, .000427, -.000428, .000429, -.000431, .000432, -.000433, .000434, -.000436, .000437, -.000438, .000439, -.00044, .000442, -.000443, .000444, -.000445, .000446, -.000448, .000449, -.00045, .000451, -.000452, .000454, -.000455, .000456, -.000457, .000458, -.00046, .000461, -.000462, .000463, -.000465, .000466, -.000467, .000468, -.000469, .000471, -.000472, .000473, -.000474, .000475, -.000477, .000478, -.000479, .00048, -.000482, .000483, -.000484, .000485, -.000486, .000488, -.000489, .00049, -.000491, .000492, -.000494, .000495, -.000496, .000497, -.000498, .0005, -.000501, .000502, -.000503, .000505, -.000506, .000507, -.000508, .000509, -.000511, .000512, -.000513, .000514, -.000515, .000517, -.000518, .000519, -.00052, .000521, -.000523, .000524, -.000525, .000526, -.000527, .000529, -.00053, .000531, -.000532, .000533, -.000535, .000536, -.000537, .000538, -.000539, .000541, -.000542, .000543, -.000544, .000545, -.000547, .000548, -.000549, .00055, -.000551, .000553, -.000554, .000555, -.000556, .000557, -.000559, .00056, -.000561, .000562, -.000563, .000564, -.000516, .000517, -.000518, .000519, -.00052, .000521, -.000522, .000523, -.000524, .000526, -.000527, .000528, -.000529, .00053, -.000531, .000532, -.000533, .000534, -.000535, .000536, -.000537, .000538, -.000539, .00054, -.000542, .000543, -.000544, .000545, -.000546, .000547, -.000548, .000549, -.00055, .000551, -.000552, .000553, -.000554, .000555, -.000556, .000557, -.000558, .000559, -.00056, .000561, -.000563, .000564, -.000565, .000566, -.000567, .000568, -.000569, .00057, -.000571, .000572, -.000573, .000574, -.000575, .000576, -.000577, .000578, -.000579, .00058, -.000581, .000582, -.000583, .000584, -.000585, .000586, -.000587, .000588, -.000589, .00059, -.000591, .000592, -.000593, .000594, -.000595, .000596, -.000597, .000598, -.000599, .0006, -.000601, .000602, -.000603, .000604, -.000605, .000606, -.000607, .000608, -.000609, .00061, -.000611, .000612, -.000613, .000614, -.000615, .000615, -.000616, .000617, -.000618, .000619, -.00062, .000621, -.000622, .000623, -.000624, .000625, -.000626, .000627, -.000628, .000629, -.00063, .000631, -.000631, .000632, -.000633, .000634, -.000635, .000636, -.000637, .000638, -.000639, .00064, -.000641, .000641, -.000642, .000643, -.000644, .000645, -.000646, .000647, -.000648, .000649, -.000649, .00065, -.000651, .000652, -.000653, .000654, -.000655, .000655, -.000656, .000657, -.000658, .000659, -.00066, .000661, -.000661, .000662, -.000663, .000664, -.000665, .000571, -.000572, .000572, -.000573, .000574, -.000574, .000575, -.000576, .000577, -.000577, .000578, -.000579, .000579, -.00058, .000581, -.000581, .000582, -.000583, .000583, -.000584, .000585, -.000585, .000586, -.000587, .000587, -.000588, .000589, -.000589, .00059, -.000591, .000591, -.000592, .000592, -.000593, .000594, -.000594, .000595, -.000596, .000596, -.000597, .000597, -.000598, .000599, -.000599, .0006, -.0006, .000601, -.000602, .000602, -.000603, .000603, -.000604, .000604, -.000605, .000606, -.000606, .000607, -.000607, .000608, -.000608, .000609, -.00061, .00061, -.000611, .000611, -.000612, .000612, -.000613, .000613, -.000614, .000614, -.000615, .000615, -.000616, .000616, -.000617, .000617, -.000618, .000618, -.000619, .000619, -.00062, .00062, -.000621, .000621, -.000622, .000622, -.000623, .000623, -.000624, .000624, -.000625, .000625, -.000625, .000626, -.000626, .000627, -.000627, .000628, -.000628, .000628, -.000629, .000629, -.00063, .00063, -.00063, .000631, -.000631, .000632, -.000632, .000632, -.000633, .000633, -.000634, .000634, -.000634, .000635, -.000635, .000635, -.000636, .000636, -.000636, .000637, -.000637, .000637, -.000638, .000638, -.000638, .000639, -.000639, .000639, -.00064, .00064, -.00064, .00064, -.000641, .000641, -.000641, .000642, -.000642, .000642, -.000642, .000643, -.000643, .000643, -.000643, .000644, -.000644, .000644, -.000644, .000644, -.000645, .000645, -.000645, .000645, -.000645, .000646, -.000646, .000646, -.000646, .000646, -.000647, .000647, -.000647, .000647, -.000647, .000647, -.000648, .000648, -.000648, .000648, -.000648, .000648, -.000648, .000648, -.000649, .000649, -.000649, .000649, -.000649, .000649, -.000649, .000649, -.000649, .000649, -.000649, .000649, -.00065, .00065, -.00065, .00065, -.00065, .000575, -.000575, .000575, -.000575, .000575, -.000575, .000575, -.000575, .000575, -.000575, .000575, -.000575, .000575, -.000575, .000575, -.000574, .000574, -.000574, .000574, -.000574, .000574, -.000574, .000574, -.000574, .000574, -.000574, .000574, -.000574, .000574, -.000573, .000573, -.000573, .000573, -.000573, .000573, -.000573, .000573, -.000572, .000572, -.000572, .000572, -.000572, .000572, -.000572, .000571, -.000571, .000571, -.000571, .000571, -.00057, .00057, -.00057, .00057, -.00057, .000569, -.000569, .000569, -.000569, .000568, -.000568, .000568, -.000568, .000567, -.000567, .000567, -.000567, .000566, -.000566, .000566, -.000566, .000565, -.000565, .000565, -.000564, .000564, -.000564, .000563, -.000563, .000563, -.000562, .000562, -.000562, .000561, -.000561, .000561, -.00056, .00056, -.000559, .000559, -.000559, .000558, -.000558, .000557, -.000557, .000557, -.000556, .000556, -.000555, .000555, -.000554, .000554, -.000553, .000553, -.000553, .000552, -.000552, .000551, -.000551, .00055, -.00055, .000549, -.000549, .000548, -.000548, .000547, -.000547, .000546, -.000545, .000545, -.000544, .000544, -.000543, .000543, -.000542, .000542, -.000541, .00054, -.00054, .000539, -.000539, .000538, -.000537, .000537, -.000536, .000535, -.000535, .000534, -.000534, .000533, -.000532, .000532, -.000531, .00053, -.00053, .000529, -.000528, .000527, -.000527, .000526, -.000525, .000525, -.000524, .000523, -.000522, .000522, -.000521, .00052, -.000519, .000519, -.000518, .000517, -.000516, .000516, -.000515, .000514, -.000513, .000512, -.000512, .000511, -.00051, .000509, -.000508, .000507, -.000507, .000506, -.000505, .000504, -.000503, .000502, -.000501, .000501, -.0005, .000499, -.000498, .000497, -.000496, .000495, -.000494, .000493, -.000492, .000491, -.00049, .000489, -.000489, .000488, -.000487, .000486, -.000485, .000484, -.000483, .000482, -.000481, .00048, -.000479, .00041, -.000409, .000408, -.000407, .000406, -.000405, .000404, -.000403, .000403, -.000402, .000401, -.0004, .000399, -.000398, .000397, -.000396, .000395, -.000394, .000393, -.000392, .000391, -.00039, .000389, -.000388, .000387, -.000386, .000385, -.000384, .000383, -.000382, .000381, -.00038, .000379, -.000378, .000377, -.000376, .000375, -.000374, .000373, -.000372, .000371, -.00037, .000369, -.000368, .000367, -.000366, .000364, -.000363, .000362, -.000361, .00036, -.000359, .000358, -.000357, .000356, -.000354, .000353, -.000352, .000351, -.00035, .000349, -.000348, .000346, -.000345, .000344, -.000343, .000342, -.000341, .000339, -.000338, .000337, -.000336, .000335, -.000333, .000332, -.000331, .00033, -.000328, .000327, -.000326, .000325, -.000324, .000322, -.000321, .00032, -.000318, .000317, -.000316, .000315, -.000313, .000312, -.000311, .00031, -.000308, .000307, -.000306, .000304, -.000303, .000302, -.0003, .000299, -.000298, .000296, -.000295, .000294, -.000292, .000291, -.00029, .000288, -.000287, .000286, -.000284, .000283, -.000281, .00028, -.000279, .000277, -.000276, .000274, -.000273, .000272, -.00027, .000269, -.000267, .000266, -.000265, .000263, -.000262, .00026, -.000259, .000257, -.000256, .000255, -.000253, .000252, -.00025, .000249, -.000247, .000246, -.000244, .000243, -.000241, .00024, -.000238, .000237, -.000235, .000234, -.000232, .000231, -.000229, .000228, -.000226, .000225, -.000223, .000222, -.00022, .000219, -.000217, .000215, -.000214, .000212, -.000211, .000209, -.000208, .000206, -.000205, .000203, -.000201, .0002, -.000198, .000197, -.000195, .000194, -.000192, .00019, -.000189, .000187, -.000186, .000184, -.000182, .000181, -.000179, .000177, -.000176, .000174, -.000173, .000171, -.000169, .000168, -.000166, .000164, -.000163, .000161, -.00016, .000158, -.000156, .000155, -.000153, .000151, -.00015, .000148, -.000146, .000145, -.000143, .000141, -.00014, .000138, -.000136, .000135, -.000133, .000131, -.000129, .000128, -.000126, .000124, -.000123, .000121, -.000119, .000118, -.000116, .000114, -.000112, .000111, -.000109, .000107, -.000106, .000104, -.000102, .0001, -.000099, .000097, -.000095, .000094, -.000092, .00009, -.000088, .000087, -.000085, .000083, -.000081, .00008, -.000078, .000076, -.000074, .000052, -.000051, .000049, -.000048, .000047, -.000046, .000044, -.000043, .000042, -.000041, .000039, -.000038, .000037, -.000036, .000034, -.000033, .000032, -.000031, .000029, -.000028, .000027, -.000025, .000024, -.000023, .000022, -.00002, .000019, -.000018, .000017, -.000015, .000014, -.000013, .000012, -.00001, .000009, -.000008, .000007, -.000005, .000004, -.000003, .000001, 0, -.000001, .000002, -.000004, .000005, -.000006, .000007, -.000009, .00001, -.000011, .000012, -.000014, .000015, -.000016, .000018, -.000019, .00002, -.000021, .000023, -.000024, .000025, -.000026, .000028, -.000029, .00003, -.000031, .000033, -.000034, .000035, -.000036, .000038, -.000039, .00004, -.000041, .000043, -.000044, .000045, -.000046, .000048, -.000049, .00005, -.000051, .000053, -.000054, .000055, -.000056, .000058, -.000059, .00006, -.000061, .000063, -.000064, .000065, -.000066, .000068, -.000069, .00007, -.000071, .000072, -.000074, .000075, -.000076, .000077, -.000079, .00008, -.000081, .000082, -.000083, .000085, -.000086, .000087, -.000088, .000089, -.000091, .000092, -.000093, .000094, -.000095, .000097, -.000098, .000099, -.0001, .000101, -.000103, .000104, -.000105, .000106, -.000107, .000108, -.00011, .000111, -.000112, .000113, -.000114, .000115, -.000117, .000118, -.000119, .00012, -.000121, .000122, -.000123, .000125, -.000126, .000127, -.000128, .000129, -.00013, .000131, -.000132, .000134, -.000135, .000136, -.000137, .000138, -.000139, .00014, -.000141, .000142, -.000143, .000145, -.000146, .000147, -.000148, .000149, -.00015, .000151, -.000152, .000153, -.000154, .000155, -.000156, .000157, -.000158, .000159, -.00016, .000161, -.000162, .000163, -.000165, .000166, -.000167, .000168, -.000169, .00017, -.000171, .000172, -.000173, .000174, -.000174, .000175, -.000176, .000177, -.000178, .000179, -.00018, .000181, -.000182, .000183, -.000184, .000185, -.000186, .000187, -.000188, .000189, -.00019, .000191, -.000191, .000192, -.000193, .000194, -.000195, .000196, -.000197, .000198, -.000199, .000199, -.0002, .000201, -.000202, .000203, -.000204, .000205, -.000205, .000206, -.000207, .000208, -.000209, .000209, -.00021, .000211, -.000212, .000213, -.000213, .000214, -.000215, .000216, -.000217, .000217, -.000218, .000219, -.00022, .00022, -.000221, .000222, -.000222, .000223, -.000224, .000225, -.000225, .000226, -.000227, .000227, -.000228, .000229, -.000229, .00023, -.000231, .000231, -.000232, .000233, -.000233, .000234, -.000234, .000235, -.000236, .000236, -.000237, .000237, -.000238, .000239, -.000239, .00024, -.00024, .000241, -.000241, .000242, -.000243, .000243, -.000244, .000244, -.000245, .000245, -.000246, .000246, -.000247, .000247, -.000248, .000248, -.000248, .000249, -.000249, .00025, -.00025, .000251, -.000251, .000252, -.000252, .000252, -.000253, .000253, -.000254, .000254, -.000254, .000255, -.000255, .000255, -.000256, .000256, -.000256, .000257, -.000257, .000257, -.000258, .000258, -.000258, .000258, -.000259, .000215, -.000216, .000216, -.000216, .000216, -.000216, .000217, -.000217, .000217, -.000217, .000217, -.000218, .000218, -.000218, .000218, -.000218, .000218, -.000218, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.00022, .00022, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000219, .000219, -.000218, .000218, -.000218, .000218, -.000218, .000218, -.000218, .000218, -.000217, .000217, -.000217, .000217, -.000217, .000216, -.000216, .000216, -.000216, .000216, -.000215, .000215, -.000215, .000215, -.000214, .000214, -.000214, .000214, -.000213, .000213, -.000213, .000212, -.000212, .000212, -.000211, .000211, -.000211, .000211, -.00021, .00021, -.000209, .000209, -.000209, .000208, -.000208, .000208, -.000207, .000207, -.000206, .000206, -.000206, .000205, -.000205, .000204, -.000204, .000203, -.000203, .000203, -.000202, .000202, -.000201, .000201, -.0002, .0002, -.000199, .000199, -.000198, .000198, -.000197, .000197, -.000196, .000196, -.000195, .000194, -.000194, .000193, -.000193, .000192, -.000192, .000191, -.00019, .00019, -.000189, .000189, -.000188, .000187, -.000187, .000186, -.000185, .000185, -.000184, .000183, -.000183, .000182, -.000181, .000181, -.00018, .000179, -.000179, .000178, -.000177, .000177, -.000176, .000175, -.000174, .000174, -.000173, .000172, -.000171, .000171, -.00017, .000169, -.000168, .000168, -.000167, .000166, -.000165, .000164, -.000164, .000163, -.000162, .000161, -.00016, .000159, -.000159, .000158, -.000157, .000156, -.000155, .000154, -.000153, .000153, -.000152, .000151, -.00015, .000149, -.000148, .000147, -.000146, .000145, -.000144, .000144, -.000143, .000142, -.000141, .00014, -.000139, .000138, -.000137, .000136, -.000135, .000134, -.000133, .000132, -.000131, .00013, -.000129, .000128, -.000127, .000126, -.000125, .000124, -.000123, .000122, -.000121, .00012, -.000119, .000118, -.000117, .000116, -.000115, .000114, -.000113, .000112, -.000111, .00011, -.000108, .000107, -.000106, .000105, -.000104, .000103, -.000102, .000101, -.0001, .000099, -.000098, .000096, -.000095, .000094, -.000093, .000092, -.000091, .00009, -.000089, .000087, -.000086, .000085, -.000084, .000083, -.000082, .000081, -.000079, .000078, -.000077, .000076, -.000075, .000074, -.000072, .000071, -.00007, .000069, -.000068, .000066, -.000065, .000064, -.000063, .000062, -.00006, .000059, -.000058, .000057, -.000056, .000054, -.000053, .000052, -.000051, .00005, -.000048, .000047, -.000046, .000045, -.000044, .000042, -.000041, .00004, -.000039, .000037, -.000036, .000035, -.000034, .000032, -.000031, .00003, -.000029, .000027, -.000026, .000025, -.000024, .000023, -.000021, .00002, -.000017, .000016, -.000015, .000014, -.000013, .000011, -.00001, .000009, -.000008, .000007, -.000006, .000005, -.000003, .000002, -.000001 ] } ], +]; + +/* +Thanks to: +https://github.com/lukehorvat/web-audio-oscillators +https://github.com/mohayonao/wave-tables +*/ diff --git a/icon/black/128.png b/icon/black/128.png new file mode 100644 index 0000000..6eff4bb Binary files /dev/null and b/icon/black/128.png differ diff --git a/icon/black/16.png b/icon/black/16.png new file mode 100644 index 0000000..57a1e4e Binary files /dev/null and b/icon/black/16.png differ diff --git a/icon/black/192.png b/icon/black/192.png new file mode 100644 index 0000000..62ad0b7 Binary files /dev/null and b/icon/black/192.png differ diff --git a/icon/black/256.png b/icon/black/256.png new file mode 100644 index 0000000..fc921fb Binary files /dev/null and b/icon/black/256.png differ diff --git a/icon/black/2850.png b/icon/black/2850.png new file mode 100644 index 0000000..560e2a7 Binary files /dev/null and b/icon/black/2850.png differ diff --git a/icon/black/32.png b/icon/black/32.png new file mode 100644 index 0000000..85e5d21 Binary files /dev/null and b/icon/black/32.png differ diff --git a/icon/black/48.png b/icon/black/48.png new file mode 100644 index 0000000..02c0fe0 Binary files /dev/null and b/icon/black/48.png differ diff --git a/icon/black/512.png b/icon/black/512.png new file mode 100644 index 0000000..169b294 Binary files /dev/null and b/icon/black/512.png differ diff --git a/icon/black/96.png b/icon/black/96.png new file mode 100644 index 0000000..ae99795 Binary files /dev/null and b/icon/black/96.png differ diff --git a/icon/favicon.psd b/icon/favicon.psd new file mode 100644 index 0000000..acdf488 Binary files /dev/null and b/icon/favicon.psd differ diff --git a/icon/icon-waveform.svg b/icon/icon-waveform.svg new file mode 100644 index 0000000..27489d3 --- /dev/null +++ b/icon/icon-waveform.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icon/icon.psd b/icon/icon.psd new file mode 100644 index 0000000..39d2fa2 Binary files /dev/null and b/icon/icon.psd differ diff --git a/icon/icon.svg b/icon/icon.svg new file mode 100644 index 0000000..7322c94 --- /dev/null +++ b/icon/icon.svg @@ -0,0 +1,147 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/icon/white/128.png b/icon/white/128.png new file mode 100644 index 0000000..e9577f8 Binary files /dev/null and b/icon/white/128.png differ diff --git a/icon/white/16.png b/icon/white/16.png new file mode 100644 index 0000000..c639cda Binary files /dev/null and b/icon/white/16.png differ diff --git a/icon/white/192.png b/icon/white/192.png new file mode 100644 index 0000000..62a1e01 Binary files /dev/null and b/icon/white/192.png differ diff --git a/icon/white/256.png b/icon/white/256.png new file mode 100644 index 0000000..fe66ddd Binary files /dev/null and b/icon/white/256.png differ diff --git a/icon/white/2850.png b/icon/white/2850.png new file mode 100644 index 0000000..b964a69 Binary files /dev/null and b/icon/white/2850.png differ diff --git a/icon/white/32.png b/icon/white/32.png new file mode 100644 index 0000000..9003ae4 Binary files /dev/null and b/icon/white/32.png differ diff --git a/icon/white/48.png b/icon/white/48.png new file mode 100644 index 0000000..f416579 Binary files /dev/null and b/icon/white/48.png differ diff --git a/icon/white/512.png b/icon/white/512.png new file mode 100644 index 0000000..89d2907 Binary files /dev/null and b/icon/white/512.png differ diff --git a/icon/white/96.png b/icon/white/96.png new file mode 100644 index 0000000..bbf3650 Binary files /dev/null and b/icon/white/96.png differ diff --git a/og-image.jpg b/og-image.jpg new file mode 100644 index 0000000..5de7d42 Binary files /dev/null and b/og-image.jpg differ diff --git a/qunit/qunit-2.9.2.css b/qunit/qunit-2.9.2.css new file mode 100644 index 0000000..1f54593 --- /dev/null +++ b/qunit/qunit-2.9.2.css @@ -0,0 +1,436 @@ +/*! + * QUnit 2.9.2 + * https://qunitjs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2019-02-21T22:49Z + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header (excluding toolbar) */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699A4; + background-color: #0D3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: 400; + + border-radius: 5px 5px 0 0; +} + +#qunit-header a { + text-decoration: none; + color: #C2CCD1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #FFF; +} + +#qunit-banner { + height: 5px; +} + +#qunit-filteredTest { + padding: 0.5em 1em 0.5em 1em; + color: #366097; + background-color: #F4FF77; +} + +#qunit-userAgent { + padding: 0.5em 1em 0.5em 1em; + color: #FFF; + background-color: #2B81AF; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + + +/** Toolbar */ + +#qunit-testrunner-toolbar { + padding: 0.5em 1em 0.5em 1em; + color: #5E740B; + background-color: #EEE; +} + +#qunit-testrunner-toolbar .clearfix { + height: 0; + clear: both; +} + +#qunit-testrunner-toolbar label { + display: inline-block; +} + +#qunit-testrunner-toolbar input[type=checkbox], +#qunit-testrunner-toolbar input[type=radio] { + margin: 3px; + vertical-align: -2px; +} + +#qunit-testrunner-toolbar input[type=text] { + box-sizing: border-box; + height: 1.6em; +} + +.qunit-url-config, +.qunit-filter, +#qunit-modulefilter { + display: inline-block; + line-height: 2.1em; +} + +.qunit-filter, +#qunit-modulefilter { + float: right; + position: relative; + margin-left: 1em; +} + +.qunit-url-config label { + margin-right: 0.5em; +} + +#qunit-modulefilter-search { + box-sizing: border-box; + width: 400px; +} + +#qunit-modulefilter-search-container:after { + position: absolute; + right: 0.3em; + content: "\25bc"; + color: black; +} + +#qunit-modulefilter-dropdown { + /* align with #qunit-modulefilter-search */ + box-sizing: border-box; + width: 400px; + position: absolute; + right: 0; + top: 50%; + margin-top: 0.8em; + + border: 1px solid #D3D3D3; + border-top: none; + border-radius: 0 0 .25em .25em; + color: #000; + background-color: #F5F5F5; + z-index: 99; +} + +#qunit-modulefilter-dropdown a { + color: inherit; + text-decoration: none; +} + +#qunit-modulefilter-dropdown .clickable.checked { + font-weight: bold; + color: #000; + background-color: #D2E0E6; +} + +#qunit-modulefilter-dropdown .clickable:hover { + color: #FFF; + background-color: #0D3349; +} + +#qunit-modulefilter-actions { + display: block; + overflow: auto; + + /* align with #qunit-modulefilter-dropdown-list */ + font: smaller/1.5em sans-serif; +} + +#qunit-modulefilter-dropdown #qunit-modulefilter-actions > * { + box-sizing: border-box; + max-height: 2.8em; + display: block; + padding: 0.4em; +} + +#qunit-modulefilter-dropdown #qunit-modulefilter-actions > button { + float: right; + font: inherit; +} + +#qunit-modulefilter-dropdown #qunit-modulefilter-actions > :last-child { + /* insert padding to align with checkbox margins */ + padding-left: 3px; +} + +#qunit-modulefilter-dropdown-list { + max-height: 200px; + overflow-y: auto; + margin: 0; + border-top: 2px groove threedhighlight; + padding: 0.4em 0 0; + font: smaller/1.5em sans-serif; +} + +#qunit-modulefilter-dropdown-list li { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +#qunit-modulefilter-dropdown-list .clickable { + display: block; + padding-left: 0.15em; +} + + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 1em 0.4em 1em; + border-bottom: 1px solid #FFF; + list-style-position: inside; +} + +#qunit-tests > li { + display: none; +} + +#qunit-tests li.running, +#qunit-tests li.pass, +#qunit-tests li.fail, +#qunit-tests li.skipped, +#qunit-tests li.aborted { + display: list-item; +} + +#qunit-tests.hidepass { + position: relative; +} + +#qunit-tests.hidepass li.running, +#qunit-tests.hidepass li.pass:not(.todo) { + visibility: hidden; + position: absolute; + width: 0; + height: 0; + padding: 0; + border: 0; + margin: 0; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li.skipped strong { + cursor: default; +} + +#qunit-tests li a { + padding: 0.5em; + color: #C2CCD1; + text-decoration: none; +} + +#qunit-tests li p a { + padding: 0.25em; + color: #6B6464; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #FFF; + + border-radius: 5px; +} + +.qunit-source { + margin: 0.6em 0 0.3em; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: 0.2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 0.5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + color: #374E0C; + background-color: #E0F2BE; + text-decoration: none; +} + +#qunit-tests ins { + color: #500; + background-color: #FFCACA; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: #000; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #FFF; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3C510C; + background-color: #FFF; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #FFF; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; +} + +#qunit-tests .fail { color: #000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: #008000; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + + +/*** Aborted tests */ +#qunit-tests .aborted { color: #000; background-color: orange; } +/*** Skipped tests */ + +#qunit-tests .skipped { + background-color: #EBECE9; +} + +#qunit-tests .qunit-todo-label, +#qunit-tests .qunit-skipped-label { + background-color: #F4FF77; + display: inline-block; + font-style: normal; + color: #366097; + line-height: 1.8em; + padding: 0 0.5em; + margin: -0.4em 0.4em -0.4em 0; +} + +#qunit-tests .qunit-todo-label { + background-color: #EEE; +} + +/** Result */ + +#qunit-testresult { + color: #2B81AF; + background-color: #D2E0E6; + + border-bottom: 1px solid #FFF; +} +#qunit-testresult .clearfix { + height: 0; + clear: both; +} +#qunit-testresult .module-name { + font-weight: 700; +} +#qunit-testresult-display { + padding: 0.5em 1em 0.5em 1em; + width: 85%; + float:left; +} +#qunit-testresult-controls { + padding: 0.5em 1em 0.5em 1em; + width: 10%; + float:left; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} diff --git a/qunit/qunit-2.9.2.js b/qunit/qunit-2.9.2.js new file mode 100644 index 0000000..f66e5c7 --- /dev/null +++ b/qunit/qunit-2.9.2.js @@ -0,0 +1,6604 @@ +/*! + * QUnit 2.9.2 + * https://qunitjs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2019-02-21T22:49Z + */ +(function (global$1) { + 'use strict'; + + global$1 = global$1 && global$1.hasOwnProperty('default') ? global$1['default'] : global$1; + + var window$1 = global$1.window; + var self$1 = global$1.self; + var console = global$1.console; + var setTimeout$1 = global$1.setTimeout; + var clearTimeout = global$1.clearTimeout; + + var document$1 = window$1 && window$1.document; + var navigator = window$1 && window$1.navigator; + + var localSessionStorage = function () { + var x = "qunit-test-string"; + try { + global$1.sessionStorage.setItem(x, x); + global$1.sessionStorage.removeItem(x); + return global$1.sessionStorage; + } catch (e) { + return undefined; + } + }(); + + /** + * Returns a function that proxies to the given method name on the globals + * console object. The proxy will also detect if the console doesn't exist and + * will appropriately no-op. This allows support for IE9, which doesn't have a + * console if the developer tools are not open. + */ + function consoleProxy(method) { + return function () { + if (console) { + console[method].apply(console, arguments); + } + }; + } + + var Logger = { + warn: consoleProxy("warn") + }; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { + return typeof obj; + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + + + + + + + + + + + + var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } else { + return Array.from(arr); + } + }; + + var toString = Object.prototype.toString; + var hasOwn = Object.prototype.hasOwnProperty; + var now = Date.now || function () { + return new Date().getTime(); + }; + + var hasPerformanceApi = detectPerformanceApi(); + var performance = hasPerformanceApi ? window$1.performance : undefined; + var performanceNow = hasPerformanceApi ? performance.now.bind(performance) : now; + + function detectPerformanceApi() { + return window$1 && typeof window$1.performance !== "undefined" && typeof window$1.performance.mark === "function" && typeof window$1.performance.measure === "function"; + } + + function measure(comment, startMark, endMark) { + + // `performance.measure` may fail if the mark could not be found. + // reasons a specific mark could not be found include: outside code invoking `performance.clearMarks()` + try { + performance.measure(comment, startMark, endMark); + } catch (ex) { + Logger.warn("performance.measure could not be executed because of ", ex.message); + } + } + + var defined = { + document: window$1 && window$1.document !== undefined, + setTimeout: setTimeout$1 !== undefined + }; + + // Returns a new Array with the elements that are in a but not in b + function diff(a, b) { + var i, + j, + result = a.slice(); + + for (i = 0; i < result.length; i++) { + for (j = 0; j < b.length; j++) { + if (result[i] === b[j]) { + result.splice(i, 1); + i--; + break; + } + } + } + return result; + } + + /** + * Determines whether an element exists in a given array or not. + * + * @method inArray + * @param {Any} elem + * @param {Array} array + * @return {Boolean} + */ + function inArray(elem, array) { + return array.indexOf(elem) !== -1; + } + + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + function objectValues(obj) { + var key, + val, + vals = is("array", obj) ? [] : {}; + for (key in obj) { + if (hasOwn.call(obj, key)) { + val = obj[key]; + vals[key] = val === Object(val) ? objectValues(val) : val; + } + } + return vals; + } + + function extend(a, b, undefOnly) { + for (var prop in b) { + if (hasOwn.call(b, prop)) { + if (b[prop] === undefined) { + delete a[prop]; + } else if (!(undefOnly && typeof a[prop] !== "undefined")) { + a[prop] = b[prop]; + } + } + } + + return a; + } + + function objectType(obj) { + if (typeof obj === "undefined") { + return "undefined"; + } + + // Consider: typeof null === object + if (obj === null) { + return "null"; + } + + var match = toString.call(obj).match(/^\[object\s(.*)\]$/), + type = match && match[1]; + + switch (type) { + case "Number": + if (isNaN(obj)) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Set": + case "Map": + case "Date": + case "RegExp": + case "Function": + case "Symbol": + return type.toLowerCase(); + default: + return typeof obj === "undefined" ? "undefined" : _typeof(obj); + } + } + + // Safe object type checking + function is(type, obj) { + return objectType(obj) === type; + } + + // Based on Java's String.hashCode, a simple but not + // rigorously collision resistant hashing function + function generateHash(module, testName) { + var str = module + "\x1C" + testName; + var hash = 0; + + for (var i = 0; i < str.length; i++) { + hash = (hash << 5) - hash + str.charCodeAt(i); + hash |= 0; + } + + // Convert the possibly negative integer hash code into an 8 character hex string, which isn't + // strictly necessary but increases user understanding that the id is a SHA-like hash + var hex = (0x100000000 + hash).toString(16); + if (hex.length < 8) { + hex = "0000000" + hex; + } + + return hex.slice(-8); + } + + // Test for equality any JavaScript type. + // Authors: Philippe Rathé , David Chan + var equiv = (function () { + + // Value pairs queued for comparison. Used for breadth-first processing order, recursion + // detection and avoiding repeated comparison (see below for details). + // Elements are { a: val, b: val }. + var pairs = []; + + var getProto = Object.getPrototypeOf || function (obj) { + return obj.__proto__; + }; + + function useStrictEquality(a, b) { + + // This only gets called if a and b are not strict equal, and is used to compare on + // the primitive values inside object wrappers. For example: + // `var i = 1;` + // `var j = new Number(1);` + // Neither a nor b can be null, as a !== b and they have the same type. + if ((typeof a === "undefined" ? "undefined" : _typeof(a)) === "object") { + a = a.valueOf(); + } + if ((typeof b === "undefined" ? "undefined" : _typeof(b)) === "object") { + b = b.valueOf(); + } + + return a === b; + } + + function compareConstructors(a, b) { + var protoA = getProto(a); + var protoB = getProto(b); + + // Comparing constructors is more strict than using `instanceof` + if (a.constructor === b.constructor) { + return true; + } + + // Ref #851 + // If the obj prototype descends from a null constructor, treat it + // as a null prototype. + if (protoA && protoA.constructor === null) { + protoA = null; + } + if (protoB && protoB.constructor === null) { + protoB = null; + } + + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if (protoA === null && protoB === Object.prototype || protoB === null && protoA === Object.prototype) { + return true; + } + + return false; + } + + function getRegExpFlags(regexp) { + return "flags" in regexp ? regexp.flags : regexp.toString().match(/[gimuy]*$/)[0]; + } + + function isContainer(val) { + return ["object", "array", "map", "set"].indexOf(objectType(val)) !== -1; + } + + function breadthFirstCompareChild(a, b) { + + // If a is a container not reference-equal to b, postpone the comparison to the + // end of the pairs queue -- unless (a, b) has been seen before, in which case skip + // over the pair. + if (a === b) { + return true; + } + if (!isContainer(a)) { + return typeEquiv(a, b); + } + if (pairs.every(function (pair) { + return pair.a !== a || pair.b !== b; + })) { + + // Not yet started comparing this pair + pairs.push({ a: a, b: b }); + } + return true; + } + + var callbacks = { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + "symbol": useStrictEquality, + "date": useStrictEquality, + + "nan": function nan() { + return true; + }, + + "regexp": function regexp(a, b) { + return a.source === b.source && + + // Include flags in the comparison + getRegExpFlags(a) === getRegExpFlags(b); + }, + + // abort (identical references / instance methods were skipped earlier) + "function": function _function() { + return false; + }, + + "array": function array(a, b) { + var i, len; + + len = a.length; + if (len !== b.length) { + + // Safe and faster + return false; + } + + for (i = 0; i < len; i++) { + + // Compare non-containers; queue non-reference-equal containers + if (!breadthFirstCompareChild(a[i], b[i])) { + return false; + } + } + return true; + }, + + // Define sets a and b to be equivalent if for each element aVal in a, there + // is some element bVal in b such that aVal and bVal are equivalent. Element + // repetitions are not counted, so these are equivalent: + // a = new Set( [ {}, [], [] ] ); + // b = new Set( [ {}, {}, [] ] ); + "set": function set$$1(a, b) { + var innerEq, + outerEq = true; + + if (a.size !== b.size) { + + // This optimization has certain quirks because of the lack of + // repetition counting. For instance, adding the same + // (reference-identical) element to two equivalent sets can + // make them non-equivalent. + return false; + } + + a.forEach(function (aVal) { + + // Short-circuit if the result is already known. (Using for...of + // with a break clause would be cleaner here, but it would cause + // a syntax error on older Javascript implementations even if + // Set is unused) + if (!outerEq) { + return; + } + + innerEq = false; + + b.forEach(function (bVal) { + var parentPairs; + + // Likewise, short-circuit if the result is already known + if (innerEq) { + return; + } + + // Swap out the global pairs list, as the nested call to + // innerEquiv will clobber its contents + parentPairs = pairs; + if (innerEquiv(bVal, aVal)) { + innerEq = true; + } + + // Replace the global pairs list + pairs = parentPairs; + }); + + if (!innerEq) { + outerEq = false; + } + }); + + return outerEq; + }, + + // Define maps a and b to be equivalent if for each key-value pair (aKey, aVal) + // in a, there is some key-value pair (bKey, bVal) in b such that + // [ aKey, aVal ] and [ bKey, bVal ] are equivalent. Key repetitions are not + // counted, so these are equivalent: + // a = new Map( [ [ {}, 1 ], [ {}, 1 ], [ [], 1 ] ] ); + // b = new Map( [ [ {}, 1 ], [ [], 1 ], [ [], 1 ] ] ); + "map": function map(a, b) { + var innerEq, + outerEq = true; + + if (a.size !== b.size) { + + // This optimization has certain quirks because of the lack of + // repetition counting. For instance, adding the same + // (reference-identical) key-value pair to two equivalent maps + // can make them non-equivalent. + return false; + } + + a.forEach(function (aVal, aKey) { + + // Short-circuit if the result is already known. (Using for...of + // with a break clause would be cleaner here, but it would cause + // a syntax error on older Javascript implementations even if + // Map is unused) + if (!outerEq) { + return; + } + + innerEq = false; + + b.forEach(function (bVal, bKey) { + var parentPairs; + + // Likewise, short-circuit if the result is already known + if (innerEq) { + return; + } + + // Swap out the global pairs list, as the nested call to + // innerEquiv will clobber its contents + parentPairs = pairs; + if (innerEquiv([bVal, bKey], [aVal, aKey])) { + innerEq = true; + } + + // Replace the global pairs list + pairs = parentPairs; + }); + + if (!innerEq) { + outerEq = false; + } + }); + + return outerEq; + }, + + "object": function object(a, b) { + var i, + aProperties = [], + bProperties = []; + + if (compareConstructors(a, b) === false) { + return false; + } + + // Be strict: don't ensure hasOwnProperty and go deep + for (i in a) { + + // Collect a's properties + aProperties.push(i); + + // Skip OOP methods that look the same + if (a.constructor !== Object && typeof a.constructor !== "undefined" && typeof a[i] === "function" && typeof b[i] === "function" && a[i].toString() === b[i].toString()) { + continue; + } + + // Compare non-containers; queue non-reference-equal containers + if (!breadthFirstCompareChild(a[i], b[i])) { + return false; + } + } + + for (i in b) { + + // Collect b's properties + bProperties.push(i); + } + + // Ensures identical properties name + return typeEquiv(aProperties.sort(), bProperties.sort()); + } + }; + + function typeEquiv(a, b) { + var type = objectType(a); + + // Callbacks for containers will append to the pairs queue to achieve breadth-first + // search order. The pairs queue is also used to avoid reprocessing any pair of + // containers that are reference-equal to a previously visited pair (a special case + // this being recursion detection). + // + // Because of this approach, once typeEquiv returns a false value, it should not be + // called again without clearing the pair queue else it may wrongly report a visited + // pair as being equivalent. + return objectType(b) === type && callbacks[type](a, b); + } + + function innerEquiv(a, b) { + var i, pair; + + // We're done when there's nothing more to compare + if (arguments.length < 2) { + return true; + } + + // Clear the global pair queue and add the top-level values being compared + pairs = [{ a: a, b: b }]; + + for (i = 0; i < pairs.length; i++) { + pair = pairs[i]; + + // Perform type-specific comparison on any pairs that are not strictly + // equal. For container types, that comparison will postpone comparison + // of any sub-container pair to the end of the pair queue. This gives + // breadth-first search order. It also avoids the reprocessing of + // reference-equal siblings, cousins etc, which can have a significant speed + // impact when comparing a container of small objects each of which has a + // reference to the same (singleton) large object. + if (pair.a !== pair.b && !typeEquiv(pair.a, pair.b)) { + return false; + } + } + + // ...across all consecutive argument pairs + return arguments.length === 2 || innerEquiv.apply(this, [].slice.call(arguments, 1)); + } + + return function () { + var result = innerEquiv.apply(undefined, arguments); + + // Release any retained objects + pairs.length = 0; + return result; + }; + })(); + + /** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ + var config = { + + // The queue of tests to run + queue: [], + + // Block until document ready + blocking: true, + + // By default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // By default, modify document.title when suite is done + altertitle: true, + + // HTML Reporter: collapse every test except the first failing test + // If false, all failing tests will be expanded + collapse: true, + + // By default, scroll to top of the page when suite is done + scrolltop: true, + + // Depth up-to which object will be dumped + maxDepth: 5, + + // When enabled, all tests must call expect() + requireExpects: false, + + // Placeholder for user-configurable form-exposed URL parameters + urlConfig: [], + + // Set of all modules. + modules: [], + + // The first unnamed module + currentModule: { + name: "", + tests: [], + childModules: [], + testsRun: 0, + unskippedTestsRun: 0, + hooks: { + before: [], + beforeEach: [], + afterEach: [], + after: [] + } + }, + + callbacks: {}, + + // The storage module to use for reordering tests + storage: localSessionStorage + }; + + // take a predefined QUnit.config and extend the defaults + var globalConfig = window$1 && window$1.QUnit && window$1.QUnit.config; + + // only extend the global config if there is no QUnit overload + if (window$1 && window$1.QUnit && !window$1.QUnit.version) { + extend(config, globalConfig); + } + + // Push a loose unnamed module to the modules collection + config.modules.push(config.currentModule); + + // Based on jsDump by Ariel Flesler + // http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html + var dump = (function () { + function quote(str) { + return "\"" + str.toString().replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\""; + } + function literal(o) { + return o + ""; + } + function join(pre, arr, post) { + var s = dump.separator(), + base = dump.indent(), + inner = dump.indent(1); + if (arr.join) { + arr = arr.join("," + s + inner); + } + if (!arr) { + return pre + post; + } + return [pre, inner + arr, base + post].join(s); + } + function array(arr, stack) { + var i = arr.length, + ret = new Array(i); + + if (dump.maxDepth && dump.depth > dump.maxDepth) { + return "[object Array]"; + } + + this.up(); + while (i--) { + ret[i] = this.parse(arr[i], undefined, stack); + } + this.down(); + return join("[", ret, "]"); + } + + function isArray(obj) { + return ( + + //Native Arrays + toString.call(obj) === "[object Array]" || + + // NodeList objects + typeof obj.length === "number" && obj.item !== undefined && (obj.length ? obj.item(0) === obj[0] : obj.item(0) === null && obj[0] === undefined) + ); + } + + var reName = /^function (\w+)/, + dump = { + + // The objType is used mostly internally, you can fix a (custom) type in advance + parse: function parse(obj, objType, stack) { + stack = stack || []; + var res, + parser, + parserType, + objIndex = stack.indexOf(obj); + + if (objIndex !== -1) { + return "recursion(" + (objIndex - stack.length) + ")"; + } + + objType = objType || this.typeOf(obj); + parser = this.parsers[objType]; + parserType = typeof parser === "undefined" ? "undefined" : _typeof(parser); + + if (parserType === "function") { + stack.push(obj); + res = parser.call(this, obj, stack); + stack.pop(); + return res; + } + return parserType === "string" ? parser : this.parsers.error; + }, + typeOf: function typeOf(obj) { + var type; + + if (obj === null) { + type = "null"; + } else if (typeof obj === "undefined") { + type = "undefined"; + } else if (is("regexp", obj)) { + type = "regexp"; + } else if (is("date", obj)) { + type = "date"; + } else if (is("function", obj)) { + type = "function"; + } else if (obj.setInterval !== undefined && obj.document !== undefined && obj.nodeType === undefined) { + type = "window"; + } else if (obj.nodeType === 9) { + type = "document"; + } else if (obj.nodeType) { + type = "node"; + } else if (isArray(obj)) { + type = "array"; + } else if (obj.constructor === Error.prototype.constructor) { + type = "error"; + } else { + type = typeof obj === "undefined" ? "undefined" : _typeof(obj); + } + return type; + }, + + separator: function separator() { + if (this.multiline) { + return this.HTML ? "
" : "\n"; + } else { + return this.HTML ? " " : " "; + } + }, + + // Extra can be a number, shortcut for increasing-calling-decreasing + indent: function indent(extra) { + if (!this.multiline) { + return ""; + } + var chr = this.indentChar; + if (this.HTML) { + chr = chr.replace(/\t/g, " ").replace(/ /g, " "); + } + return new Array(this.depth + (extra || 0)).join(chr); + }, + up: function up(a) { + this.depth += a || 1; + }, + down: function down(a) { + this.depth -= a || 1; + }, + setParser: function setParser(name, parser) { + this.parsers[name] = parser; + }, + + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + depth: 1, + maxDepth: config.maxDepth, + + // This is the list of parsers, to modify them, use dump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function error(_error) { + return "Error(\"" + _error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function _function(fn) { + var ret = "function", + + + // Functions never have name in IE + name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1]; + + if (name) { + ret += " " + name; + } + ret += "("; + + ret = [ret, dump.parse(fn, "functionArgs"), "){"].join(""); + return join(ret, dump.parse(fn, "functionCode"), "}"); + }, + array: array, + nodelist: array, + "arguments": array, + object: function object(map, stack) { + var keys, + key, + val, + i, + nonEnumerableProperties, + ret = []; + + if (dump.maxDepth && dump.depth > dump.maxDepth) { + return "[object Object]"; + } + + dump.up(); + keys = []; + for (key in map) { + keys.push(key); + } + + // Some properties are not always enumerable on Error objects. + nonEnumerableProperties = ["message", "name"]; + for (i in nonEnumerableProperties) { + key = nonEnumerableProperties[i]; + if (key in map && !inArray(key, keys)) { + keys.push(key); + } + } + keys.sort(); + for (i = 0; i < keys.length; i++) { + key = keys[i]; + val = map[key]; + ret.push(dump.parse(key, "key") + ": " + dump.parse(val, undefined, stack)); + } + dump.down(); + return join("{", ret, "}"); + }, + node: function node(_node) { + var len, + i, + val, + open = dump.HTML ? "<" : "<", + close = dump.HTML ? ">" : ">", + tag = _node.nodeName.toLowerCase(), + ret = open + tag, + attrs = _node.attributes; + + if (attrs) { + for (i = 0, len = attrs.length; i < len; i++) { + val = attrs[i].nodeValue; + + // IE6 includes all attributes in .attributes, even ones not explicitly + // set. Those have values like undefined, null, 0, false, "" or + // "inherit". + if (val && val !== "inherit") { + ret += " " + attrs[i].nodeName + "=" + dump.parse(val, "attribute"); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if (_node.nodeType === 3 || _node.nodeType === 4) { + ret += _node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + + // Function calls it internally, it's the arguments part of the function + functionArgs: function functionArgs(fn) { + var args, + l = fn.length; + + if (!l) { + return ""; + } + + args = new Array(l); + while (l--) { + + // 97 is 'a' + args[l] = String.fromCharCode(97 + l); + } + return " " + args.join(", ") + " "; + }, + + // Object calls it internally, the key part of an item in a map + key: quote, + + // Function calls it internally, it's the content of the function + functionCode: "[code]", + + // Node calls it internally, it's a html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal, + symbol: function symbol(sym) { + return sym.toString(); + } + }, + + // If true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + + // Indentation unit + indentChar: " ", + + // If true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return dump; + })(); + + var SuiteReport = function () { + function SuiteReport(name, parentSuite) { + classCallCheck(this, SuiteReport); + + this.name = name; + this.fullName = parentSuite ? parentSuite.fullName.concat(name) : []; + + this.tests = []; + this.childSuites = []; + + if (parentSuite) { + parentSuite.pushChildSuite(this); + } + } + + createClass(SuiteReport, [{ + key: "start", + value: function start(recordTime) { + if (recordTime) { + this._startTime = performanceNow(); + + if (performance) { + var suiteLevel = this.fullName.length; + performance.mark("qunit_suite_" + suiteLevel + "_start"); + } + } + + return { + name: this.name, + fullName: this.fullName.slice(), + tests: this.tests.map(function (test) { + return test.start(); + }), + childSuites: this.childSuites.map(function (suite) { + return suite.start(); + }), + testCounts: { + total: this.getTestCounts().total + } + }; + } + }, { + key: "end", + value: function end(recordTime) { + if (recordTime) { + this._endTime = performanceNow(); + + if (performance) { + var suiteLevel = this.fullName.length; + performance.mark("qunit_suite_" + suiteLevel + "_end"); + + var suiteName = this.fullName.join(" – "); + + measure(suiteLevel === 0 ? "QUnit Test Run" : "QUnit Test Suite: " + suiteName, "qunit_suite_" + suiteLevel + "_start", "qunit_suite_" + suiteLevel + "_end"); + } + } + + return { + name: this.name, + fullName: this.fullName.slice(), + tests: this.tests.map(function (test) { + return test.end(); + }), + childSuites: this.childSuites.map(function (suite) { + return suite.end(); + }), + testCounts: this.getTestCounts(), + runtime: this.getRuntime(), + status: this.getStatus() + }; + } + }, { + key: "pushChildSuite", + value: function pushChildSuite(suite) { + this.childSuites.push(suite); + } + }, { + key: "pushTest", + value: function pushTest(test) { + this.tests.push(test); + } + }, { + key: "getRuntime", + value: function getRuntime() { + return this._endTime - this._startTime; + } + }, { + key: "getTestCounts", + value: function getTestCounts() { + var counts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { passed: 0, failed: 0, skipped: 0, todo: 0, total: 0 }; + + counts = this.tests.reduce(function (counts, test) { + if (test.valid) { + counts[test.getStatus()]++; + counts.total++; + } + + return counts; + }, counts); + + return this.childSuites.reduce(function (counts, suite) { + return suite.getTestCounts(counts); + }, counts); + } + }, { + key: "getStatus", + value: function getStatus() { + var _getTestCounts = this.getTestCounts(), + total = _getTestCounts.total, + failed = _getTestCounts.failed, + skipped = _getTestCounts.skipped, + todo = _getTestCounts.todo; + + if (failed) { + return "failed"; + } else { + if (skipped === total) { + return "skipped"; + } else if (todo === total) { + return "todo"; + } else { + return "passed"; + } + } + } + }]); + return SuiteReport; + }(); + + var focused = false; + + var moduleStack = []; + + function createModule(name, testEnvironment, modifiers) { + var parentModule = moduleStack.length ? moduleStack.slice(-1)[0] : null; + var moduleName = parentModule !== null ? [parentModule.name, name].join(" > ") : name; + var parentSuite = parentModule ? parentModule.suiteReport : globalSuite; + + var skip = parentModule !== null && parentModule.skip || modifiers.skip; + var todo = parentModule !== null && parentModule.todo || modifiers.todo; + + var module = { + name: moduleName, + parentModule: parentModule, + tests: [], + moduleId: generateHash(moduleName), + testsRun: 0, + unskippedTestsRun: 0, + childModules: [], + suiteReport: new SuiteReport(name, parentSuite), + + // Pass along `skip` and `todo` properties from parent module, in case + // there is one, to childs. And use own otherwise. + // This property will be used to mark own tests and tests of child suites + // as either `skipped` or `todo`. + skip: skip, + todo: skip ? false : todo + }; + + var env = {}; + if (parentModule) { + parentModule.childModules.push(module); + extend(env, parentModule.testEnvironment); + } + extend(env, testEnvironment); + module.testEnvironment = env; + + config.modules.push(module); + return module; + } + + function processModule(name, options, executeNow) { + var modifiers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + if (objectType(options) === "function") { + executeNow = options; + options = undefined; + } + + var module = createModule(name, options, modifiers); + + // Move any hooks to a 'hooks' object + var testEnvironment = module.testEnvironment; + var hooks = module.hooks = {}; + + setHookFromEnvironment(hooks, testEnvironment, "before"); + setHookFromEnvironment(hooks, testEnvironment, "beforeEach"); + setHookFromEnvironment(hooks, testEnvironment, "afterEach"); + setHookFromEnvironment(hooks, testEnvironment, "after"); + + var moduleFns = { + before: setHookFunction(module, "before"), + beforeEach: setHookFunction(module, "beforeEach"), + afterEach: setHookFunction(module, "afterEach"), + after: setHookFunction(module, "after") + }; + + var currentModule = config.currentModule; + if (objectType(executeNow) === "function") { + moduleStack.push(module); + config.currentModule = module; + executeNow.call(module.testEnvironment, moduleFns); + moduleStack.pop(); + module = module.parentModule || currentModule; + } + + config.currentModule = module; + + function setHookFromEnvironment(hooks, environment, name) { + var potentialHook = environment[name]; + hooks[name] = typeof potentialHook === "function" ? [potentialHook] : []; + delete environment[name]; + } + + function setHookFunction(module, hookName) { + return function setHook(callback) { + module.hooks[hookName].push(callback); + }; + } + } + + function module$1(name, options, executeNow) { + if (focused) { + return; + } + + processModule(name, options, executeNow); + } + + module$1.only = function () { + if (focused) { + return; + } + + config.modules.length = 0; + config.queue.length = 0; + + module$1.apply(undefined, arguments); + + focused = true; + }; + + module$1.skip = function (name, options, executeNow) { + if (focused) { + return; + } + + processModule(name, options, executeNow, { skip: true }); + }; + + module$1.todo = function (name, options, executeNow) { + if (focused) { + return; + } + + processModule(name, options, executeNow, { todo: true }); + }; + + var LISTENERS = Object.create(null); + var SUPPORTED_EVENTS = ["runStart", "suiteStart", "testStart", "assertion", "testEnd", "suiteEnd", "runEnd"]; + + /** + * Emits an event with the specified data to all currently registered listeners. + * Callbacks will fire in the order in which they are registered (FIFO). This + * function is not exposed publicly; it is used by QUnit internals to emit + * logging events. + * + * @private + * @method emit + * @param {String} eventName + * @param {Object} data + * @return {Void} + */ + function emit(eventName, data) { + if (objectType(eventName) !== "string") { + throw new TypeError("eventName must be a string when emitting an event"); + } + + // Clone the callbacks in case one of them registers a new callback + var originalCallbacks = LISTENERS[eventName]; + var callbacks = originalCallbacks ? [].concat(toConsumableArray(originalCallbacks)) : []; + + for (var i = 0; i < callbacks.length; i++) { + callbacks[i](data); + } + } + + /** + * Registers a callback as a listener to the specified event. + * + * @public + * @method on + * @param {String} eventName + * @param {Function} callback + * @return {Void} + */ + function on(eventName, callback) { + if (objectType(eventName) !== "string") { + throw new TypeError("eventName must be a string when registering a listener"); + } else if (!inArray(eventName, SUPPORTED_EVENTS)) { + var events = SUPPORTED_EVENTS.join(", "); + throw new Error("\"" + eventName + "\" is not a valid event; must be one of: " + events + "."); + } else if (objectType(callback) !== "function") { + throw new TypeError("callback must be a function when registering a listener"); + } + + if (!LISTENERS[eventName]) { + LISTENERS[eventName] = []; + } + + // Don't register the same callback more than once + if (!inArray(callback, LISTENERS[eventName])) { + LISTENERS[eventName].push(callback); + } + } + + function objectOrFunction(x) { + var type = typeof x === 'undefined' ? 'undefined' : _typeof(x); + return x !== null && (type === 'object' || type === 'function'); + } + + function isFunction(x) { + return typeof x === 'function'; + } + + + + var _isArray = void 0; + if (Array.isArray) { + _isArray = Array.isArray; + } else { + _isArray = function _isArray(x) { + return Object.prototype.toString.call(x) === '[object Array]'; + }; + } + + var isArray = _isArray; + + var len = 0; + var vertxNext = void 0; + var customSchedulerFn = void 0; + + var asap = function asap(callback, arg) { + queue[len] = callback; + queue[len + 1] = arg; + len += 2; + if (len === 2) { + // If len is 2, that means that we need to schedule an async flush. + // If additional callbacks are queued before the queue is flushed, they + // will be processed by this flush that we are scheduling. + if (customSchedulerFn) { + customSchedulerFn(flush); + } else { + scheduleFlush(); + } + } + }; + + function setScheduler(scheduleFn) { + customSchedulerFn = scheduleFn; + } + + function setAsap(asapFn) { + asap = asapFn; + } + + var browserWindow = typeof window !== 'undefined' ? window : undefined; + var browserGlobal = browserWindow || {}; + var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver; + var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]'; + + // test for web worker but not in IE10 + var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined'; + + // node + function useNextTick() { + // node version 0.10.x displays a deprecation warning when nextTick is used recursively + // see https://github.com/cujojs/when/issues/410 for details + return function () { + return process.nextTick(flush); + }; + } + + // vertx + function useVertxTimer() { + if (typeof vertxNext !== 'undefined') { + return function () { + vertxNext(flush); + }; + } + + return useSetTimeout(); + } + + function useMutationObserver() { + var iterations = 0; + var observer = new BrowserMutationObserver(flush); + var node = document.createTextNode(''); + observer.observe(node, { characterData: true }); + + return function () { + node.data = iterations = ++iterations % 2; + }; + } + + // web worker + function useMessageChannel() { + var channel = new MessageChannel(); + channel.port1.onmessage = flush; + return function () { + return channel.port2.postMessage(0); + }; + } + + function useSetTimeout() { + // Store setTimeout reference so es6-promise will be unaffected by + // other code modifying setTimeout (like sinon.useFakeTimers()) + var globalSetTimeout = setTimeout; + return function () { + return globalSetTimeout(flush, 1); + }; + } + + var queue = new Array(1000); + function flush() { + for (var i = 0; i < len; i += 2) { + var callback = queue[i]; + var arg = queue[i + 1]; + + callback(arg); + + queue[i] = undefined; + queue[i + 1] = undefined; + } + + len = 0; + } + + function attemptVertx() { + try { + var vertx = Function('return this')().require('vertx'); + vertxNext = vertx.runOnLoop || vertx.runOnContext; + return useVertxTimer(); + } catch (e) { + return useSetTimeout(); + } + } + + var scheduleFlush = void 0; + // Decide what async method to use to triggering processing of queued callbacks: + if (isNode) { + scheduleFlush = useNextTick(); + } else if (BrowserMutationObserver) { + scheduleFlush = useMutationObserver(); + } else if (isWorker) { + scheduleFlush = useMessageChannel(); + } else if (browserWindow === undefined && typeof require === 'function') { + scheduleFlush = attemptVertx(); + } else { + scheduleFlush = useSetTimeout(); + } + + function then(onFulfillment, onRejection) { + var parent = this; + + var child = new this.constructor(noop); + + if (child[PROMISE_ID] === undefined) { + makePromise(child); + } + + var _state = parent._state; + + + if (_state) { + var callback = arguments[_state - 1]; + asap(function () { + return invokeCallback(_state, child, callback, parent._result); + }); + } else { + subscribe(parent, child, onFulfillment, onRejection); + } + + return child; + } + + /** + `Promise.resolve` returns a promise that will become resolved with the + passed `value`. It is shorthand for the following: + + ```javascript + let promise = new Promise(function(resolve, reject){ + resolve(1); + }); + + promise.then(function(value){ + // value === 1 + }); + ``` + + Instead of writing the above, your code now simply becomes the following: + + ```javascript + let promise = Promise.resolve(1); + + promise.then(function(value){ + // value === 1 + }); + ``` + + @method resolve + @static + @param {Any} value value that the returned promise will be resolved with + Useful for tooling. + @return {Promise} a promise that will become fulfilled with the given + `value` + */ + function resolve$1(object) { + /*jshint validthis:true */ + var Constructor = this; + + if (object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object.constructor === Constructor) { + return object; + } + + var promise = new Constructor(noop); + resolve(promise, object); + return promise; + } + + var PROMISE_ID = Math.random().toString(36).substring(2); + + function noop() {} + + var PENDING = void 0; + var FULFILLED = 1; + var REJECTED = 2; + + var TRY_CATCH_ERROR = { error: null }; + + function selfFulfillment() { + return new TypeError("You cannot resolve a promise with itself"); + } + + function cannotReturnOwn() { + return new TypeError('A promises callback cannot return that same promise.'); + } + + function getThen(promise) { + try { + return promise.then; + } catch (error) { + TRY_CATCH_ERROR.error = error; + return TRY_CATCH_ERROR; + } + } + + function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) { + try { + then$$1.call(value, fulfillmentHandler, rejectionHandler); + } catch (e) { + return e; + } + } + + function handleForeignThenable(promise, thenable, then$$1) { + asap(function (promise) { + var sealed = false; + var error = tryThen(then$$1, thenable, function (value) { + if (sealed) { + return; + } + sealed = true; + if (thenable !== value) { + resolve(promise, value); + } else { + fulfill(promise, value); + } + }, function (reason) { + if (sealed) { + return; + } + sealed = true; + + reject(promise, reason); + }, 'Settle: ' + (promise._label || ' unknown promise')); + + if (!sealed && error) { + sealed = true; + reject(promise, error); + } + }, promise); + } + + function handleOwnThenable(promise, thenable) { + if (thenable._state === FULFILLED) { + fulfill(promise, thenable._result); + } else if (thenable._state === REJECTED) { + reject(promise, thenable._result); + } else { + subscribe(thenable, undefined, function (value) { + return resolve(promise, value); + }, function (reason) { + return reject(promise, reason); + }); + } + } + + function handleMaybeThenable(promise, maybeThenable, then$$1) { + if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) { + handleOwnThenable(promise, maybeThenable); + } else { + if (then$$1 === TRY_CATCH_ERROR) { + reject(promise, TRY_CATCH_ERROR.error); + TRY_CATCH_ERROR.error = null; + } else if (then$$1 === undefined) { + fulfill(promise, maybeThenable); + } else if (isFunction(then$$1)) { + handleForeignThenable(promise, maybeThenable, then$$1); + } else { + fulfill(promise, maybeThenable); + } + } + } + + function resolve(promise, value) { + if (promise === value) { + reject(promise, selfFulfillment()); + } else if (objectOrFunction(value)) { + handleMaybeThenable(promise, value, getThen(value)); + } else { + fulfill(promise, value); + } + } + + function publishRejection(promise) { + if (promise._onerror) { + promise._onerror(promise._result); + } + + publish(promise); + } + + function fulfill(promise, value) { + if (promise._state !== PENDING) { + return; + } + + promise._result = value; + promise._state = FULFILLED; + + if (promise._subscribers.length !== 0) { + asap(publish, promise); + } + } + + function reject(promise, reason) { + if (promise._state !== PENDING) { + return; + } + promise._state = REJECTED; + promise._result = reason; + + asap(publishRejection, promise); + } + + function subscribe(parent, child, onFulfillment, onRejection) { + var _subscribers = parent._subscribers; + var length = _subscribers.length; + + + parent._onerror = null; + + _subscribers[length] = child; + _subscribers[length + FULFILLED] = onFulfillment; + _subscribers[length + REJECTED] = onRejection; + + if (length === 0 && parent._state) { + asap(publish, parent); + } + } + + function publish(promise) { + var subscribers = promise._subscribers; + var settled = promise._state; + + if (subscribers.length === 0) { + return; + } + + var child = void 0, + callback = void 0, + detail = promise._result; + + for (var i = 0; i < subscribers.length; i += 3) { + child = subscribers[i]; + callback = subscribers[i + settled]; + + if (child) { + invokeCallback(settled, child, callback, detail); + } else { + callback(detail); + } + } + + promise._subscribers.length = 0; + } + + function tryCatch(callback, detail) { + try { + return callback(detail); + } catch (e) { + TRY_CATCH_ERROR.error = e; + return TRY_CATCH_ERROR; + } + } + + function invokeCallback(settled, promise, callback, detail) { + var hasCallback = isFunction(callback), + value = void 0, + error = void 0, + succeeded = void 0, + failed = void 0; + + if (hasCallback) { + value = tryCatch(callback, detail); + + if (value === TRY_CATCH_ERROR) { + failed = true; + error = value.error; + value.error = null; + } else { + succeeded = true; + } + + if (promise === value) { + reject(promise, cannotReturnOwn()); + return; + } + } else { + value = detail; + succeeded = true; + } + + if (promise._state !== PENDING) { + // noop + } else if (hasCallback && succeeded) { + resolve(promise, value); + } else if (failed) { + reject(promise, error); + } else if (settled === FULFILLED) { + fulfill(promise, value); + } else if (settled === REJECTED) { + reject(promise, value); + } + } + + function initializePromise(promise, resolver) { + try { + resolver(function resolvePromise(value) { + resolve(promise, value); + }, function rejectPromise(reason) { + reject(promise, reason); + }); + } catch (e) { + reject(promise, e); + } + } + + var id = 0; + function nextId() { + return id++; + } + + function makePromise(promise) { + promise[PROMISE_ID] = id++; + promise._state = undefined; + promise._result = undefined; + promise._subscribers = []; + } + + function validationError() { + return new Error('Array Methods must be provided an Array'); + } + + var Enumerator = function () { + function Enumerator(Constructor, input) { + classCallCheck(this, Enumerator); + + this._instanceConstructor = Constructor; + this.promise = new Constructor(noop); + + if (!this.promise[PROMISE_ID]) { + makePromise(this.promise); + } + + if (isArray(input)) { + this.length = input.length; + this._remaining = input.length; + + this._result = new Array(this.length); + + if (this.length === 0) { + fulfill(this.promise, this._result); + } else { + this.length = this.length || 0; + this._enumerate(input); + if (this._remaining === 0) { + fulfill(this.promise, this._result); + } + } + } else { + reject(this.promise, validationError()); + } + } + + createClass(Enumerator, [{ + key: '_enumerate', + value: function _enumerate(input) { + for (var i = 0; this._state === PENDING && i < input.length; i++) { + this._eachEntry(input[i], i); + } + } + }, { + key: '_eachEntry', + value: function _eachEntry(entry, i) { + var c = this._instanceConstructor; + var resolve$$1 = c.resolve; + + + if (resolve$$1 === resolve$1) { + var _then = getThen(entry); + + if (_then === then && entry._state !== PENDING) { + this._settledAt(entry._state, i, entry._result); + } else if (typeof _then !== 'function') { + this._remaining--; + this._result[i] = entry; + } else if (c === Promise$2) { + var promise = new c(noop); + handleMaybeThenable(promise, entry, _then); + this._willSettleAt(promise, i); + } else { + this._willSettleAt(new c(function (resolve$$1) { + return resolve$$1(entry); + }), i); + } + } else { + this._willSettleAt(resolve$$1(entry), i); + } + } + }, { + key: '_settledAt', + value: function _settledAt(state, i, value) { + var promise = this.promise; + + + if (promise._state === PENDING) { + this._remaining--; + + if (state === REJECTED) { + reject(promise, value); + } else { + this._result[i] = value; + } + } + + if (this._remaining === 0) { + fulfill(promise, this._result); + } + } + }, { + key: '_willSettleAt', + value: function _willSettleAt(promise, i) { + var enumerator = this; + + subscribe(promise, undefined, function (value) { + return enumerator._settledAt(FULFILLED, i, value); + }, function (reason) { + return enumerator._settledAt(REJECTED, i, reason); + }); + } + }]); + return Enumerator; + }(); + + /** + `Promise.all` accepts an array of promises, and returns a new promise which + is fulfilled with an array of fulfillment values for the passed promises, or + rejected with the reason of the first passed promise to be rejected. It casts all + elements of the passed iterable to promises as it runs this algorithm. + + Example: + + ```javascript + let promise1 = resolve(1); + let promise2 = resolve(2); + let promise3 = resolve(3); + let promises = [ promise1, promise2, promise3 ]; + + Promise.all(promises).then(function(array){ + // The array here would be [ 1, 2, 3 ]; + }); + ``` + + If any of the `promises` given to `all` are rejected, the first promise + that is rejected will be given as an argument to the returned promises's + rejection handler. For example: + + Example: + + ```javascript + let promise1 = resolve(1); + let promise2 = reject(new Error("2")); + let promise3 = reject(new Error("3")); + let promises = [ promise1, promise2, promise3 ]; + + Promise.all(promises).then(function(array){ + // Code here never runs because there are rejected promises! + }, function(error) { + // error.message === "2" + }); + ``` + + @method all + @static + @param {Array} entries array of promises + @param {String} label optional string for labeling the promise. + Useful for tooling. + @return {Promise} promise that is fulfilled when all `promises` have been + fulfilled, or rejected if any of them become rejected. + @static + */ + function all(entries) { + return new Enumerator(this, entries).promise; + } + + /** + `Promise.race` returns a new promise which is settled in the same way as the + first passed promise to settle. + + Example: + + ```javascript + let promise1 = new Promise(function(resolve, reject){ + setTimeout(function(){ + resolve('promise 1'); + }, 200); + }); + + let promise2 = new Promise(function(resolve, reject){ + setTimeout(function(){ + resolve('promise 2'); + }, 100); + }); + + Promise.race([promise1, promise2]).then(function(result){ + // result === 'promise 2' because it was resolved before promise1 + // was resolved. + }); + ``` + + `Promise.race` is deterministic in that only the state of the first + settled promise matters. For example, even if other promises given to the + `promises` array argument are resolved, but the first settled promise has + become rejected before the other promises became fulfilled, the returned + promise will become rejected: + + ```javascript + let promise1 = new Promise(function(resolve, reject){ + setTimeout(function(){ + resolve('promise 1'); + }, 200); + }); + + let promise2 = new Promise(function(resolve, reject){ + setTimeout(function(){ + reject(new Error('promise 2')); + }, 100); + }); + + Promise.race([promise1, promise2]).then(function(result){ + // Code here never runs + }, function(reason){ + // reason.message === 'promise 2' because promise 2 became rejected before + // promise 1 became fulfilled + }); + ``` + + An example real-world use case is implementing timeouts: + + ```javascript + Promise.race([ajax('foo.json'), timeout(5000)]) + ``` + + @method race + @static + @param {Array} promises array of promises to observe + Useful for tooling. + @return {Promise} a promise which settles in the same way as the first passed + promise to settle. + */ + function race(entries) { + /*jshint validthis:true */ + var Constructor = this; + + if (!isArray(entries)) { + return new Constructor(function (_, reject) { + return reject(new TypeError('You must pass an array to race.')); + }); + } else { + return new Constructor(function (resolve, reject) { + var length = entries.length; + for (var i = 0; i < length; i++) { + Constructor.resolve(entries[i]).then(resolve, reject); + } + }); + } + } + + /** + `Promise.reject` returns a promise rejected with the passed `reason`. + It is shorthand for the following: + + ```javascript + let promise = new Promise(function(resolve, reject){ + reject(new Error('WHOOPS')); + }); + + promise.then(function(value){ + // Code here doesn't run because the promise is rejected! + }, function(reason){ + // reason.message === 'WHOOPS' + }); + ``` + + Instead of writing the above, your code now simply becomes the following: + + ```javascript + let promise = Promise.reject(new Error('WHOOPS')); + + promise.then(function(value){ + // Code here doesn't run because the promise is rejected! + }, function(reason){ + // reason.message === 'WHOOPS' + }); + ``` + + @method reject + @static + @param {Any} reason value that the returned promise will be rejected with. + Useful for tooling. + @return {Promise} a promise rejected with the given `reason`. + */ + function reject$1(reason) { + /*jshint validthis:true */ + var Constructor = this; + var promise = new Constructor(noop); + reject(promise, reason); + return promise; + } + + function needsResolver() { + throw new TypeError('You must pass a resolver function as the first argument to the promise constructor'); + } + + function needsNew() { + throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."); + } + + /** + Promise objects represent the eventual result of an asynchronous operation. The + primary way of interacting with a promise is through its `then` method, which + registers callbacks to receive either a promise's eventual value or the reason + why the promise cannot be fulfilled. + + Terminology + ----------- + + - `promise` is an object or function with a `then` method whose behavior conforms to this specification. + - `thenable` is an object or function that defines a `then` method. + - `value` is any legal JavaScript value (including undefined, a thenable, or a promise). + - `exception` is a value that is thrown using the throw statement. + - `reason` is a value that indicates why a promise was rejected. + - `settled` the final resting state of a promise, fulfilled or rejected. + + A promise can be in one of three states: pending, fulfilled, or rejected. + + Promises that are fulfilled have a fulfillment value and are in the fulfilled + state. Promises that are rejected have a rejection reason and are in the + rejected state. A fulfillment value is never a thenable. + + Promises can also be said to *resolve* a value. If this value is also a + promise, then the original promise's settled state will match the value's + settled state. So a promise that *resolves* a promise that rejects will + itself reject, and a promise that *resolves* a promise that fulfills will + itself fulfill. + + + Basic Usage: + ------------ + + ```js + let promise = new Promise(function(resolve, reject) { + // on success + resolve(value); + + // on failure + reject(reason); + }); + + promise.then(function(value) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Advanced Usage: + --------------- + + Promises shine when abstracting away asynchronous interactions such as + `XMLHttpRequest`s. + + ```js + function getJSON(url) { + return new Promise(function(resolve, reject){ + let xhr = new XMLHttpRequest(); + + xhr.open('GET', url); + xhr.onreadystatechange = handler; + xhr.responseType = 'json'; + xhr.setRequestHeader('Accept', 'application/json'); + xhr.send(); + + function handler() { + if (this.readyState === this.DONE) { + if (this.status === 200) { + resolve(this.response); + } else { + reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']')); + } + } + }; + }); + } + + getJSON('/posts.json').then(function(json) { + // on fulfillment + }, function(reason) { + // on rejection + }); + ``` + + Unlike callbacks, promises are great composable primitives. + + ```js + Promise.all([ + getJSON('/posts'), + getJSON('/comments') + ]).then(function(values){ + values[0] // => postsJSON + values[1] // => commentsJSON + + return values; + }); + ``` + + @class Promise + @param {Function} resolver + Useful for tooling. + @constructor + */ + + var Promise$2 = function () { + function Promise(resolver) { + classCallCheck(this, Promise); + + this[PROMISE_ID] = nextId(); + this._result = this._state = undefined; + this._subscribers = []; + + if (noop !== resolver) { + typeof resolver !== 'function' && needsResolver(); + this instanceof Promise ? initializePromise(this, resolver) : needsNew(); + } + } + + /** + The primary way of interacting with a promise is through its `then` method, + which registers callbacks to receive either a promise's eventual value or the + reason why the promise cannot be fulfilled. + ```js + findUser().then(function(user){ + // user is available + }, function(reason){ + // user is unavailable, and you are given the reason why + }); + ``` + Chaining + -------- + The return value of `then` is itself a promise. This second, 'downstream' + promise is resolved with the return value of the first promise's fulfillment + or rejection handler, or rejected if the handler throws an exception. + ```js + findUser().then(function (user) { + return user.name; + }, function (reason) { + return 'default name'; + }).then(function (userName) { + // If `findUser` fulfilled, `userName` will be the user's name, otherwise it + // will be `'default name'` + }); + findUser().then(function (user) { + throw new Error('Found user, but still unhappy'); + }, function (reason) { + throw new Error('`findUser` rejected and we're unhappy'); + }).then(function (value) { + // never reached + }, function (reason) { + // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'. + // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'. + }); + ``` + If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream. + ```js + findUser().then(function (user) { + throw new PedagogicalException('Upstream error'); + }).then(function (value) { + // never reached + }).then(function (value) { + // never reached + }, function (reason) { + // The `PedgagocialException` is propagated all the way down to here + }); + ``` + Assimilation + ------------ + Sometimes the value you want to propagate to a downstream promise can only be + retrieved asynchronously. This can be achieved by returning a promise in the + fulfillment or rejection handler. The downstream promise will then be pending + until the returned promise is settled. This is called *assimilation*. + ```js + findUser().then(function (user) { + return findCommentsByAuthor(user); + }).then(function (comments) { + // The user's comments are now available + }); + ``` + If the assimliated promise rejects, then the downstream promise will also reject. + ```js + findUser().then(function (user) { + return findCommentsByAuthor(user); + }).then(function (comments) { + // If `findCommentsByAuthor` fulfills, we'll have the value here + }, function (reason) { + // If `findCommentsByAuthor` rejects, we'll have the reason here + }); + ``` + Simple Example + -------------- + Synchronous Example + ```javascript + let result; + try { + result = findResult(); + // success + } catch(reason) { + // failure + } + ``` + Errback Example + ```js + findResult(function(result, err){ + if (err) { + // failure + } else { + // success + } + }); + ``` + Promise Example; + ```javascript + findResult().then(function(result){ + // success + }, function(reason){ + // failure + }); + ``` + Advanced Example + -------------- + Synchronous Example + ```javascript + let author, books; + try { + author = findAuthor(); + books = findBooksByAuthor(author); + // success + } catch(reason) { + // failure + } + ``` + Errback Example + ```js + function foundBooks(books) { + } + function failure(reason) { + } + findAuthor(function(author, err){ + if (err) { + failure(err); + // failure + } else { + try { + findBoooksByAuthor(author, function(books, err) { + if (err) { + failure(err); + } else { + try { + foundBooks(books); + } catch(reason) { + failure(reason); + } + } + }); + } catch(error) { + failure(err); + } + // success + } + }); + ``` + Promise Example; + ```javascript + findAuthor(). + then(findBooksByAuthor). + then(function(books){ + // found books + }).catch(function(reason){ + // something went wrong + }); + ``` + @method then + @param {Function} onFulfilled + @param {Function} onRejected + Useful for tooling. + @return {Promise} + */ + + /** + `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same + as the catch block of a try/catch statement. + ```js + function findAuthor(){ + throw new Error('couldn't find that author'); + } + // synchronous + try { + findAuthor(); + } catch(reason) { + // something went wrong + } + // async with promises + findAuthor().catch(function(reason){ + // something went wrong + }); + ``` + @method catch + @param {Function} onRejection + Useful for tooling. + @return {Promise} + */ + + + createClass(Promise, [{ + key: 'catch', + value: function _catch(onRejection) { + return this.then(null, onRejection); + } + + /** + `finally` will be invoked regardless of the promise's fate just as native + try/catch/finally behaves + + Synchronous example: + + ```js + findAuthor() { + if (Math.random() > 0.5) { + throw new Error(); + } + return new Author(); + } + + try { + return findAuthor(); // succeed or fail + } catch(error) { + return findOtherAuther(); + } finally { + // always runs + // doesn't affect the return value + } + ``` + + Asynchronous example: + + ```js + findAuthor().catch(function(reason){ + return findOtherAuther(); + }).finally(function(){ + // author was either found, or not + }); + ``` + + @method finally + @param {Function} callback + @return {Promise} + */ + + }, { + key: 'finally', + value: function _finally(callback) { + var promise = this; + var constructor = promise.constructor; + + if (isFunction(callback)) { + return promise.then(function (value) { + return constructor.resolve(callback()).then(function () { + return value; + }); + }, function (reason) { + return constructor.resolve(callback()).then(function () { + throw reason; + }); + }); + } + + return promise.then(callback, callback); + } + }]); + return Promise; + }(); + + Promise$2.prototype.then = then; + Promise$2.all = all; + Promise$2.race = race; + Promise$2.resolve = resolve$1; + Promise$2.reject = reject$1; + Promise$2._setScheduler = setScheduler; + Promise$2._setAsap = setAsap; + Promise$2._asap = asap; + + /*global self*/ + function polyfill() { + var local = void 0; + + if (typeof global !== 'undefined') { + local = global; + } else if (typeof self !== 'undefined') { + local = self; + } else { + try { + local = Function('return this')(); + } catch (e) { + throw new Error('polyfill failed because global object is unavailable in this environment'); + } + } + + var P = local.Promise; + + if (P) { + var promiseToString = null; + try { + promiseToString = Object.prototype.toString.call(P.resolve()); + } catch (e) { + // silently ignored + } + + if (promiseToString === '[object Promise]' && !P.cast) { + return; + } + } + + local.Promise = Promise$2; + } + + // Strange compat.. + Promise$2.polyfill = polyfill; + Promise$2.Promise = Promise$2; + + var Promise$1 = typeof Promise !== "undefined" ? Promise : Promise$2; + + // Register logging callbacks + function registerLoggingCallbacks(obj) { + var i, + l, + key, + callbackNames = ["begin", "done", "log", "testStart", "testDone", "moduleStart", "moduleDone"]; + + function registerLoggingCallback(key) { + var loggingCallback = function loggingCallback(callback) { + if (objectType(callback) !== "function") { + throw new Error("QUnit logging methods require a callback function as their first parameters."); + } + + config.callbacks[key].push(callback); + }; + + return loggingCallback; + } + + for (i = 0, l = callbackNames.length; i < l; i++) { + key = callbackNames[i]; + + // Initialize key collection of logging callback + if (objectType(config.callbacks[key]) === "undefined") { + config.callbacks[key] = []; + } + + obj[key] = registerLoggingCallback(key); + } + } + + function runLoggingCallbacks(key, args) { + var callbacks = config.callbacks[key]; + + // Handling 'log' callbacks separately. Unlike the other callbacks, + // the log callback is not controlled by the processing queue, + // but rather used by asserts. Hence to promisfy the 'log' callback + // would mean promisfying each step of a test + if (key === "log") { + callbacks.map(function (callback) { + return callback(args); + }); + return; + } + + // ensure that each callback is executed serially + return callbacks.reduce(function (promiseChain, callback) { + return promiseChain.then(function () { + return Promise$1.resolve(callback(args)); + }); + }, Promise$1.resolve([])); + } + + // Doesn't support IE9, it will return undefined on these browsers + // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack + var fileName = (sourceFromStacktrace(0) || "").replace(/(:\d+)+\)?/, "").replace(/.+\//, ""); + + function extractStacktrace(e, offset) { + offset = offset === undefined ? 4 : offset; + + var stack, include, i; + + if (e && e.stack) { + stack = e.stack.split("\n"); + if (/^error$/i.test(stack[0])) { + stack.shift(); + } + if (fileName) { + include = []; + for (i = offset; i < stack.length; i++) { + if (stack[i].indexOf(fileName) !== -1) { + break; + } + include.push(stack[i]); + } + if (include.length) { + return include.join("\n"); + } + } + return stack[offset]; + } + } + + function sourceFromStacktrace(offset) { + var error = new Error(); + + // Support: Safari <=7 only, IE <=10 - 11 only + // Not all browsers generate the `stack` property for `new Error()`, see also #636 + if (!error.stack) { + try { + throw error; + } catch (err) { + error = err; + } + } + + return extractStacktrace(error, offset); + } + + var priorityCount = 0; + var unitSampler = void 0; + + // This is a queue of functions that are tasks within a single test. + // After tests are dequeued from config.queue they are expanded into + // a set of tasks in this queue. + var taskQueue = []; + + /** + * Advances the taskQueue to the next task. If the taskQueue is empty, + * process the testQueue + */ + function advance() { + advanceTaskQueue(); + + if (!taskQueue.length && !config.blocking && !config.current) { + advanceTestQueue(); + } + } + + /** + * Advances the taskQueue with an increased depth + */ + function advanceTaskQueue() { + var start = now(); + config.depth = (config.depth || 0) + 1; + + processTaskQueue(start); + + config.depth--; + } + + /** + * Process the first task on the taskQueue as a promise. + * Each task is a function returned by https://github.com/qunitjs/qunit/blob/master/src/test.js#L381 + */ + function processTaskQueue(start) { + if (taskQueue.length && !config.blocking) { + var elapsedTime = now() - start; + + if (!defined.setTimeout || config.updateRate <= 0 || elapsedTime < config.updateRate) { + var task = taskQueue.shift(); + Promise$1.resolve(task()).then(function () { + if (!taskQueue.length) { + advance(); + } else { + processTaskQueue(start); + } + }); + } else { + setTimeout$1(advance); + } + } + } + + /** + * Advance the testQueue to the next test to process. Call done() if testQueue completes. + */ + function advanceTestQueue() { + if (!config.blocking && !config.queue.length && config.depth === 0) { + done(); + return; + } + + var testTasks = config.queue.shift(); + addToTaskQueue(testTasks()); + + if (priorityCount > 0) { + priorityCount--; + } + + advance(); + } + + /** + * Enqueue the tasks for a test into the task queue. + * @param {Array} tasksArray + */ + function addToTaskQueue(tasksArray) { + taskQueue.push.apply(taskQueue, toConsumableArray(tasksArray)); + } + + /** + * Return the number of tasks remaining in the task queue to be processed. + * @return {Number} + */ + function taskQueueLength() { + return taskQueue.length; + } + + /** + * Adds a test to the TestQueue for execution. + * @param {Function} testTasksFunc + * @param {Boolean} prioritize + * @param {String} seed + */ + function addToTestQueue(testTasksFunc, prioritize, seed) { + if (prioritize) { + config.queue.splice(priorityCount++, 0, testTasksFunc); + } else if (seed) { + if (!unitSampler) { + unitSampler = unitSamplerGenerator(seed); + } + + // Insert into a random position after all prioritized items + var index = Math.floor(unitSampler() * (config.queue.length - priorityCount + 1)); + config.queue.splice(priorityCount + index, 0, testTasksFunc); + } else { + config.queue.push(testTasksFunc); + } + } + + /** + * Creates a seeded "sample" generator which is used for randomizing tests. + */ + function unitSamplerGenerator(seed) { + + // 32-bit xorshift, requires only a nonzero seed + // http://excamera.com/sphinx/article-xorshift.html + var sample = parseInt(generateHash(seed), 16) || -1; + return function () { + sample ^= sample << 13; + sample ^= sample >>> 17; + sample ^= sample << 5; + + // ECMAScript has no unsigned number type + if (sample < 0) { + sample += 0x100000000; + } + + return sample / 0x100000000; + }; + } + + /** + * This function is called when the ProcessingQueue is done processing all + * items. It handles emitting the final run events. + */ + function done() { + var storage = config.storage; + + ProcessingQueue.finished = true; + + var runtime = now() - config.started; + var passed = config.stats.all - config.stats.bad; + + if (config.stats.all === 0) { + + if (config.filter && config.filter.length) { + throw new Error("No tests matched the filter \"" + config.filter + "\"."); + } + + if (config.module && config.module.length) { + throw new Error("No tests matched the module \"" + config.module + "\"."); + } + + if (config.moduleId && config.moduleId.length) { + throw new Error("No tests matched the moduleId \"" + config.moduleId + "\"."); + } + + if (config.testId && config.testId.length) { + throw new Error("No tests matched the testId \"" + config.testId + "\"."); + } + + throw new Error("No tests were run."); + } + + emit("runEnd", globalSuite.end(true)); + runLoggingCallbacks("done", { + passed: passed, + failed: config.stats.bad, + total: config.stats.all, + runtime: runtime + }).then(function () { + + // Clear own storage items if all tests passed + if (storage && config.stats.bad === 0) { + for (var i = storage.length - 1; i >= 0; i--) { + var key = storage.key(i); + + if (key.indexOf("qunit-test-") === 0) { + storage.removeItem(key); + } + } + } + }); + } + + var ProcessingQueue = { + finished: false, + add: addToTestQueue, + advance: advance, + taskCount: taskQueueLength + }; + + var TestReport = function () { + function TestReport(name, suite, options) { + classCallCheck(this, TestReport); + + this.name = name; + this.suiteName = suite.name; + this.fullName = suite.fullName.concat(name); + this.runtime = 0; + this.assertions = []; + + this.skipped = !!options.skip; + this.todo = !!options.todo; + + this.valid = options.valid; + + this._startTime = 0; + this._endTime = 0; + + suite.pushTest(this); + } + + createClass(TestReport, [{ + key: "start", + value: function start(recordTime) { + if (recordTime) { + this._startTime = performanceNow(); + if (performance) { + performance.mark("qunit_test_start"); + } + } + + return { + name: this.name, + suiteName: this.suiteName, + fullName: this.fullName.slice() + }; + } + }, { + key: "end", + value: function end(recordTime) { + if (recordTime) { + this._endTime = performanceNow(); + if (performance) { + performance.mark("qunit_test_end"); + + var testName = this.fullName.join(" – "); + + measure("QUnit Test: " + testName, "qunit_test_start", "qunit_test_end"); + } + } + + return extend(this.start(), { + runtime: this.getRuntime(), + status: this.getStatus(), + errors: this.getFailedAssertions(), + assertions: this.getAssertions() + }); + } + }, { + key: "pushAssertion", + value: function pushAssertion(assertion) { + this.assertions.push(assertion); + } + }, { + key: "getRuntime", + value: function getRuntime() { + return this._endTime - this._startTime; + } + }, { + key: "getStatus", + value: function getStatus() { + if (this.skipped) { + return "skipped"; + } + + var testPassed = this.getFailedAssertions().length > 0 ? this.todo : !this.todo; + + if (!testPassed) { + return "failed"; + } else if (this.todo) { + return "todo"; + } else { + return "passed"; + } + } + }, { + key: "getFailedAssertions", + value: function getFailedAssertions() { + return this.assertions.filter(function (assertion) { + return !assertion.passed; + }); + } + }, { + key: "getAssertions", + value: function getAssertions() { + return this.assertions.slice(); + } + + // Remove actual and expected values from assertions. This is to prevent + // leaking memory throughout a test suite. + + }, { + key: "slimAssertions", + value: function slimAssertions() { + this.assertions = this.assertions.map(function (assertion) { + delete assertion.actual; + delete assertion.expected; + return assertion; + }); + } + }]); + return TestReport; + }(); + + var focused$1 = false; + + function Test(settings) { + var i, l; + + ++Test.count; + + this.expected = null; + this.assertions = []; + this.semaphore = 0; + this.module = config.currentModule; + this.stack = sourceFromStacktrace(3); + this.steps = []; + this.timeout = undefined; + + // If a module is skipped, all its tests and the tests of the child suites + // should be treated as skipped even if they are defined as `only` or `todo`. + // As for `todo` module, all its tests will be treated as `todo` except for + // tests defined as `skip` which will be left intact. + // + // So, if a test is defined as `todo` and is inside a skipped module, we should + // then treat that test as if was defined as `skip`. + if (this.module.skip) { + settings.skip = true; + settings.todo = false; + + // Skipped tests should be left intact + } else if (this.module.todo && !settings.skip) { + settings.todo = true; + } + + extend(this, settings); + + this.testReport = new TestReport(settings.testName, this.module.suiteReport, { + todo: settings.todo, + skip: settings.skip, + valid: this.valid() + }); + + // Register unique strings + for (i = 0, l = this.module.tests; i < l.length; i++) { + if (this.module.tests[i].name === this.testName) { + this.testName += " "; + } + } + + this.testId = generateHash(this.module.name, this.testName); + + this.module.tests.push({ + name: this.testName, + testId: this.testId, + skip: !!settings.skip + }); + + if (settings.skip) { + + // Skipped tests will fully ignore any sent callback + this.callback = function () {}; + this.async = false; + this.expected = 0; + } else { + if (typeof this.callback !== "function") { + var method = this.todo ? "todo" : "test"; + + // eslint-disable-next-line max-len + throw new TypeError("You must provide a function as a test callback to QUnit." + method + "(\"" + settings.testName + "\")"); + } + + this.assert = new Assert(this); + } + } + + Test.count = 0; + + function getNotStartedModules(startModule) { + var module = startModule, + modules = []; + + while (module && module.testsRun === 0) { + modules.push(module); + module = module.parentModule; + } + + // The above push modules from the child to the parent + // return a reversed order with the top being the top most parent module + return modules.reverse(); + } + + Test.prototype = { + before: function before() { + var _this = this; + + var module = this.module, + notStartedModules = getNotStartedModules(module); + + // ensure the callbacks are executed serially for each module + var callbackPromises = notStartedModules.reduce(function (promiseChain, startModule) { + return promiseChain.then(function () { + startModule.stats = { all: 0, bad: 0, started: now() }; + emit("suiteStart", startModule.suiteReport.start(true)); + return runLoggingCallbacks("moduleStart", { + name: startModule.name, + tests: startModule.tests + }); + }); + }, Promise$1.resolve([])); + + return callbackPromises.then(function () { + config.current = _this; + + _this.testEnvironment = extend({}, module.testEnvironment); + + _this.started = now(); + emit("testStart", _this.testReport.start(true)); + return runLoggingCallbacks("testStart", { + name: _this.testName, + module: module.name, + testId: _this.testId, + previousFailure: _this.previousFailure + }).then(function () { + if (!config.pollution) { + saveGlobal(); + } + }); + }); + }, + + run: function run() { + var promise; + + config.current = this; + + this.callbackStarted = now(); + + if (config.notrycatch) { + runTest(this); + return; + } + + try { + runTest(this); + } catch (e) { + this.pushFailure("Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + (e.message || e), extractStacktrace(e, 0)); + + // Else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if (config.blocking) { + internalRecover(this); + } + } + + function runTest(test) { + promise = test.callback.call(test.testEnvironment, test.assert); + test.resolvePromise(promise); + + // If the test has a "lock" on it, but the timeout is 0, then we push a + // failure as the test should be synchronous. + if (test.timeout === 0 && test.semaphore !== 0) { + pushFailure("Test did not finish synchronously even though assert.timeout( 0 ) was used.", sourceFromStacktrace(2)); + } + } + }, + + after: function after() { + checkPollution(); + }, + + queueHook: function queueHook(hook, hookName, hookOwner) { + var _this2 = this; + + var callHook = function callHook() { + var promise = hook.call(_this2.testEnvironment, _this2.assert); + _this2.resolvePromise(promise, hookName); + }; + + var runHook = function runHook() { + if (hookName === "before") { + if (hookOwner.unskippedTestsRun !== 0) { + return; + } + + _this2.preserveEnvironment = true; + } + + // The 'after' hook should only execute when there are not tests left and + // when the 'after' and 'finish' tasks are the only tasks left to process + if (hookName === "after" && hookOwner.unskippedTestsRun !== numberOfUnskippedTests(hookOwner) - 1 && (config.queue.length > 0 || ProcessingQueue.taskCount() > 2)) { + return; + } + + config.current = _this2; + if (config.notrycatch) { + callHook(); + return; + } + try { + callHook(); + } catch (error) { + _this2.pushFailure(hookName + " failed on " + _this2.testName + ": " + (error.message || error), extractStacktrace(error, 0)); + } + }; + + return runHook; + }, + + + // Currently only used for module level hooks, can be used to add global level ones + hooks: function hooks(handler) { + var hooks = []; + + function processHooks(test, module) { + if (module.parentModule) { + processHooks(test, module.parentModule); + } + + if (module.hooks[handler].length) { + for (var i = 0; i < module.hooks[handler].length; i++) { + hooks.push(test.queueHook(module.hooks[handler][i], handler, module)); + } + } + } + + // Hooks are ignored on skipped tests + if (!this.skip) { + processHooks(this, this.module); + } + + return hooks; + }, + + + finish: function finish() { + config.current = this; + + // Release the test callback to ensure that anything referenced has been + // released to be garbage collected. + this.callback = undefined; + + if (this.steps.length) { + var stepsList = this.steps.join(", "); + this.pushFailure("Expected assert.verifySteps() to be called before end of test " + ("after using assert.step(). Unverified steps: " + stepsList), this.stack); + } + + if (config.requireExpects && this.expected === null) { + this.pushFailure("Expected number of assertions to be defined, but expect() was " + "not called.", this.stack); + } else if (this.expected !== null && this.expected !== this.assertions.length) { + this.pushFailure("Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack); + } else if (this.expected === null && !this.assertions.length) { + this.pushFailure("Expected at least one assertion, but none were run - call " + "expect(0) to accept zero assertions.", this.stack); + } + + var i, + module = this.module, + moduleName = module.name, + testName = this.testName, + skipped = !!this.skip, + todo = !!this.todo, + bad = 0, + storage = config.storage; + + this.runtime = now() - this.started; + + config.stats.all += this.assertions.length; + module.stats.all += this.assertions.length; + + for (i = 0; i < this.assertions.length; i++) { + if (!this.assertions[i].result) { + bad++; + config.stats.bad++; + module.stats.bad++; + } + } + + notifyTestsRan(module, skipped); + + // Store result when possible + if (storage) { + if (bad) { + storage.setItem("qunit-test-" + moduleName + "-" + testName, bad); + } else { + storage.removeItem("qunit-test-" + moduleName + "-" + testName); + } + } + + // After emitting the js-reporters event we cleanup the assertion data to + // avoid leaking it. It is not used by the legacy testDone callbacks. + emit("testEnd", this.testReport.end(true)); + this.testReport.slimAssertions(); + + return runLoggingCallbacks("testDone", { + name: testName, + module: moduleName, + skipped: skipped, + todo: todo, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + runtime: skipped ? 0 : this.runtime, + + // HTML Reporter use + assertions: this.assertions, + testId: this.testId, + + // Source of Test + source: this.stack + }).then(function () { + if (module.testsRun === numberOfTests(module)) { + var completedModules = [module]; + + // Check if the parent modules, iteratively, are done. If that the case, + // we emit the `suiteEnd` event and trigger `moduleDone` callback. + var parent = module.parentModule; + while (parent && parent.testsRun === numberOfTests(parent)) { + completedModules.push(parent); + parent = parent.parentModule; + } + + return completedModules.reduce(function (promiseChain, completedModule) { + return promiseChain.then(function () { + return logSuiteEnd(completedModule); + }); + }, Promise$1.resolve([])); + } + }).then(function () { + config.current = undefined; + }); + + function logSuiteEnd(module) { + + // Reset `module.hooks` to ensure that anything referenced in these hooks + // has been released to be garbage collected. + module.hooks = {}; + + emit("suiteEnd", module.suiteReport.end(true)); + return runLoggingCallbacks("moduleDone", { + name: module.name, + tests: module.tests, + failed: module.stats.bad, + passed: module.stats.all - module.stats.bad, + total: module.stats.all, + runtime: now() - module.stats.started + }); + } + }, + + preserveTestEnvironment: function preserveTestEnvironment() { + if (this.preserveEnvironment) { + this.module.testEnvironment = this.testEnvironment; + this.testEnvironment = extend({}, this.module.testEnvironment); + } + }, + + queue: function queue() { + var test = this; + + if (!this.valid()) { + return; + } + + function runTest() { + return [function () { + return test.before(); + }].concat(toConsumableArray(test.hooks("before")), [function () { + test.preserveTestEnvironment(); + }], toConsumableArray(test.hooks("beforeEach")), [function () { + test.run(); + }], toConsumableArray(test.hooks("afterEach").reverse()), toConsumableArray(test.hooks("after").reverse()), [function () { + test.after(); + }, function () { + return test.finish(); + }]); + } + + var previousFailCount = config.storage && +config.storage.getItem("qunit-test-" + this.module.name + "-" + this.testName); + + // Prioritize previously failed tests, detected from storage + var prioritize = config.reorder && !!previousFailCount; + + this.previousFailure = !!previousFailCount; + + ProcessingQueue.add(runTest, prioritize, config.seed); + + // If the queue has already finished, we manually process the new test + if (ProcessingQueue.finished) { + ProcessingQueue.advance(); + } + }, + + + pushResult: function pushResult(resultInfo) { + if (this !== config.current) { + throw new Error("Assertion occurred after test had finished."); + } + + // Destructure of resultInfo = { result, actual, expected, message, negative } + var source, + details = { + module: this.module.name, + name: this.testName, + result: resultInfo.result, + message: resultInfo.message, + actual: resultInfo.actual, + testId: this.testId, + negative: resultInfo.negative || false, + runtime: now() - this.started, + todo: !!this.todo + }; + + if (hasOwn.call(resultInfo, "expected")) { + details.expected = resultInfo.expected; + } + + if (!resultInfo.result) { + source = resultInfo.source || sourceFromStacktrace(); + + if (source) { + details.source = source; + } + } + + this.logAssertion(details); + + this.assertions.push({ + result: !!resultInfo.result, + message: resultInfo.message + }); + }, + + pushFailure: function pushFailure(message, source, actual) { + if (!(this instanceof Test)) { + throw new Error("pushFailure() assertion outside test context, was " + sourceFromStacktrace(2)); + } + + this.pushResult({ + result: false, + message: message || "error", + actual: actual || null, + source: source + }); + }, + + /** + * Log assertion details using both the old QUnit.log interface and + * QUnit.on( "assertion" ) interface. + * + * @private + */ + logAssertion: function logAssertion(details) { + runLoggingCallbacks("log", details); + + var assertion = { + passed: details.result, + actual: details.actual, + expected: details.expected, + message: details.message, + stack: details.source, + todo: details.todo + }; + this.testReport.pushAssertion(assertion); + emit("assertion", assertion); + }, + + + resolvePromise: function resolvePromise(promise, phase) { + var then, + resume, + message, + test = this; + if (promise != null) { + then = promise.then; + if (objectType(then) === "function") { + resume = internalStop(test); + if (config.notrycatch) { + then.call(promise, function () { + resume(); + }); + } else { + then.call(promise, function () { + resume(); + }, function (error) { + message = "Promise rejected " + (!phase ? "during" : phase.replace(/Each$/, "")) + " \"" + test.testName + "\": " + (error && error.message || error); + test.pushFailure(message, extractStacktrace(error, 0)); + + // Else next test will carry the responsibility + saveGlobal(); + + // Unblock + internalRecover(test); + }); + } + } + } + }, + + valid: function valid() { + var filter = config.filter, + regexFilter = /^(!?)\/([\w\W]*)\/(i?$)/.exec(filter), + module = config.module && config.module.toLowerCase(), + fullName = this.module.name + ": " + this.testName; + + function moduleChainNameMatch(testModule) { + var testModuleName = testModule.name ? testModule.name.toLowerCase() : null; + if (testModuleName === module) { + return true; + } else if (testModule.parentModule) { + return moduleChainNameMatch(testModule.parentModule); + } else { + return false; + } + } + + function moduleChainIdMatch(testModule) { + return inArray(testModule.moduleId, config.moduleId) || testModule.parentModule && moduleChainIdMatch(testModule.parentModule); + } + + // Internally-generated tests are always valid + if (this.callback && this.callback.validTest) { + return true; + } + + if (config.moduleId && config.moduleId.length > 0 && !moduleChainIdMatch(this.module)) { + + return false; + } + + if (config.testId && config.testId.length > 0 && !inArray(this.testId, config.testId)) { + + return false; + } + + if (module && !moduleChainNameMatch(this.module)) { + return false; + } + + if (!filter) { + return true; + } + + return regexFilter ? this.regexFilter(!!regexFilter[1], regexFilter[2], regexFilter[3], fullName) : this.stringFilter(filter, fullName); + }, + + regexFilter: function regexFilter(exclude, pattern, flags, fullName) { + var regex = new RegExp(pattern, flags); + var match = regex.test(fullName); + + return match !== exclude; + }, + + stringFilter: function stringFilter(filter, fullName) { + filter = filter.toLowerCase(); + fullName = fullName.toLowerCase(); + + var include = filter.charAt(0) !== "!"; + if (!include) { + filter = filter.slice(1); + } + + // If the filter matches, we need to honour include + if (fullName.indexOf(filter) !== -1) { + return include; + } + + // Otherwise, do the opposite + return !include; + } + }; + + function pushFailure() { + if (!config.current) { + throw new Error("pushFailure() assertion outside test context, in " + sourceFromStacktrace(2)); + } + + // Gets current test obj + var currentTest = config.current; + + return currentTest.pushFailure.apply(currentTest, arguments); + } + + function saveGlobal() { + config.pollution = []; + + if (config.noglobals) { + for (var key in global$1) { + if (hasOwn.call(global$1, key)) { + + // In Opera sometimes DOM element ids show up here, ignore them + if (/^qunit-test-output/.test(key)) { + continue; + } + config.pollution.push(key); + } + } + } + } + + function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff(config.pollution, old); + if (newGlobals.length > 0) { + pushFailure("Introduced global variable(s): " + newGlobals.join(", ")); + } + + deletedGlobals = diff(old, config.pollution); + if (deletedGlobals.length > 0) { + pushFailure("Deleted global variable(s): " + deletedGlobals.join(", ")); + } + } + + // Will be exposed as QUnit.test + function test(testName, callback) { + if (focused$1) { + return; + } + + var newTest = new Test({ + testName: testName, + callback: callback + }); + + newTest.queue(); + } + + function todo(testName, callback) { + if (focused$1) { + return; + } + + var newTest = new Test({ + testName: testName, + callback: callback, + todo: true + }); + + newTest.queue(); + } + + // Will be exposed as QUnit.skip + function skip(testName) { + if (focused$1) { + return; + } + + var test = new Test({ + testName: testName, + skip: true + }); + + test.queue(); + } + + // Will be exposed as QUnit.only + function only(testName, callback) { + if (focused$1) { + return; + } + + config.queue.length = 0; + focused$1 = true; + + var newTest = new Test({ + testName: testName, + callback: callback + }); + + newTest.queue(); + } + + // Put a hold on processing and return a function that will release it. + function internalStop(test) { + var released = false; + test.semaphore += 1; + config.blocking = true; + + // Set a recovery timeout, if so configured. + if (defined.setTimeout) { + var timeoutDuration = void 0; + + if (typeof test.timeout === "number") { + timeoutDuration = test.timeout; + } else if (typeof config.testTimeout === "number") { + timeoutDuration = config.testTimeout; + } + + if (typeof timeoutDuration === "number" && timeoutDuration > 0) { + clearTimeout(config.timeout); + config.timeout = setTimeout$1(function () { + pushFailure("Test took longer than " + timeoutDuration + "ms; test timed out.", sourceFromStacktrace(2)); + released = true; + internalRecover(test); + }, timeoutDuration); + } + } + + return function resume() { + if (released) { + return; + } + + released = true; + test.semaphore -= 1; + internalStart(test); + }; + } + + // Forcefully release all processing holds. + function internalRecover(test) { + test.semaphore = 0; + internalStart(test); + } + + // Release a processing hold, scheduling a resumption attempt if no holds remain. + function internalStart(test) { + + // If semaphore is non-numeric, throw error + if (isNaN(test.semaphore)) { + test.semaphore = 0; + + pushFailure("Invalid value on test.semaphore", sourceFromStacktrace(2)); + return; + } + + // Don't start until equal number of stop-calls + if (test.semaphore > 0) { + return; + } + + // Throw an Error if start is called more often than stop + if (test.semaphore < 0) { + test.semaphore = 0; + + pushFailure("Tried to restart test while already started (test's semaphore was 0 already)", sourceFromStacktrace(2)); + return; + } + + // Add a slight delay to allow more assertions etc. + if (defined.setTimeout) { + if (config.timeout) { + clearTimeout(config.timeout); + } + config.timeout = setTimeout$1(function () { + if (test.semaphore > 0) { + return; + } + + if (config.timeout) { + clearTimeout(config.timeout); + } + + begin(); + }); + } else { + begin(); + } + } + + function collectTests(module) { + var tests = [].concat(module.tests); + var modules = [].concat(toConsumableArray(module.childModules)); + + // Do a breadth-first traversal of the child modules + while (modules.length) { + var nextModule = modules.shift(); + tests.push.apply(tests, nextModule.tests); + modules.push.apply(modules, toConsumableArray(nextModule.childModules)); + } + + return tests; + } + + function numberOfTests(module) { + return collectTests(module).length; + } + + function numberOfUnskippedTests(module) { + return collectTests(module).filter(function (test) { + return !test.skip; + }).length; + } + + function notifyTestsRan(module, skipped) { + module.testsRun++; + if (!skipped) { + module.unskippedTestsRun++; + } + while (module = module.parentModule) { + module.testsRun++; + if (!skipped) { + module.unskippedTestsRun++; + } + } + } + + var Assert = function () { + function Assert(testContext) { + classCallCheck(this, Assert); + + this.test = testContext; + } + + // Assert helpers + + createClass(Assert, [{ + key: "timeout", + value: function timeout(duration) { + if (typeof duration !== "number") { + throw new Error("You must pass a number as the duration to assert.timeout"); + } + + this.test.timeout = duration; + } + + // Documents a "step", which is a string value, in a test as a passing assertion + + }, { + key: "step", + value: function step(message) { + var assertionMessage = message; + var result = !!message; + + this.test.steps.push(message); + + if (objectType(message) === "undefined" || message === "") { + assertionMessage = "You must provide a message to assert.step"; + } else if (objectType(message) !== "string") { + assertionMessage = "You must provide a string value to assert.step"; + result = false; + } + + this.pushResult({ + result: result, + message: assertionMessage + }); + } + + // Verifies the steps in a test match a given array of string values + + }, { + key: "verifySteps", + value: function verifySteps(steps, message) { + + // Since the steps array is just string values, we can clone with slice + var actualStepsClone = this.test.steps.slice(); + this.deepEqual(actualStepsClone, steps, message); + this.test.steps.length = 0; + } + + // Specify the number of expected assertions to guarantee that failed test + // (no assertions are run at all) don't slip through. + + }, { + key: "expect", + value: function expect(asserts) { + if (arguments.length === 1) { + this.test.expected = asserts; + } else { + return this.test.expected; + } + } + + // Put a hold on processing and return a function that will release it a maximum of once. + + }, { + key: "async", + value: function async(count) { + var test$$1 = this.test; + + var popped = false, + acceptCallCount = count; + + if (typeof acceptCallCount === "undefined") { + acceptCallCount = 1; + } + + var resume = internalStop(test$$1); + + return function done() { + if (config.current !== test$$1) { + throw Error("assert.async callback called after test finished."); + } + + if (popped) { + test$$1.pushFailure("Too many calls to the `assert.async` callback", sourceFromStacktrace(2)); + return; + } + + acceptCallCount -= 1; + if (acceptCallCount > 0) { + return; + } + + popped = true; + resume(); + }; + } + + // Exports test.push() to the user API + // Alias of pushResult. + + }, { + key: "push", + value: function push(result, actual, expected, message, negative) { + Logger.warn("assert.push is deprecated and will be removed in QUnit 3.0." + " Please use assert.pushResult instead (https://api.qunitjs.com/assert/pushResult)."); + + var currentAssert = this instanceof Assert ? this : config.current.assert; + return currentAssert.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message, + negative: negative + }); + } + }, { + key: "pushResult", + value: function pushResult(resultInfo) { + + // Destructure of resultInfo = { result, actual, expected, message, negative } + var assert = this; + var currentTest = assert instanceof Assert && assert.test || config.current; + + // Backwards compatibility fix. + // Allows the direct use of global exported assertions and QUnit.assert.* + // Although, it's use is not recommended as it can leak assertions + // to other tests from async tests, because we only get a reference to the current test, + // not exactly the test where assertion were intended to be called. + if (!currentTest) { + throw new Error("assertion outside test context, in " + sourceFromStacktrace(2)); + } + + if (!(assert instanceof Assert)) { + assert = currentTest.assert; + } + + return assert.test.pushResult(resultInfo); + } + }, { + key: "ok", + value: function ok(result, message) { + if (!message) { + message = result ? "okay" : "failed, expected argument to be truthy, was: " + dump.parse(result); + } + + this.pushResult({ + result: !!result, + actual: result, + expected: true, + message: message + }); + } + }, { + key: "notOk", + value: function notOk(result, message) { + if (!message) { + message = !result ? "okay" : "failed, expected argument to be falsy, was: " + dump.parse(result); + } + + this.pushResult({ + result: !result, + actual: result, + expected: false, + message: message + }); + } + }, { + key: "equal", + value: function equal(actual, expected, message) { + + // eslint-disable-next-line eqeqeq + var result = expected == actual; + + this.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notEqual", + value: function notEqual(actual, expected, message) { + + // eslint-disable-next-line eqeqeq + var result = expected != actual; + + this.pushResult({ + result: result, + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "propEqual", + value: function propEqual(actual, expected, message) { + actual = objectValues(actual); + expected = objectValues(expected); + + this.pushResult({ + result: equiv(actual, expected), + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notPropEqual", + value: function notPropEqual(actual, expected, message) { + actual = objectValues(actual); + expected = objectValues(expected); + + this.pushResult({ + result: !equiv(actual, expected), + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "deepEqual", + value: function deepEqual(actual, expected, message) { + this.pushResult({ + result: equiv(actual, expected), + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notDeepEqual", + value: function notDeepEqual(actual, expected, message) { + this.pushResult({ + result: !equiv(actual, expected), + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "strictEqual", + value: function strictEqual(actual, expected, message) { + this.pushResult({ + result: expected === actual, + actual: actual, + expected: expected, + message: message + }); + } + }, { + key: "notStrictEqual", + value: function notStrictEqual(actual, expected, message) { + this.pushResult({ + result: expected !== actual, + actual: actual, + expected: expected, + message: message, + negative: true + }); + } + }, { + key: "throws", + value: function throws(block, expected, message) { + var actual = void 0, + result = false; + + var currentTest = this instanceof Assert && this.test || config.current; + + // 'expected' is optional unless doing string comparison + if (objectType(expected) === "string") { + if (message == null) { + message = expected; + expected = null; + } else { + throw new Error("throws/raises does not accept a string value for the expected argument.\n" + "Use a non-string object value (e.g. regExp) instead if it's necessary."); + } + } + + currentTest.ignoreGlobalErrors = true; + try { + block.call(currentTest.testEnvironment); + } catch (e) { + actual = e; + } + currentTest.ignoreGlobalErrors = false; + + if (actual) { + var expectedType = objectType(expected); + + // We don't want to validate thrown error + if (!expected) { + result = true; + + // Expected is a regexp + } else if (expectedType === "regexp") { + result = expected.test(errorString(actual)); + + // Log the string form of the regexp + expected = String(expected); + + // Expected is a constructor, maybe an Error constructor + } else if (expectedType === "function" && actual instanceof expected) { + result = true; + + // Expected is an Error object + } else if (expectedType === "object") { + result = actual instanceof expected.constructor && actual.name === expected.name && actual.message === expected.message; + + // Log the string form of the Error object + expected = errorString(expected); + + // Expected is a validation function which returns true if validation passed + } else if (expectedType === "function" && expected.call({}, actual) === true) { + expected = null; + result = true; + } + } + + currentTest.assert.pushResult({ + result: result, + + // undefined if it didn't throw + actual: actual && errorString(actual), + expected: expected, + message: message + }); + } + }, { + key: "rejects", + value: function rejects(promise, expected, message) { + var result = false; + + var currentTest = this instanceof Assert && this.test || config.current; + + // 'expected' is optional unless doing string comparison + if (objectType(expected) === "string") { + if (message === undefined) { + message = expected; + expected = undefined; + } else { + message = "assert.rejects does not accept a string value for the expected " + "argument.\nUse a non-string object value (e.g. validator function) instead " + "if necessary."; + + currentTest.assert.pushResult({ + result: false, + message: message + }); + + return; + } + } + + var then = promise && promise.then; + if (objectType(then) !== "function") { + var _message = "The value provided to `assert.rejects` in " + "\"" + currentTest.testName + "\" was not a promise."; + + currentTest.assert.pushResult({ + result: false, + message: _message, + actual: promise + }); + + return; + } + + var done = this.async(); + + return then.call(promise, function handleFulfillment() { + var message = "The promise returned by the `assert.rejects` callback in " + "\"" + currentTest.testName + "\" did not reject."; + + currentTest.assert.pushResult({ + result: false, + message: message, + actual: promise + }); + + done(); + }, function handleRejection(actual) { + var expectedType = objectType(expected); + + // We don't want to validate + if (expected === undefined) { + result = true; + + // Expected is a regexp + } else if (expectedType === "regexp") { + result = expected.test(errorString(actual)); + + // Log the string form of the regexp + expected = String(expected); + + // Expected is a constructor, maybe an Error constructor + } else if (expectedType === "function" && actual instanceof expected) { + result = true; + + // Expected is an Error object + } else if (expectedType === "object") { + result = actual instanceof expected.constructor && actual.name === expected.name && actual.message === expected.message; + + // Log the string form of the Error object + expected = errorString(expected); + + // Expected is a validation function which returns true if validation passed + } else { + if (expectedType === "function") { + result = expected.call({}, actual) === true; + expected = null; + + // Expected is some other invalid type + } else { + result = false; + message = "invalid expected value provided to `assert.rejects` " + "callback in \"" + currentTest.testName + "\": " + expectedType + "."; + } + } + + currentTest.assert.pushResult({ + result: result, + + // leave rejection value of undefined as-is + actual: actual && errorString(actual), + expected: expected, + message: message + }); + + done(); + }); + } + }]); + return Assert; + }(); + + // Provide an alternative to assert.throws(), for environments that consider throws a reserved word + // Known to us are: Closure Compiler, Narwhal + // eslint-disable-next-line dot-notation + + + Assert.prototype.raises = Assert.prototype["throws"]; + + /** + * Converts an error into a simple string for comparisons. + * + * @param {Error|Object} error + * @return {String} + */ + function errorString(error) { + var resultErrorString = error.toString(); + + // If the error wasn't a subclass of Error but something like + // an object literal with name and message properties... + if (resultErrorString.substring(0, 7) === "[object") { + var name = error.name ? error.name.toString() : "Error"; + var message = error.message ? error.message.toString() : ""; + + if (name && message) { + return name + ": " + message; + } else if (name) { + return name; + } else if (message) { + return message; + } else { + return "Error"; + } + } else { + return resultErrorString; + } + } + + /* global module, exports, define */ + function exportQUnit(QUnit) { + + if (defined.document) { + + // QUnit may be defined when it is preconfigured but then only QUnit and QUnit.config may be defined. + if (window$1.QUnit && window$1.QUnit.version) { + throw new Error("QUnit has already been defined."); + } + + window$1.QUnit = QUnit; + } + + // For nodejs + if (typeof module !== "undefined" && module && module.exports) { + module.exports = QUnit; + + // For consistency with CommonJS environments' exports + module.exports.QUnit = QUnit; + } + + // For CommonJS with exports, but without module.exports, like Rhino + if (typeof exports !== "undefined" && exports) { + exports.QUnit = QUnit; + } + + if (typeof define === "function" && define.amd) { + define(function () { + return QUnit; + }); + QUnit.config.autostart = false; + } + + // For Web/Service Workers + if (self$1 && self$1.WorkerGlobalScope && self$1 instanceof self$1.WorkerGlobalScope) { + self$1.QUnit = QUnit; + } + } + + // Handle an unhandled exception. By convention, returns true if further + // error handling should be suppressed and false otherwise. + // In this case, we will only suppress further error handling if the + // "ignoreGlobalErrors" configuration option is enabled. + function onError(error) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (config.current) { + if (config.current.ignoreGlobalErrors) { + return true; + } + pushFailure.apply(undefined, [error.message, error.stacktrace || error.fileName + ":" + error.lineNumber].concat(args)); + } else { + test("global failure", extend(function () { + pushFailure.apply(undefined, [error.message, error.stacktrace || error.fileName + ":" + error.lineNumber].concat(args)); + }, { validTest: true })); + } + + return false; + } + + // Handle an unhandled rejection + function onUnhandledRejection(reason) { + var resultInfo = { + result: false, + message: reason.message || "error", + actual: reason, + source: reason.stack || sourceFromStacktrace(3) + }; + + var currentTest = config.current; + if (currentTest) { + currentTest.assert.pushResult(resultInfo); + } else { + test("global failure", extend(function (assert) { + assert.pushResult(resultInfo); + }, { validTest: true })); + } + } + + var QUnit = {}; + var globalSuite = new SuiteReport(); + + // The initial "currentModule" represents the global (or top-level) module that + // is not explicitly defined by the user, therefore we add the "globalSuite" to + // it since each module has a suiteReport associated with it. + config.currentModule.suiteReport = globalSuite; + + var globalStartCalled = false; + var runStarted = false; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = !(defined.document && window$1.location.protocol !== "file:"); + + // Expose the current QUnit version + QUnit.version = "2.9.2"; + + extend(QUnit, { + on: on, + + module: module$1, + + test: test, + + todo: todo, + + skip: skip, + + only: only, + + start: function start(count) { + var globalStartAlreadyCalled = globalStartCalled; + + if (!config.current) { + globalStartCalled = true; + + if (runStarted) { + throw new Error("Called start() while test already started running"); + } else if (globalStartAlreadyCalled || count > 1) { + throw new Error("Called start() outside of a test context too many times"); + } else if (config.autostart) { + throw new Error("Called start() outside of a test context when " + "QUnit.config.autostart was true"); + } else if (!config.pageLoaded) { + + // The page isn't completely loaded yet, so we set autostart and then + // load if we're in Node or wait for the browser's load event. + config.autostart = true; + + // Starts from Node even if .load was not previously called. We still return + // early otherwise we'll wind up "beginning" twice. + if (!defined.document) { + QUnit.load(); + } + + return; + } + } else { + throw new Error("QUnit.start cannot be called inside a test context."); + } + + scheduleBegin(); + }, + + config: config, + + is: is, + + objectType: objectType, + + extend: extend, + + load: function load() { + config.pageLoaded = true; + + // Initialize the configuration options + extend(config, { + stats: { all: 0, bad: 0 }, + started: 0, + updateRate: 1000, + autostart: true, + filter: "" + }, true); + + if (!runStarted) { + config.blocking = false; + + if (config.autostart) { + scheduleBegin(); + } + } + }, + + stack: function stack(offset) { + offset = (offset || 0) + 2; + return sourceFromStacktrace(offset); + }, + + onError: onError, + + onUnhandledRejection: onUnhandledRejection + }); + + QUnit.pushFailure = pushFailure; + QUnit.assert = Assert.prototype; + QUnit.equiv = equiv; + QUnit.dump = dump; + + registerLoggingCallbacks(QUnit); + + function scheduleBegin() { + + runStarted = true; + + // Add a slight delay to allow definition of more modules and tests. + if (defined.setTimeout) { + setTimeout$1(function () { + begin(); + }); + } else { + begin(); + } + } + + function unblockAndAdvanceQueue() { + config.blocking = false; + ProcessingQueue.advance(); + } + + function begin() { + var i, + l, + modulesLog = []; + + // If the test run hasn't officially begun yet + if (!config.started) { + + // Record the time of the test run's beginning + config.started = now(); + + // Delete the loose unnamed module if unused. + if (config.modules[0].name === "" && config.modules[0].tests.length === 0) { + config.modules.shift(); + } + + // Avoid unnecessary information by not logging modules' test environments + for (i = 0, l = config.modules.length; i < l; i++) { + modulesLog.push({ + name: config.modules[i].name, + tests: config.modules[i].tests + }); + } + + // The test run is officially beginning now + emit("runStart", globalSuite.start(true)); + runLoggingCallbacks("begin", { + totalTests: Test.count, + modules: modulesLog + }).then(unblockAndAdvanceQueue); + } else { + unblockAndAdvanceQueue(); + } + } + + exportQUnit(QUnit); + + (function () { + + if (typeof window$1 === "undefined" || typeof document$1 === "undefined") { + return; + } + + var config = QUnit.config, + hasOwn = Object.prototype.hasOwnProperty; + + // Stores fixture HTML for resetting later + function storeFixture() { + + // Avoid overwriting user-defined values + if (hasOwn.call(config, "fixture")) { + return; + } + + var fixture = document$1.getElementById("qunit-fixture"); + if (fixture) { + config.fixture = fixture.cloneNode(true); + } + } + + QUnit.begin(storeFixture); + + // Resets the fixture DOM element if available. + function resetFixture() { + if (config.fixture == null) { + return; + } + + var fixture = document$1.getElementById("qunit-fixture"); + var resetFixtureType = _typeof(config.fixture); + if (resetFixtureType === "string") { + + // support user defined values for `config.fixture` + var newFixture = document$1.createElement("div"); + newFixture.setAttribute("id", "qunit-fixture"); + newFixture.innerHTML = config.fixture; + fixture.parentNode.replaceChild(newFixture, fixture); + } else { + var clonedFixture = config.fixture.cloneNode(true); + fixture.parentNode.replaceChild(clonedFixture, fixture); + } + } + + QUnit.testStart(resetFixture); + })(); + + (function () { + + // Only interact with URLs via window.location + var location = typeof window$1 !== "undefined" && window$1.location; + if (!location) { + return; + } + + var urlParams = getUrlParams(); + + QUnit.urlParams = urlParams; + + // Match module/test by inclusion in an array + QUnit.config.moduleId = [].concat(urlParams.moduleId || []); + QUnit.config.testId = [].concat(urlParams.testId || []); + + // Exact case-insensitive match of the module name + QUnit.config.module = urlParams.module; + + // Regular expression or case-insenstive substring match against "moduleName: testName" + QUnit.config.filter = urlParams.filter; + + // Test order randomization + if (urlParams.seed === true) { + + // Generate a random seed if the option is specified without a value + QUnit.config.seed = Math.random().toString(36).slice(2); + } else if (urlParams.seed) { + QUnit.config.seed = urlParams.seed; + } + + // Add URL-parameter-mapped config values with UI form rendering data + QUnit.config.urlConfig.push({ + id: "hidepassed", + label: "Hide passed tests", + tooltip: "Only show tests and assertions that fail. Stored as query-strings." + }, { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the " + "global object (`window` in Browsers). Stored as query-strings." + }, { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " + "exceptions in IE reasonable. Stored as query-strings." + }); + + QUnit.begin(function () { + var i, + option, + urlConfig = QUnit.config.urlConfig; + + for (i = 0; i < urlConfig.length; i++) { + + // Options can be either strings or objects with nonempty "id" properties + option = QUnit.config.urlConfig[i]; + if (typeof option !== "string") { + option = option.id; + } + + if (QUnit.config[option] === undefined) { + QUnit.config[option] = urlParams[option]; + } + } + }); + + function getUrlParams() { + var i, param, name, value; + var urlParams = Object.create(null); + var params = location.search.slice(1).split("&"); + var length = params.length; + + for (i = 0; i < length; i++) { + if (params[i]) { + param = params[i].split("="); + name = decodeQueryParam(param[0]); + + // Allow just a key to turn on a flag, e.g., test.html?noglobals + value = param.length === 1 || decodeQueryParam(param.slice(1).join("=")); + if (name in urlParams) { + urlParams[name] = [].concat(urlParams[name], value); + } else { + urlParams[name] = value; + } + } + } + + return urlParams; + } + + function decodeQueryParam(param) { + return decodeURIComponent(param.replace(/\+/g, "%20")); + } + })(); + + var stats = { + passedTests: 0, + failedTests: 0, + skippedTests: 0, + todoTests: 0 + }; + + // Escape text for attribute or text content. + function escapeText(s) { + if (!s) { + return ""; + } + s = s + ""; + + // Both single quotes and double quotes (for attributes) + return s.replace(/['"<>&]/g, function (s) { + switch (s) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); + } + + (function () { + + // Don't load the HTML Reporter on non-browser environments + if (typeof window$1 === "undefined" || !window$1.document) { + return; + } + + var config = QUnit.config, + hiddenTests = [], + document = window$1.document, + collapseNext = false, + hasOwn = Object.prototype.hasOwnProperty, + unfilteredUrl = setUrl({ filter: undefined, module: undefined, + moduleId: undefined, testId: undefined }), + modulesList = []; + + function addEvent(elem, type, fn) { + elem.addEventListener(type, fn, false); + } + + function removeEvent(elem, type, fn) { + elem.removeEventListener(type, fn, false); + } + + function addEvents(elems, type, fn) { + var i = elems.length; + while (i--) { + addEvent(elems[i], type, fn); + } + } + + function hasClass(elem, name) { + return (" " + elem.className + " ").indexOf(" " + name + " ") >= 0; + } + + function addClass(elem, name) { + if (!hasClass(elem, name)) { + elem.className += (elem.className ? " " : "") + name; + } + } + + function toggleClass(elem, name, force) { + if (force || typeof force === "undefined" && !hasClass(elem, name)) { + addClass(elem, name); + } else { + removeClass(elem, name); + } + } + + function removeClass(elem, name) { + var set = " " + elem.className + " "; + + // Class name may appear multiple times + while (set.indexOf(" " + name + " ") >= 0) { + set = set.replace(" " + name + " ", " "); + } + + // Trim for prettiness + elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, ""); + } + + function id(name) { + return document.getElementById && document.getElementById(name); + } + + function abortTests() { + var abortButton = id("qunit-abort-tests-button"); + if (abortButton) { + abortButton.disabled = true; + abortButton.innerHTML = "Aborting..."; + } + QUnit.config.queue.length = 0; + return false; + } + + function interceptNavigation(ev) { + applyUrlParams(); + + if (ev && ev.preventDefault) { + ev.preventDefault(); + } + + return false; + } + + function getUrlConfigHtml() { + var i, + j, + val, + escaped, + escapedTooltip, + selection = false, + urlConfig = config.urlConfig, + urlConfigHtml = ""; + + for (i = 0; i < urlConfig.length; i++) { + + // Options can be either strings or objects with nonempty "id" properties + val = config.urlConfig[i]; + if (typeof val === "string") { + val = { + id: val, + label: val + }; + } + + escaped = escapeText(val.id); + escapedTooltip = escapeText(val.tooltip); + + if (!val.value || typeof val.value === "string") { + urlConfigHtml += ""; + } else { + urlConfigHtml += ""; + } + } + + return urlConfigHtml; + } + + // Handle "click" events on toolbar checkboxes and "change" for select menus. + // Updates the URL with the new state of `config.urlConfig` values. + function toolbarChanged() { + var updatedUrl, + value, + tests, + field = this, + params = {}; + + // Detect if field is a select menu or a checkbox + if ("selectedIndex" in field) { + value = field.options[field.selectedIndex].value || undefined; + } else { + value = field.checked ? field.defaultValue || true : undefined; + } + + params[field.name] = value; + updatedUrl = setUrl(params); + + // Check if we can apply the change without a page refresh + if ("hidepassed" === field.name && "replaceState" in window$1.history) { + QUnit.urlParams[field.name] = value; + config[field.name] = value || false; + tests = id("qunit-tests"); + if (tests) { + var length = tests.children.length; + var children = tests.children; + + if (field.checked) { + for (var i = 0; i < length; i++) { + var test = children[i]; + + if (test && test.className.indexOf("pass") > -1) { + hiddenTests.push(test); + } + } + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = hiddenTests[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var hiddenTest = _step.value; + + tests.removeChild(hiddenTest); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } else { + while ((test = hiddenTests.pop()) != null) { + tests.appendChild(test); + } + } + } + window$1.history.replaceState(null, "", updatedUrl); + } else { + window$1.location = updatedUrl; + } + } + + function setUrl(params) { + var key, + arrValue, + i, + querystring = "?", + location = window$1.location; + + params = QUnit.extend(QUnit.extend({}, QUnit.urlParams), params); + + for (key in params) { + + // Skip inherited or undefined properties + if (hasOwn.call(params, key) && params[key] !== undefined) { + + // Output a parameter for each value of this key + // (but usually just one) + arrValue = [].concat(params[key]); + for (i = 0; i < arrValue.length; i++) { + querystring += encodeURIComponent(key); + if (arrValue[i] !== true) { + querystring += "=" + encodeURIComponent(arrValue[i]); + } + querystring += "&"; + } + } + } + return location.protocol + "//" + location.host + location.pathname + querystring.slice(0, -1); + } + + function applyUrlParams() { + var i, + selectedModules = [], + modulesList = id("qunit-modulefilter-dropdown-list").getElementsByTagName("input"), + filter = id("qunit-filter-input").value; + + for (i = 0; i < modulesList.length; i++) { + if (modulesList[i].checked) { + selectedModules.push(modulesList[i].value); + } + } + + window$1.location = setUrl({ + filter: filter === "" ? undefined : filter, + moduleId: selectedModules.length === 0 ? undefined : selectedModules, + + // Remove module and testId filter + module: undefined, + testId: undefined + }); + } + + function toolbarUrlConfigContainer() { + var urlConfigContainer = document.createElement("span"); + + urlConfigContainer.innerHTML = getUrlConfigHtml(); + addClass(urlConfigContainer, "qunit-url-config"); + + addEvents(urlConfigContainer.getElementsByTagName("input"), "change", toolbarChanged); + addEvents(urlConfigContainer.getElementsByTagName("select"), "change", toolbarChanged); + + return urlConfigContainer; + } + + function abortTestsButton() { + var button = document.createElement("button"); + button.id = "qunit-abort-tests-button"; + button.innerHTML = "Abort"; + addEvent(button, "click", abortTests); + return button; + } + + function toolbarLooseFilter() { + var filter = document.createElement("form"), + label = document.createElement("label"), + input = document.createElement("input"), + button = document.createElement("button"); + + addClass(filter, "qunit-filter"); + + label.innerHTML = "Filter: "; + + input.type = "text"; + input.value = config.filter || ""; + input.name = "filter"; + input.id = "qunit-filter-input"; + + button.innerHTML = "Go"; + + label.appendChild(input); + + filter.appendChild(label); + filter.appendChild(document.createTextNode(" ")); + filter.appendChild(button); + addEvent(filter, "submit", interceptNavigation); + + return filter; + } + + function moduleListHtml() { + var i, + checked, + html = ""; + + for (i = 0; i < config.modules.length; i++) { + if (config.modules[i].name !== "") { + checked = config.moduleId.indexOf(config.modules[i].moduleId) > -1; + html += "
  • "; + } + } + + return html; + } + + function toolbarModuleFilter() { + var commit, + reset, + moduleFilter = document.createElement("form"), + label = document.createElement("label"), + moduleSearch = document.createElement("input"), + dropDown = document.createElement("div"), + actions = document.createElement("span"), + applyButton = document.createElement("button"), + resetButton = document.createElement("button"), + allModulesLabel = document.createElement("label"), + allCheckbox = document.createElement("input"), + dropDownList = document.createElement("ul"), + dirty = false; + + moduleSearch.id = "qunit-modulefilter-search"; + moduleSearch.autocomplete = "off"; + addEvent(moduleSearch, "input", searchInput); + addEvent(moduleSearch, "input", searchFocus); + addEvent(moduleSearch, "focus", searchFocus); + addEvent(moduleSearch, "click", searchFocus); + + label.id = "qunit-modulefilter-search-container"; + label.innerHTML = "Module: "; + label.appendChild(moduleSearch); + + applyButton.textContent = "Apply"; + applyButton.style.display = "none"; + + resetButton.textContent = "Reset"; + resetButton.type = "reset"; + resetButton.style.display = "none"; + + allCheckbox.type = "checkbox"; + allCheckbox.checked = config.moduleId.length === 0; + + allModulesLabel.className = "clickable"; + if (config.moduleId.length) { + allModulesLabel.className = "checked"; + } + allModulesLabel.appendChild(allCheckbox); + allModulesLabel.appendChild(document.createTextNode("All modules")); + + actions.id = "qunit-modulefilter-actions"; + actions.appendChild(applyButton); + actions.appendChild(resetButton); + actions.appendChild(allModulesLabel); + commit = actions.firstChild; + reset = commit.nextSibling; + addEvent(commit, "click", applyUrlParams); + + dropDownList.id = "qunit-modulefilter-dropdown-list"; + dropDownList.innerHTML = moduleListHtml(); + + dropDown.id = "qunit-modulefilter-dropdown"; + dropDown.style.display = "none"; + dropDown.appendChild(actions); + dropDown.appendChild(dropDownList); + addEvent(dropDown, "change", selectionChange); + selectionChange(); + + moduleFilter.id = "qunit-modulefilter"; + moduleFilter.appendChild(label); + moduleFilter.appendChild(dropDown); + addEvent(moduleFilter, "submit", interceptNavigation); + addEvent(moduleFilter, "reset", function () { + + // Let the reset happen, then update styles + window$1.setTimeout(selectionChange); + }); + + // Enables show/hide for the dropdown + function searchFocus() { + if (dropDown.style.display !== "none") { + return; + } + + dropDown.style.display = "block"; + addEvent(document, "click", hideHandler); + addEvent(document, "keydown", hideHandler); + + // Hide on Escape keydown or outside-container click + function hideHandler(e) { + var inContainer = moduleFilter.contains(e.target); + + if (e.keyCode === 27 || !inContainer) { + if (e.keyCode === 27 && inContainer) { + moduleSearch.focus(); + } + dropDown.style.display = "none"; + removeEvent(document, "click", hideHandler); + removeEvent(document, "keydown", hideHandler); + moduleSearch.value = ""; + searchInput(); + } + } + } + + // Processes module search box input + function searchInput() { + var i, + item, + searchText = moduleSearch.value.toLowerCase(), + listItems = dropDownList.children; + + for (i = 0; i < listItems.length; i++) { + item = listItems[i]; + if (!searchText || item.textContent.toLowerCase().indexOf(searchText) > -1) { + item.style.display = ""; + } else { + item.style.display = "none"; + } + } + } + + // Processes selection changes + function selectionChange(evt) { + var i, + item, + checkbox = evt && evt.target || allCheckbox, + modulesList = dropDownList.getElementsByTagName("input"), + selectedNames = []; + + toggleClass(checkbox.parentNode, "checked", checkbox.checked); + + dirty = false; + if (checkbox.checked && checkbox !== allCheckbox) { + allCheckbox.checked = false; + removeClass(allCheckbox.parentNode, "checked"); + } + for (i = 0; i < modulesList.length; i++) { + item = modulesList[i]; + if (!evt) { + toggleClass(item.parentNode, "checked", item.checked); + } else if (checkbox === allCheckbox && checkbox.checked) { + item.checked = false; + removeClass(item.parentNode, "checked"); + } + dirty = dirty || item.checked !== item.defaultChecked; + if (item.checked) { + selectedNames.push(item.parentNode.textContent); + } + } + + commit.style.display = reset.style.display = dirty ? "" : "none"; + moduleSearch.placeholder = selectedNames.join(", ") || allCheckbox.parentNode.textContent; + moduleSearch.title = "Type to filter list. Current selection:\n" + (selectedNames.join("\n") || allCheckbox.parentNode.textContent); + } + + return moduleFilter; + } + + function appendToolbar() { + var toolbar = id("qunit-testrunner-toolbar"); + + if (toolbar) { + toolbar.appendChild(toolbarUrlConfigContainer()); + toolbar.appendChild(toolbarModuleFilter()); + toolbar.appendChild(toolbarLooseFilter()); + toolbar.appendChild(document.createElement("div")).className = "clearfix"; + } + } + + function appendHeader() { + var header = id("qunit-header"); + + if (header) { + header.innerHTML = "" + header.innerHTML + " "; + } + } + + function appendBanner() { + var banner = id("qunit-banner"); + + if (banner) { + banner.className = ""; + } + } + + function appendTestResults() { + var tests = id("qunit-tests"), + result = id("qunit-testresult"), + controls; + + if (result) { + result.parentNode.removeChild(result); + } + + if (tests) { + tests.innerHTML = ""; + result = document.createElement("p"); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore(result, tests); + result.innerHTML = "
    Running...
     
    " + "
    " + "
    "; + controls = id("qunit-testresult-controls"); + } + + if (controls) { + controls.appendChild(abortTestsButton()); + } + } + + function appendFilteredTest() { + var testId = QUnit.config.testId; + if (!testId || testId.length <= 0) { + return ""; + } + return "
    Rerunning selected tests: " + escapeText(testId.join(", ")) + " Run all tests
    "; + } + + function appendUserAgent() { + var userAgent = id("qunit-userAgent"); + + if (userAgent) { + userAgent.innerHTML = ""; + userAgent.appendChild(document.createTextNode("QUnit " + QUnit.version + "; " + navigator.userAgent)); + } + } + + function appendInterface() { + var qunit = id("qunit"); + + if (qunit) { + qunit.innerHTML = "

    " + escapeText(document.title) + "

    " + "

    " + "
    " + appendFilteredTest() + "

    " + "
      "; + } + + appendHeader(); + appendBanner(); + appendTestResults(); + appendUserAgent(); + appendToolbar(); + } + + function appendTest(name, testId, moduleName) { + var title, + rerunTrigger, + testBlock, + assertList, + tests = id("qunit-tests"); + + if (!tests) { + return; + } + + title = document.createElement("strong"); + title.innerHTML = getNameHtml(name, moduleName); + + rerunTrigger = document.createElement("a"); + rerunTrigger.innerHTML = "Rerun"; + rerunTrigger.href = setUrl({ testId: testId }); + + testBlock = document.createElement("li"); + testBlock.appendChild(title); + testBlock.appendChild(rerunTrigger); + testBlock.id = "qunit-test-output-" + testId; + + assertList = document.createElement("ol"); + assertList.className = "qunit-assert-list"; + + testBlock.appendChild(assertList); + + tests.appendChild(testBlock); + } + + // HTML Reporter initialization and load + QUnit.begin(function (details) { + var i, moduleObj; + + // Sort modules by name for the picker + for (i = 0; i < details.modules.length; i++) { + moduleObj = details.modules[i]; + if (moduleObj.name) { + modulesList.push(moduleObj.name); + } + } + modulesList.sort(function (a, b) { + return a.localeCompare(b); + }); + + // Initialize QUnit elements + appendInterface(); + }); + + QUnit.done(function (details) { + var banner = id("qunit-banner"), + tests = id("qunit-tests"), + abortButton = id("qunit-abort-tests-button"), + totalTests = stats.passedTests + stats.skippedTests + stats.todoTests + stats.failedTests, + html = [totalTests, " tests completed in ", details.runtime, " milliseconds, with ", stats.failedTests, " failed, ", stats.skippedTests, " skipped, and ", stats.todoTests, " todo.
      ", "", details.passed, " assertions of ", details.total, " passed, ", details.failed, " failed."].join(""), + test, + assertLi, + assertList; + + // Update remaing tests to aborted + if (abortButton && abortButton.disabled) { + html = "Tests aborted after " + details.runtime + " milliseconds."; + + for (var i = 0; i < tests.children.length; i++) { + test = tests.children[i]; + if (test.className === "" || test.className === "running") { + test.className = "aborted"; + assertList = test.getElementsByTagName("ol")[0]; + assertLi = document.createElement("li"); + assertLi.className = "fail"; + assertLi.innerHTML = "Test aborted."; + assertList.appendChild(assertLi); + } + } + } + + if (banner && (!abortButton || abortButton.disabled === false)) { + banner.className = stats.failedTests ? "qunit-fail" : "qunit-pass"; + } + + if (abortButton) { + abortButton.parentNode.removeChild(abortButton); + } + + if (tests) { + id("qunit-testresult-display").innerHTML = html; + } + + if (config.altertitle && document.title) { + + // Show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8 + // charset + document.title = [stats.failedTests ? "\u2716" : "\u2714", document.title.replace(/^[\u2714\u2716] /i, "")].join(" "); + } + + // Scroll back to top to show results + if (config.scrolltop && window$1.scrollTo) { + window$1.scrollTo(0, 0); + } + }); + + function getNameHtml(name, module) { + var nameHtml = ""; + + if (module) { + nameHtml = "" + escapeText(module) + ": "; + } + + nameHtml += "" + escapeText(name) + ""; + + return nameHtml; + } + + QUnit.testStart(function (details) { + var running, bad; + + appendTest(details.name, details.testId, details.module); + + running = id("qunit-testresult-display"); + + if (running) { + addClass(running, "running"); + + bad = QUnit.config.reorder && details.previousFailure; + + running.innerHTML = [bad ? "Rerunning previously failed test:
      " : "Running:
      ", getNameHtml(details.name, details.module)].join(""); + } + }); + + function stripHtml(string) { + + // Strip tags, html entity and whitespaces + return string.replace(/<\/?[^>]+(>|$)/g, "").replace(/"/g, "").replace(/\s+/g, ""); + } + + QUnit.log(function (details) { + var assertList, + assertLi, + message, + expected, + actual, + diff, + showDiff = false, + testItem = id("qunit-test-output-" + details.testId); + + if (!testItem) { + return; + } + + message = escapeText(details.message) || (details.result ? "okay" : "failed"); + message = "" + message + ""; + message += "@ " + details.runtime + " ms"; + + // The pushFailure doesn't provide details.expected + // when it calls, it's implicit to also not show expected and diff stuff + // Also, we need to check details.expected existence, as it can exist and be undefined + if (!details.result && hasOwn.call(details, "expected")) { + if (details.negative) { + expected = "NOT " + QUnit.dump.parse(details.expected); + } else { + expected = QUnit.dump.parse(details.expected); + } + + actual = QUnit.dump.parse(details.actual); + message += ""; + + if (actual !== expected) { + + message += ""; + + if (typeof details.actual === "number" && typeof details.expected === "number") { + if (!isNaN(details.actual) && !isNaN(details.expected)) { + showDiff = true; + diff = details.actual - details.expected; + diff = (diff > 0 ? "+" : "") + diff; + } + } else if (typeof details.actual !== "boolean" && typeof details.expected !== "boolean") { + diff = QUnit.diff(expected, actual); + + // don't show diff if there is zero overlap + showDiff = stripHtml(diff).length !== stripHtml(expected).length + stripHtml(actual).length; + } + + if (showDiff) { + message += ""; + } + } else if (expected.indexOf("[object Array]") !== -1 || expected.indexOf("[object Object]") !== -1) { + message += ""; + } else { + message += ""; + } + + if (details.source) { + message += ""; + } + + message += "
      Expected:
      " + escapeText(expected) + "
      Result:
      " + escapeText(actual) + "
      Diff:
      " + diff + "
      Message: " + "Diff suppressed as the depth of object is more than current max depth (" + QUnit.config.maxDepth + ").

      Hint: Use QUnit.dump.maxDepth to " + " run with a higher max depth or " + "Rerun without max depth.

      Message: " + "Diff suppressed as the expected and actual results have an equivalent" + " serialization
      Source:
      " + escapeText(details.source) + "
      "; + + // This occurs when pushFailure is set and we have an extracted stack trace + } else if (!details.result && details.source) { + message += "" + "" + "
      Source:
      " + escapeText(details.source) + "
      "; + } + + assertList = testItem.getElementsByTagName("ol")[0]; + + assertLi = document.createElement("li"); + assertLi.className = details.result ? "pass" : "fail"; + assertLi.innerHTML = message; + assertList.appendChild(assertLi); + }); + + QUnit.testDone(function (details) { + var testTitle, + time, + testItem, + assertList, + status, + good, + bad, + testCounts, + skipped, + sourceName, + tests = id("qunit-tests"); + + if (!tests) { + return; + } + + testItem = id("qunit-test-output-" + details.testId); + + removeClass(testItem, "running"); + + if (details.failed > 0) { + status = "failed"; + } else if (details.todo) { + status = "todo"; + } else { + status = details.skipped ? "skipped" : "passed"; + } + + assertList = testItem.getElementsByTagName("ol")[0]; + + good = details.passed; + bad = details.failed; + + // This test passed if it has no unexpected failed assertions + var testPassed = details.failed > 0 ? details.todo : !details.todo; + + if (testPassed) { + + // Collapse the passing tests + addClass(assertList, "qunit-collapsed"); + } else if (config.collapse) { + if (!collapseNext) { + + // Skip collapsing the first failing test + collapseNext = true; + } else { + + // Collapse remaining tests + addClass(assertList, "qunit-collapsed"); + } + } + + // The testItem.firstChild is the test name + testTitle = testItem.firstChild; + + testCounts = bad ? "" + bad + ", " + "" + good + ", " : ""; + + testTitle.innerHTML += " (" + testCounts + details.assertions.length + ")"; + + if (details.skipped) { + stats.skippedTests++; + + testItem.className = "skipped"; + skipped = document.createElement("em"); + skipped.className = "qunit-skipped-label"; + skipped.innerHTML = "skipped"; + testItem.insertBefore(skipped, testTitle); + } else { + addEvent(testTitle, "click", function () { + toggleClass(assertList, "qunit-collapsed"); + }); + + testItem.className = testPassed ? "pass" : "fail"; + + if (details.todo) { + var todoLabel = document.createElement("em"); + todoLabel.className = "qunit-todo-label"; + todoLabel.innerHTML = "todo"; + testItem.className += " todo"; + testItem.insertBefore(todoLabel, testTitle); + } + + time = document.createElement("span"); + time.className = "runtime"; + time.innerHTML = details.runtime + " ms"; + testItem.insertBefore(time, assertList); + + if (!testPassed) { + stats.failedTests++; + } else if (details.todo) { + stats.todoTests++; + } else { + stats.passedTests++; + } + } + + // Show the source of the test when showing assertions + if (details.source) { + sourceName = document.createElement("p"); + sourceName.innerHTML = "Source: " + escapeText(details.source); + addClass(sourceName, "qunit-source"); + if (testPassed) { + addClass(sourceName, "qunit-collapsed"); + } + addEvent(testTitle, "click", function () { + toggleClass(sourceName, "qunit-collapsed"); + }); + testItem.appendChild(sourceName); + } + + if (config.hidepassed && status === "passed") { + + // use removeChild instead of remove because of support + hiddenTests.push(testItem); + + tests.removeChild(testItem); + } + }); + + // Avoid readyState issue with phantomjs + // Ref: #818 + var notPhantom = function (p) { + return !(p && p.version && p.version.major > 0); + }(window$1.phantom); + + if (notPhantom && document.readyState === "complete") { + QUnit.load(); + } else { + addEvent(window$1, "load", QUnit.load); + } + + // Wrap window.onerror. We will call the original window.onerror to see if + // the existing handler fully handles the error; if not, we will call the + // QUnit.onError function. + var originalWindowOnError = window$1.onerror; + + // Cover uncaught exceptions + // Returning true will suppress the default browser handler, + // returning false will let it run. + window$1.onerror = function (message, fileName, lineNumber, columnNumber, errorObj) { + var ret = false; + if (originalWindowOnError) { + for (var _len = arguments.length, args = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) { + args[_key - 5] = arguments[_key]; + } + + ret = originalWindowOnError.call.apply(originalWindowOnError, [this, message, fileName, lineNumber, columnNumber, errorObj].concat(args)); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if (ret !== true) { + var error = { + message: message, + fileName: fileName, + lineNumber: lineNumber + }; + + // According to + // https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror, + // most modern browsers support an errorObj argument; use that to + // get a full stack trace if it's available. + if (errorObj && errorObj.stack) { + error.stacktrace = extractStacktrace(errorObj, 0); + } + + ret = QUnit.onError(error); + } + + return ret; + }; + + // Listen for unhandled rejections, and call QUnit.onUnhandledRejection + window$1.addEventListener("unhandledrejection", function (event) { + QUnit.onUnhandledRejection(event.reason); + }); + })(); + + /* + * This file is a modified version of google-diff-match-patch's JavaScript implementation + * (https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js), + * modifications are licensed as more fully set forth in LICENSE.txt. + * + * The original source of google-diff-match-patch is attributable and licensed as follows: + * + * Copyright 2006 Google Inc. + * https://code.google.com/p/google-diff-match-patch/ + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * More Info: + * https://code.google.com/p/google-diff-match-patch/ + * + * Usage: QUnit.diff(expected, actual) + * + */ + QUnit.diff = function () { + function DiffMatchPatch() {} + + // DIFF FUNCTIONS + + /** + * The data structure representing a diff is an array of tuples: + * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] + * which means: delete 'Hello', add 'Goodbye' and keep ' world.' + */ + var DIFF_DELETE = -1, + DIFF_INSERT = 1, + DIFF_EQUAL = 0; + + /** + * Find the differences between two texts. Simplifies the problem by stripping + * any common prefix or suffix off the texts before diffing. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean=} optChecklines Optional speedup flag. If present and false, + * then don't run a line-level diff first to identify the changed areas. + * Defaults to true, which does a faster, slightly less optimal diff. + * @return {!Array.} Array of diff tuples. + */ + DiffMatchPatch.prototype.DiffMain = function (text1, text2, optChecklines) { + var deadline, checklines, commonlength, commonprefix, commonsuffix, diffs; + + // The diff must be complete in up to 1 second. + deadline = new Date().getTime() + 1000; + + // Check for null inputs. + if (text1 === null || text2 === null) { + throw new Error("Null input. (DiffMain)"); + } + + // Check for equality (speedup). + if (text1 === text2) { + if (text1) { + return [[DIFF_EQUAL, text1]]; + } + return []; + } + + if (typeof optChecklines === "undefined") { + optChecklines = true; + } + + checklines = optChecklines; + + // Trim off common prefix (speedup). + commonlength = this.diffCommonPrefix(text1, text2); + commonprefix = text1.substring(0, commonlength); + text1 = text1.substring(commonlength); + text2 = text2.substring(commonlength); + + // Trim off common suffix (speedup). + commonlength = this.diffCommonSuffix(text1, text2); + commonsuffix = text1.substring(text1.length - commonlength); + text1 = text1.substring(0, text1.length - commonlength); + text2 = text2.substring(0, text2.length - commonlength); + + // Compute the diff on the middle block. + diffs = this.diffCompute(text1, text2, checklines, deadline); + + // Restore the prefix and suffix. + if (commonprefix) { + diffs.unshift([DIFF_EQUAL, commonprefix]); + } + if (commonsuffix) { + diffs.push([DIFF_EQUAL, commonsuffix]); + } + this.diffCleanupMerge(diffs); + return diffs; + }; + + /** + * Reduce the number of edits by eliminating operationally trivial equalities. + * @param {!Array.} diffs Array of diff tuples. + */ + DiffMatchPatch.prototype.diffCleanupEfficiency = function (diffs) { + var changes, equalities, equalitiesLength, lastequality, pointer, preIns, preDel, postIns, postDel; + changes = false; + equalities = []; // Stack of indices where equalities are found. + equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + lastequality = null; + + // Always equal to diffs[equalities[equalitiesLength - 1]][1] + pointer = 0; // Index of current position. + + // Is there an insertion operation before the last equality. + preIns = false; + + // Is there a deletion operation before the last equality. + preDel = false; + + // Is there an insertion operation after the last equality. + postIns = false; + + // Is there a deletion operation after the last equality. + postDel = false; + while (pointer < diffs.length) { + + // Equality found. + if (diffs[pointer][0] === DIFF_EQUAL) { + if (diffs[pointer][1].length < 4 && (postIns || postDel)) { + + // Candidate found. + equalities[equalitiesLength++] = pointer; + preIns = postIns; + preDel = postDel; + lastequality = diffs[pointer][1]; + } else { + + // Not a candidate, and can never become one. + equalitiesLength = 0; + lastequality = null; + } + postIns = postDel = false; + + // An insertion or deletion. + } else { + + if (diffs[pointer][0] === DIFF_DELETE) { + postDel = true; + } else { + postIns = true; + } + + /* + * Five types to be split: + * ABXYCD + * AXCD + * ABXC + * AXCD + * ABXC + */ + if (lastequality && (preIns && preDel && postIns && postDel || lastequality.length < 2 && preIns + preDel + postIns + postDel === 3)) { + + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastequality]); + + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + equalitiesLength--; // Throw away the equality we just deleted; + lastequality = null; + if (preIns && preDel) { + + // No changes made which could affect previous entry, keep going. + postIns = postDel = true; + equalitiesLength = 0; + } else { + equalitiesLength--; // Throw away the previous equality. + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + postIns = postDel = false; + } + changes = true; + } + } + pointer++; + } + + if (changes) { + this.diffCleanupMerge(diffs); + } + }; + + /** + * Convert a diff array into a pretty HTML report. + * @param {!Array.} diffs Array of diff tuples. + * @param {integer} string to be beautified. + * @return {string} HTML representation. + */ + DiffMatchPatch.prototype.diffPrettyHtml = function (diffs) { + var op, + data, + x, + html = []; + for (x = 0; x < diffs.length; x++) { + op = diffs[x][0]; // Operation (insert, delete, equal) + data = diffs[x][1]; // Text of change. + switch (op) { + case DIFF_INSERT: + html[x] = "" + escapeText(data) + ""; + break; + case DIFF_DELETE: + html[x] = "" + escapeText(data) + ""; + break; + case DIFF_EQUAL: + html[x] = "" + escapeText(data) + ""; + break; + } + } + return html.join(""); + }; + + /** + * Determine the common prefix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the start of each + * string. + */ + DiffMatchPatch.prototype.diffCommonPrefix = function (text1, text2) { + var pointermid, pointermax, pointermin, pointerstart; + + // Quick check for common null cases. + if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) { + return 0; + } + + // Binary search. + // Performance analysis: https://neil.fraser.name/news/2007/10/09/ + pointermin = 0; + pointermax = Math.min(text1.length, text2.length); + pointermid = pointermax; + pointerstart = 0; + while (pointermin < pointermid) { + if (text1.substring(pointerstart, pointermid) === text2.substring(pointerstart, pointermid)) { + pointermin = pointermid; + pointerstart = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; + }; + + /** + * Determine the common suffix of two strings. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of each string. + */ + DiffMatchPatch.prototype.diffCommonSuffix = function (text1, text2) { + var pointermid, pointermax, pointermin, pointerend; + + // Quick check for common null cases. + if (!text1 || !text2 || text1.charAt(text1.length - 1) !== text2.charAt(text2.length - 1)) { + return 0; + } + + // Binary search. + // Performance analysis: https://neil.fraser.name/news/2007/10/09/ + pointermin = 0; + pointermax = Math.min(text1.length, text2.length); + pointermid = pointermax; + pointerend = 0; + while (pointermin < pointermid) { + if (text1.substring(text1.length - pointermid, text1.length - pointerend) === text2.substring(text2.length - pointermid, text2.length - pointerend)) { + pointermin = pointermid; + pointerend = pointermin; + } else { + pointermax = pointermid; + } + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + return pointermid; + }; + + /** + * Find the differences between two texts. Assumes that the texts do not + * have any common prefix or suffix. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {boolean} checklines Speedup flag. If false, then don't run a + * line-level diff first to identify the changed areas. + * If true, then run a faster, slightly less optimal diff. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffCompute = function (text1, text2, checklines, deadline) { + var diffs, longtext, shorttext, i, hm, text1A, text2A, text1B, text2B, midCommon, diffsA, diffsB; + + if (!text1) { + + // Just add some text (speedup). + return [[DIFF_INSERT, text2]]; + } + + if (!text2) { + + // Just delete some text (speedup). + return [[DIFF_DELETE, text1]]; + } + + longtext = text1.length > text2.length ? text1 : text2; + shorttext = text1.length > text2.length ? text2 : text1; + i = longtext.indexOf(shorttext); + if (i !== -1) { + + // Shorter text is inside the longer text (speedup). + diffs = [[DIFF_INSERT, longtext.substring(0, i)], [DIFF_EQUAL, shorttext], [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; + + // Swap insertions for deletions if diff is reversed. + if (text1.length > text2.length) { + diffs[0][0] = diffs[2][0] = DIFF_DELETE; + } + return diffs; + } + + if (shorttext.length === 1) { + + // Single character string. + // After the previous speedup, the character can't be an equality. + return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; + } + + // Check to see if the problem can be split in two. + hm = this.diffHalfMatch(text1, text2); + if (hm) { + + // A half-match was found, sort out the return data. + text1A = hm[0]; + text1B = hm[1]; + text2A = hm[2]; + text2B = hm[3]; + midCommon = hm[4]; + + // Send both pairs off for separate processing. + diffsA = this.DiffMain(text1A, text2A, checklines, deadline); + diffsB = this.DiffMain(text1B, text2B, checklines, deadline); + + // Merge the results. + return diffsA.concat([[DIFF_EQUAL, midCommon]], diffsB); + } + + if (checklines && text1.length > 100 && text2.length > 100) { + return this.diffLineMode(text1, text2, deadline); + } + + return this.diffBisect(text1, text2, deadline); + }; + + /** + * Do the two texts share a substring which is at least half the length of the + * longer text? + * This speedup can produce non-minimal diffs. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {Array.} Five element Array, containing the prefix of + * text1, the suffix of text1, the prefix of text2, the suffix of + * text2 and the common middle. Or null if there was no match. + * @private + */ + DiffMatchPatch.prototype.diffHalfMatch = function (text1, text2) { + var longtext, shorttext, dmp, text1A, text2B, text2A, text1B, midCommon, hm1, hm2, hm; + + longtext = text1.length > text2.length ? text1 : text2; + shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { + return null; // Pointless. + } + dmp = this; // 'this' becomes 'window' in a closure. + + /** + * Does a substring of shorttext exist within longtext such that the substring + * is at least half the length of longtext? + * Closure, but does not reference any external variables. + * @param {string} longtext Longer string. + * @param {string} shorttext Shorter string. + * @param {number} i Start index of quarter length substring within longtext. + * @return {Array.} Five element Array, containing the prefix of + * longtext, the suffix of longtext, the prefix of shorttext, the suffix + * of shorttext and the common middle. Or null if there was no match. + * @private + */ + function diffHalfMatchI(longtext, shorttext, i) { + var seed, j, bestCommon, prefixLength, suffixLength, bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB; + + // Start with a 1/4 length substring at position i as a seed. + seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); + j = -1; + bestCommon = ""; + while ((j = shorttext.indexOf(seed, j + 1)) !== -1) { + prefixLength = dmp.diffCommonPrefix(longtext.substring(i), shorttext.substring(j)); + suffixLength = dmp.diffCommonSuffix(longtext.substring(0, i), shorttext.substring(0, j)); + if (bestCommon.length < suffixLength + prefixLength) { + bestCommon = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength); + bestLongtextA = longtext.substring(0, i - suffixLength); + bestLongtextB = longtext.substring(i + prefixLength); + bestShorttextA = shorttext.substring(0, j - suffixLength); + bestShorttextB = shorttext.substring(j + prefixLength); + } + } + if (bestCommon.length * 2 >= longtext.length) { + return [bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB, bestCommon]; + } else { + return null; + } + } + + // First check if the second quarter is the seed for a half-match. + hm1 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 4)); + + // Check again based on the third quarter. + hm2 = diffHalfMatchI(longtext, shorttext, Math.ceil(longtext.length / 2)); + if (!hm1 && !hm2) { + return null; + } else if (!hm2) { + hm = hm1; + } else if (!hm1) { + hm = hm2; + } else { + + // Both matched. Select the longest. + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + } + + // A half-match was found, sort out the return data. + if (text1.length > text2.length) { + text1A = hm[0]; + text1B = hm[1]; + text2A = hm[2]; + text2B = hm[3]; + } else { + text2A = hm[0]; + text2B = hm[1]; + text1A = hm[2]; + text1B = hm[3]; + } + midCommon = hm[4]; + return [text1A, text1B, text2A, text2B, midCommon]; + }; + + /** + * Do a quick line-level diff on both strings, then rediff the parts for + * greater accuracy. + * This speedup can produce non-minimal diffs. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time when the diff should be complete by. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffLineMode = function (text1, text2, deadline) { + var a, diffs, linearray, pointer, countInsert, countDelete, textInsert, textDelete, j; + + // Scan the text on a line-by-line basis first. + a = this.diffLinesToChars(text1, text2); + text1 = a.chars1; + text2 = a.chars2; + linearray = a.lineArray; + + diffs = this.DiffMain(text1, text2, false, deadline); + + // Convert the diff back to original text. + this.diffCharsToLines(diffs, linearray); + + // Eliminate freak matches (e.g. blank lines) + this.diffCleanupSemantic(diffs); + + // Rediff any replacement blocks, this time character-by-character. + // Add a dummy entry at the end. + diffs.push([DIFF_EQUAL, ""]); + pointer = 0; + countDelete = 0; + countInsert = 0; + textDelete = ""; + textInsert = ""; + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + countInsert++; + textInsert += diffs[pointer][1]; + break; + case DIFF_DELETE: + countDelete++; + textDelete += diffs[pointer][1]; + break; + case DIFF_EQUAL: + + // Upon reaching an equality, check for prior redundancies. + if (countDelete >= 1 && countInsert >= 1) { + + // Delete the offending records and add the merged ones. + diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert); + pointer = pointer - countDelete - countInsert; + a = this.DiffMain(textDelete, textInsert, false, deadline); + for (j = a.length - 1; j >= 0; j--) { + diffs.splice(pointer, 0, a[j]); + } + pointer = pointer + a.length; + } + countInsert = 0; + countDelete = 0; + textDelete = ""; + textInsert = ""; + break; + } + pointer++; + } + diffs.pop(); // Remove the dummy entry at the end. + + return diffs; + }; + + /** + * Find the 'middle snake' of a diff, split the problem in two + * and return the recursively constructed diff. + * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffBisect = function (text1, text2, deadline) { + var text1Length, text2Length, maxD, vOffset, vLength, v1, v2, x, delta, front, k1start, k1end, k2start, k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2; + + // Cache the text lengths to prevent multiple calls. + text1Length = text1.length; + text2Length = text2.length; + maxD = Math.ceil((text1Length + text2Length) / 2); + vOffset = maxD; + vLength = 2 * maxD; + v1 = new Array(vLength); + v2 = new Array(vLength); + + // Setting all elements to -1 is faster in Chrome & Firefox than mixing + // integers and undefined. + for (x = 0; x < vLength; x++) { + v1[x] = -1; + v2[x] = -1; + } + v1[vOffset + 1] = 0; + v2[vOffset + 1] = 0; + delta = text1Length - text2Length; + + // If the total number of characters is odd, then the front path will collide + // with the reverse path. + front = delta % 2 !== 0; + + // Offsets for start and end of k loop. + // Prevents mapping of space beyond the grid. + k1start = 0; + k1end = 0; + k2start = 0; + k2end = 0; + for (d = 0; d < maxD; d++) { + + // Bail out if deadline is reached. + if (new Date().getTime() > deadline) { + break; + } + + // Walk the front path one step. + for (k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { + k1Offset = vOffset + k1; + if (k1 === -d || k1 !== d && v1[k1Offset - 1] < v1[k1Offset + 1]) { + x1 = v1[k1Offset + 1]; + } else { + x1 = v1[k1Offset - 1] + 1; + } + y1 = x1 - k1; + while (x1 < text1Length && y1 < text2Length && text1.charAt(x1) === text2.charAt(y1)) { + x1++; + y1++; + } + v1[k1Offset] = x1; + if (x1 > text1Length) { + + // Ran off the right of the graph. + k1end += 2; + } else if (y1 > text2Length) { + + // Ran off the bottom of the graph. + k1start += 2; + } else if (front) { + k2Offset = vOffset + delta - k1; + if (k2Offset >= 0 && k2Offset < vLength && v2[k2Offset] !== -1) { + + // Mirror x2 onto top-left coordinate system. + x2 = text1Length - v2[k2Offset]; + if (x1 >= x2) { + + // Overlap detected. + return this.diffBisectSplit(text1, text2, x1, y1, deadline); + } + } + } + } + + // Walk the reverse path one step. + for (k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { + k2Offset = vOffset + k2; + if (k2 === -d || k2 !== d && v2[k2Offset - 1] < v2[k2Offset + 1]) { + x2 = v2[k2Offset + 1]; + } else { + x2 = v2[k2Offset - 1] + 1; + } + y2 = x2 - k2; + while (x2 < text1Length && y2 < text2Length && text1.charAt(text1Length - x2 - 1) === text2.charAt(text2Length - y2 - 1)) { + x2++; + y2++; + } + v2[k2Offset] = x2; + if (x2 > text1Length) { + + // Ran off the left of the graph. + k2end += 2; + } else if (y2 > text2Length) { + + // Ran off the top of the graph. + k2start += 2; + } else if (!front) { + k1Offset = vOffset + delta - k2; + if (k1Offset >= 0 && k1Offset < vLength && v1[k1Offset] !== -1) { + x1 = v1[k1Offset]; + y1 = vOffset + x1 - k1Offset; + + // Mirror x2 onto top-left coordinate system. + x2 = text1Length - x2; + if (x1 >= x2) { + + // Overlap detected. + return this.diffBisectSplit(text1, text2, x1, y1, deadline); + } + } + } + } + } + + // Diff took too long and hit the deadline or + // number of diffs equals number of characters, no commonality at all. + return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; + }; + + /** + * Given the location of the 'middle snake', split the diff in two parts + * and recurse. + * @param {string} text1 Old string to be diffed. + * @param {string} text2 New string to be diffed. + * @param {number} x Index of split point in text1. + * @param {number} y Index of split point in text2. + * @param {number} deadline Time at which to bail if not yet complete. + * @return {!Array.} Array of diff tuples. + * @private + */ + DiffMatchPatch.prototype.diffBisectSplit = function (text1, text2, x, y, deadline) { + var text1a, text1b, text2a, text2b, diffs, diffsb; + text1a = text1.substring(0, x); + text2a = text2.substring(0, y); + text1b = text1.substring(x); + text2b = text2.substring(y); + + // Compute both diffs serially. + diffs = this.DiffMain(text1a, text2a, false, deadline); + diffsb = this.DiffMain(text1b, text2b, false, deadline); + + return diffs.concat(diffsb); + }; + + /** + * Reduce the number of edits by eliminating semantically trivial equalities. + * @param {!Array.} diffs Array of diff tuples. + */ + DiffMatchPatch.prototype.diffCleanupSemantic = function (diffs) { + var changes, equalities, equalitiesLength, lastequality, pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1, lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2; + changes = false; + equalities = []; // Stack of indices where equalities are found. + equalitiesLength = 0; // Keeping our own length var is faster in JS. + /** @type {?string} */ + lastequality = null; + + // Always equal to diffs[equalities[equalitiesLength - 1]][1] + pointer = 0; // Index of current position. + + // Number of characters that changed prior to the equality. + lengthInsertions1 = 0; + lengthDeletions1 = 0; + + // Number of characters that changed after the equality. + lengthInsertions2 = 0; + lengthDeletions2 = 0; + while (pointer < diffs.length) { + if (diffs[pointer][0] === DIFF_EQUAL) { + // Equality found. + equalities[equalitiesLength++] = pointer; + lengthInsertions1 = lengthInsertions2; + lengthDeletions1 = lengthDeletions2; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + lastequality = diffs[pointer][1]; + } else { + // An insertion or deletion. + if (diffs[pointer][0] === DIFF_INSERT) { + lengthInsertions2 += diffs[pointer][1].length; + } else { + lengthDeletions2 += diffs[pointer][1].length; + } + + // Eliminate an equality that is smaller or equal to the edits on both + // sides of it. + if (lastequality && lastequality.length <= Math.max(lengthInsertions1, lengthDeletions1) && lastequality.length <= Math.max(lengthInsertions2, lengthDeletions2)) { + + // Duplicate record. + diffs.splice(equalities[equalitiesLength - 1], 0, [DIFF_DELETE, lastequality]); + + // Change second copy to insert. + diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; + + // Throw away the equality we just deleted. + equalitiesLength--; + + // Throw away the previous equality (it needs to be reevaluated). + equalitiesLength--; + pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; + + // Reset the counters. + lengthInsertions1 = 0; + lengthDeletions1 = 0; + lengthInsertions2 = 0; + lengthDeletions2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + + // Normalize the diff. + if (changes) { + this.diffCleanupMerge(diffs); + } + + // Find any overlaps between deletions and insertions. + // e.g: abcxxxxxxdef + // -> abcxxxdef + // e.g: xxxabcdefxxx + // -> defxxxabc + // Only extract an overlap if it is as big as the edit ahead or behind it. + pointer = 1; + while (pointer < diffs.length) { + if (diffs[pointer - 1][0] === DIFF_DELETE && diffs[pointer][0] === DIFF_INSERT) { + deletion = diffs[pointer - 1][1]; + insertion = diffs[pointer][1]; + overlapLength1 = this.diffCommonOverlap(deletion, insertion); + overlapLength2 = this.diffCommonOverlap(insertion, deletion); + if (overlapLength1 >= overlapLength2) { + if (overlapLength1 >= deletion.length / 2 || overlapLength1 >= insertion.length / 2) { + + // Overlap found. Insert an equality and trim the surrounding edits. + diffs.splice(pointer, 0, [DIFF_EQUAL, insertion.substring(0, overlapLength1)]); + diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlapLength1); + diffs[pointer + 1][1] = insertion.substring(overlapLength1); + pointer++; + } + } else { + if (overlapLength2 >= deletion.length / 2 || overlapLength2 >= insertion.length / 2) { + + // Reverse overlap found. + // Insert an equality and swap and trim the surrounding edits. + diffs.splice(pointer, 0, [DIFF_EQUAL, deletion.substring(0, overlapLength2)]); + + diffs[pointer - 1][0] = DIFF_INSERT; + diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlapLength2); + diffs[pointer + 1][0] = DIFF_DELETE; + diffs[pointer + 1][1] = deletion.substring(overlapLength2); + pointer++; + } + } + pointer++; + } + pointer++; + } + }; + + /** + * Determine if the suffix of one string is the prefix of another. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {number} The number of characters common to the end of the first + * string and the start of the second string. + * @private + */ + DiffMatchPatch.prototype.diffCommonOverlap = function (text1, text2) { + var text1Length, text2Length, textLength, best, length, pattern, found; + + // Cache the text lengths to prevent multiple calls. + text1Length = text1.length; + text2Length = text2.length; + + // Eliminate the null case. + if (text1Length === 0 || text2Length === 0) { + return 0; + } + + // Truncate the longer string. + if (text1Length > text2Length) { + text1 = text1.substring(text1Length - text2Length); + } else if (text1Length < text2Length) { + text2 = text2.substring(0, text1Length); + } + textLength = Math.min(text1Length, text2Length); + + // Quick check for the worst case. + if (text1 === text2) { + return textLength; + } + + // Start by looking for a single character match + // and increase length until no match is found. + // Performance analysis: https://neil.fraser.name/news/2010/11/04/ + best = 0; + length = 1; + while (true) { + pattern = text1.substring(textLength - length); + found = text2.indexOf(pattern); + if (found === -1) { + return best; + } + length += found; + if (found === 0 || text1.substring(textLength - length) === text2.substring(0, length)) { + best = length; + length++; + } + } + }; + + /** + * Split two texts into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * @param {string} text1 First string. + * @param {string} text2 Second string. + * @return {{chars1: string, chars2: string, lineArray: !Array.}} + * An object containing the encoded text1, the encoded text2 and + * the array of unique strings. + * The zeroth element of the array of unique strings is intentionally blank. + * @private + */ + DiffMatchPatch.prototype.diffLinesToChars = function (text1, text2) { + var lineArray, lineHash, chars1, chars2; + lineArray = []; // E.g. lineArray[4] === 'Hello\n' + lineHash = {}; // E.g. lineHash['Hello\n'] === 4 + + // '\x00' is a valid character, but various debuggers don't like it. + // So we'll insert a junk entry to avoid generating a null character. + lineArray[0] = ""; + + /** + * Split a text into an array of strings. Reduce the texts to a string of + * hashes where each Unicode character represents one line. + * Modifies linearray and linehash through being a closure. + * @param {string} text String to encode. + * @return {string} Encoded string. + * @private + */ + function diffLinesToCharsMunge(text) { + var chars, lineStart, lineEnd, lineArrayLength, line; + chars = ""; + + // Walk the text, pulling out a substring for each line. + // text.split('\n') would would temporarily double our memory footprint. + // Modifying text would create many large strings to garbage collect. + lineStart = 0; + lineEnd = -1; + + // Keeping our own length variable is faster than looking it up. + lineArrayLength = lineArray.length; + while (lineEnd < text.length - 1) { + lineEnd = text.indexOf("\n", lineStart); + if (lineEnd === -1) { + lineEnd = text.length - 1; + } + line = text.substring(lineStart, lineEnd + 1); + lineStart = lineEnd + 1; + + var lineHashExists = lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined; + + if (lineHashExists) { + chars += String.fromCharCode(lineHash[line]); + } else { + chars += String.fromCharCode(lineArrayLength); + lineHash[line] = lineArrayLength; + lineArray[lineArrayLength++] = line; + } + } + return chars; + } + + chars1 = diffLinesToCharsMunge(text1); + chars2 = diffLinesToCharsMunge(text2); + return { + chars1: chars1, + chars2: chars2, + lineArray: lineArray + }; + }; + + /** + * Rehydrate the text in a diff from a string of line hashes to real lines of + * text. + * @param {!Array.} diffs Array of diff tuples. + * @param {!Array.} lineArray Array of unique strings. + * @private + */ + DiffMatchPatch.prototype.diffCharsToLines = function (diffs, lineArray) { + var x, chars, text, y; + for (x = 0; x < diffs.length; x++) { + chars = diffs[x][1]; + text = []; + for (y = 0; y < chars.length; y++) { + text[y] = lineArray[chars.charCodeAt(y)]; + } + diffs[x][1] = text.join(""); + } + }; + + /** + * Reorder and merge like edit sections. Merge equalities. + * Any edit section can move as long as it doesn't cross an equality. + * @param {!Array.} diffs Array of diff tuples. + */ + DiffMatchPatch.prototype.diffCleanupMerge = function (diffs) { + var pointer, countDelete, countInsert, textInsert, textDelete, commonlength, changes, diffPointer, position; + diffs.push([DIFF_EQUAL, ""]); // Add a dummy entry at the end. + pointer = 0; + countDelete = 0; + countInsert = 0; + textDelete = ""; + textInsert = ""; + + while (pointer < diffs.length) { + switch (diffs[pointer][0]) { + case DIFF_INSERT: + countInsert++; + textInsert += diffs[pointer][1]; + pointer++; + break; + case DIFF_DELETE: + countDelete++; + textDelete += diffs[pointer][1]; + pointer++; + break; + case DIFF_EQUAL: + + // Upon reaching an equality, check for prior redundancies. + if (countDelete + countInsert > 1) { + if (countDelete !== 0 && countInsert !== 0) { + + // Factor out any common prefixes. + commonlength = this.diffCommonPrefix(textInsert, textDelete); + if (commonlength !== 0) { + if (pointer - countDelete - countInsert > 0 && diffs[pointer - countDelete - countInsert - 1][0] === DIFF_EQUAL) { + diffs[pointer - countDelete - countInsert - 1][1] += textInsert.substring(0, commonlength); + } else { + diffs.splice(0, 0, [DIFF_EQUAL, textInsert.substring(0, commonlength)]); + pointer++; + } + textInsert = textInsert.substring(commonlength); + textDelete = textDelete.substring(commonlength); + } + + // Factor out any common suffixies. + commonlength = this.diffCommonSuffix(textInsert, textDelete); + if (commonlength !== 0) { + diffs[pointer][1] = textInsert.substring(textInsert.length - commonlength) + diffs[pointer][1]; + textInsert = textInsert.substring(0, textInsert.length - commonlength); + textDelete = textDelete.substring(0, textDelete.length - commonlength); + } + } + + // Delete the offending records and add the merged ones. + if (countDelete === 0) { + diffs.splice(pointer - countInsert, countDelete + countInsert, [DIFF_INSERT, textInsert]); + } else if (countInsert === 0) { + diffs.splice(pointer - countDelete, countDelete + countInsert, [DIFF_DELETE, textDelete]); + } else { + diffs.splice(pointer - countDelete - countInsert, countDelete + countInsert, [DIFF_DELETE, textDelete], [DIFF_INSERT, textInsert]); + } + pointer = pointer - countDelete - countInsert + (countDelete ? 1 : 0) + (countInsert ? 1 : 0) + 1; + } else if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) { + + // Merge this equality with the previous one. + diffs[pointer - 1][1] += diffs[pointer][1]; + diffs.splice(pointer, 1); + } else { + pointer++; + } + countInsert = 0; + countDelete = 0; + textDelete = ""; + textInsert = ""; + break; + } + } + if (diffs[diffs.length - 1][1] === "") { + diffs.pop(); // Remove the dummy entry at the end. + } + + // Second pass: look for single edits surrounded on both sides by equalities + // which can be shifted sideways to eliminate an equality. + // e.g: ABAC -> ABAC + changes = false; + pointer = 1; + + // Intentionally ignore the first and last element (don't need checking). + while (pointer < diffs.length - 1) { + if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) { + + diffPointer = diffs[pointer][1]; + position = diffPointer.substring(diffPointer.length - diffs[pointer - 1][1].length); + + // This is a single edit surrounded by equalities. + if (position === diffs[pointer - 1][1]) { + + // Shift the edit over the previous equality. + diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length); + diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; + diffs.splice(pointer - 1, 1); + changes = true; + } else if (diffPointer.substring(0, diffs[pointer + 1][1].length) === diffs[pointer + 1][1]) { + + // Shift the edit over the next equality. + diffs[pointer - 1][1] += diffs[pointer + 1][1]; + diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1]; + diffs.splice(pointer + 1, 1); + changes = true; + } + } + pointer++; + } + + // If shifts were made, the diff needs reordering and another shift sweep. + if (changes) { + this.diffCleanupMerge(diffs); + } + }; + + return function (o, n) { + var diff, output, text; + diff = new DiffMatchPatch(); + output = diff.DiffMain(o, n); + diff.diffCleanupEfficiency(output); + text = diff.diffPrettyHtml(output); + + return text; + }; + }(); + +}((function() { return this; }()))); diff --git a/screenshots/daw.jpg b/screenshots/daw.jpg new file mode 100644 index 0000000..25d95e8 Binary files /dev/null and b/screenshots/daw.jpg differ diff --git a/screenshots/gsuiBeatlines.png b/screenshots/gsuiBeatlines.png new file mode 100644 index 0000000..3bb16d7 Binary files /dev/null and b/screenshots/gsuiBeatlines.png differ diff --git a/screenshots/gsuiKeys.png b/screenshots/gsuiKeys.png new file mode 100644 index 0000000..ad88e49 Binary files /dev/null and b/screenshots/gsuiKeys.png differ diff --git a/screenshots/gsuiOscilloscope.png b/screenshots/gsuiOscilloscope.png new file mode 100644 index 0000000..c1226dd Binary files /dev/null and b/screenshots/gsuiOscilloscope.png differ diff --git a/screenshots/gsuiPopup.png b/screenshots/gsuiPopup.png new file mode 100644 index 0000000..0670d08 Binary files /dev/null and b/screenshots/gsuiPopup.png differ diff --git a/screenshots/gsuiSlider.png b/screenshots/gsuiSlider.png new file mode 100644 index 0000000..1ba4d84 Binary files /dev/null and b/screenshots/gsuiSlider.png differ diff --git a/screenshots/gsuiSpectrum.png b/screenshots/gsuiSpectrum.png new file mode 100644 index 0000000..94fcfcc Binary files /dev/null and b/screenshots/gsuiSpectrum.png differ diff --git a/screenshots/gsuiTimeline.png b/screenshots/gsuiTimeline.png new file mode 100644 index 0000000..ac364ba Binary files /dev/null and b/screenshots/gsuiTimeline.png differ diff --git a/screenshots/gsuiTracklist.png b/screenshots/gsuiTracklist.png new file mode 100644 index 0000000..d5d1d66 Binary files /dev/null and b/screenshots/gsuiTracklist.png differ diff --git a/screenshots/gsuiWave.png b/screenshots/gsuiWave.png new file mode 100644 index 0000000..7a51c9f Binary files /dev/null and b/screenshots/gsuiWave.png differ diff --git a/screenshots/gsuiWaveform.png b/screenshots/gsuiWaveform.png new file mode 100644 index 0000000..0eff96b Binary files /dev/null and b/screenshots/gsuiWaveform.png differ diff --git "a/\360\237\216\271/all88-ff.128k.mp3" "b/\360\237\216\271/all88-ff.128k.mp3" new file mode 100644 index 0000000..5235e28 Binary files /dev/null and "b/\360\237\216\271/all88-ff.128k.mp3" differ