<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,4 @@
-
 # line 1 &quot;scan.rl&quot;
-
 # line 83 &quot;scan.rl&quot;
 
 
@@ -37,132 +35,50 @@ module Radius
       
       @prefix = prefix
       
-# line 41 &quot;scan.rb&quot;
-class &lt;&lt; self
-	attr_accessor :_parser_actions
-	private :_parser_actions, :_parser_actions=
-end
-self._parser_actions = [
-	0, 1, 0, 1, 1, 1, 2, 1, 
-	3, 1, 4, 1, 5, 1, 6, 1, 
-	7, 1, 8, 1, 9, 1, 13, 1, 
-	14, 1, 18, 1, 20, 1, 21, 1, 
-	22, 2, 4, 5, 2, 5, 6, 2, 
-	8, 4, 2, 8, 9, 2, 9, 8, 
-	2, 10, 19, 2, 11, 19, 2, 12, 
-	19, 2, 15, 16, 2, 15, 17, 3, 
-	4, 5, 6, 3, 8, 4, 5, 3, 
-	15, 5, 16, 4, 8, 4, 5, 6, 
-	4, 15, 4, 5, 16, 5, 15, 8, 
-	4, 5, 16
-]
-
-class &lt;&lt; self
-	attr_accessor :_parser_key_offsets
-	private :_parser_key_offsets, :_parser_key_offsets=
-end
-self._parser_key_offsets = [
-	0, 0, 11, 21, 34, 47, 61, 65, 
-	70, 72, 74, 87, 100, 101, 103, 118, 
-	133, 149, 155, 161, 176, 179, 182, 185, 
-	200, 202, 204, 219, 235, 241, 247, 250, 
-	253, 269, 285, 302, 309, 315, 331, 335, 
-	351, 366, 369, 371, 381, 392, 402, 416, 
-	420, 420, 421, 430, 430, 430, 432, 434, 
-	437, 440, 442, 444
-]
-
+# line 39 &quot;scan.rb&quot;
 class &lt;&lt; self
 	attr_accessor :_parser_trans_keys
 	private :_parser_trans_keys, :_parser_trans_keys=
 end
 self._parser_trans_keys = [
-	58, 63, 95, 45, 46, 48, 57, 65, 
-	90, 97, 122, 63, 95, 45, 46, 48, 
-	58, 65, 90, 97, 122, 32, 47, 62, 
-	63, 95, 9, 13, 45, 58, 65, 90, 
-	97, 122, 32, 47, 62, 63, 95, 9, 
-	13, 45, 58, 65, 90, 97, 122, 32, 
-	61, 63, 95, 9, 13, 45, 46, 48, 
-	58, 65, 90, 97, 122, 32, 61, 9, 
-	13, 32, 34, 39, 9, 13, 34, 92, 
-	34, 92, 32, 47, 62, 63, 95, 9, 
-	13, 45, 58, 65, 90, 97, 122, 32, 
-	47, 62, 63, 95, 9, 13, 45, 58, 
-	65, 90, 97, 122, 62, 34, 92, 32, 
-	34, 47, 62, 63, 92, 95, 9, 13, 
-	45, 58, 65, 90, 97, 122, 32, 34, 
-	47, 62, 63, 92, 95, 9, 13, 45, 
-	58, 65, 90, 97, 122, 32, 34, 61, 
-	63, 92, 95, 9, 13, 45, 46, 48, 
-	58, 65, 90, 97, 122, 32, 34, 61, 
-	92, 9, 13, 32, 34, 39, 92, 9, 
-	13, 32, 34, 47, 62, 63, 92, 95, 
-	9, 13, 45, 58, 65, 90, 97, 122, 
-	34, 62, 92, 34, 39, 92, 34, 39, 
-	92, 32, 39, 47, 62, 63, 92, 95, 
-	9, 13, 45, 58, 65, 90, 97, 122, 
-	39, 92, 39, 92, 32, 39, 47, 62, 
-	63, 92, 95, 9, 13, 45, 58, 65, 
-	90, 97, 122, 32, 39, 61, 63, 92, 
-	95, 9, 13, 45, 46, 48, 58, 65, 
-	90, 97, 122, 32, 39, 61, 92, 9, 
-	13, 32, 34, 39, 92, 9, 13, 34, 
-	39, 92, 34, 39, 92, 32, 34, 39, 
-	47, 62, 63, 92, 95, 9, 13, 45, 
-	58, 65, 90, 97, 122, 32, 34, 39, 
-	47, 62, 63, 92, 95, 9, 13, 45, 
-	58, 65, 90, 97, 122, 32, 34, 39, 
-	61, 63, 92, 95, 9, 13, 45, 46, 
-	48, 58, 65, 90, 97, 122, 32, 34, 
-	39, 61, 92, 9, 13, 32, 34, 39, 
-	92, 9, 13, 32, 34, 39, 47, 62, 
-	63, 92, 95, 9, 13, 45, 58, 65, 
-	90, 97, 122, 34, 39, 62, 92, 32, 
-	34, 39, 47, 62, 63, 92, 95, 9, 
-	13, 45, 58, 65, 90, 97, 122, 32, 
-	39, 47, 62, 63, 92, 95, 9, 13, 
-	45, 58, 65, 90, 97, 122, 39, 62, 
-	92, 39, 92, 63, 95, 45, 46, 48, 
-	57, 65, 90, 97, 122, 58, 63, 95, 
-	45, 46, 48, 57, 65, 90, 97, 122, 
-	63, 95, 45, 46, 48, 58, 65, 90, 
-	97, 122, 32, 62, 63, 95, 9, 13, 
-	45, 46, 48, 58, 65, 90, 97, 122, 
-	32, 62, 9, 13, 60, 47, 63, 95, 
-	45, 57, 65, 90, 97, 122, 34, 92, 
-	34, 92, 34, 39, 92, 34, 39, 92, 
-	39, 92, 39, 92, 0
+	0, 0, 45, 122, 45, 122, 
+	9, 122, 9, 122, 9, 
+	122, 9, 61, 9, 39, 
+	34, 92, 34, 92, 9, 122, 
+	9, 122, 62, 62, 34, 
+	92, 9, 122, 9, 122, 
+	9, 122, 9, 92, 9, 92, 
+	9, 122, 34, 92, 34, 
+	92, 34, 92, 9, 122, 
+	39, 92, 39, 92, 9, 122, 
+	9, 122, 9, 92, 9, 
+	92, 34, 92, 34, 92, 
+	9, 122, 9, 122, 9, 122, 
+	9, 92, 9, 92, 9, 
+	122, 34, 92, 9, 122, 
+	9, 122, 39, 92, 39, 92, 
+	45, 122, 45, 122, 45, 
+	122, 9, 122, 9, 62, 
+	0, 0, 60, 60, 45, 122, 
+	0, 0, 0, 0, 34, 
+	92, 34, 92, 34, 92, 
+	34, 92, 39, 92, 39, 92, 
+	0, 0, 0
 ]
 
 class &lt;&lt; self
-	attr_accessor :_parser_single_lengths
-	private :_parser_single_lengths, :_parser_single_lengths=
+	attr_accessor :_parser_key_spans
+	private :_parser_key_spans, :_parser_key_spans=
 end
-self._parser_single_lengths = [
-	0, 3, 2, 5, 5, 4, 2, 3, 
-	2, 2, 5, 5, 1, 2, 7, 7, 
-	6, 4, 4, 7, 3, 3, 3, 7, 
-	2, 2, 7, 6, 4, 4, 3, 3, 
-	8, 8, 7, 5, 4, 8, 4, 8, 
-	7, 3, 2, 2, 3, 2, 4, 2, 
-	0, 1, 3, 0, 0, 2, 2, 3, 
-	3, 2, 2, 0
-]
-
-class &lt;&lt; self
-	attr_accessor :_parser_range_lengths
-	private :_parser_range_lengths, :_parser_range_lengths=
-end
-self._parser_range_lengths = [
-	0, 4, 4, 4, 4, 5, 1, 1, 
-	0, 0, 4, 4, 0, 0, 4, 4, 
-	5, 1, 1, 4, 0, 0, 0, 4, 
-	0, 0, 4, 5, 1, 1, 0, 0, 
-	4, 4, 5, 1, 1, 4, 0, 4, 
-	4, 0, 0, 4, 4, 4, 5, 1, 
-	0, 0, 3, 0, 0, 0, 0, 0, 
-	0, 0, 0, 0
+self._parser_key_spans = [
+	0, 78, 78, 114, 114, 114, 53, 31, 
+	59, 59, 114, 114, 1, 59, 114, 114, 
+	114, 84, 84, 114, 59, 59, 59, 114, 
+	54, 54, 114, 114, 84, 84, 59, 59, 
+	114, 114, 114, 84, 84, 114, 59, 114, 
+	114, 54, 54, 78, 78, 78, 114, 54, 
+	0, 1, 78, 0, 0, 59, 59, 59, 
+	59, 54, 54, 0
 ]
 
 class &lt;&lt; self
@@ -170,14 +86,14 @@ class &lt;&lt; self
 	private :_parser_index_offsets, :_parser_index_offsets=
 end
 self._parser_index_offsets = [
-	0, 0, 8, 15, 25, 35, 45, 49, 
-	54, 57, 60, 70, 80, 82, 85, 97, 
-	109, 121, 127, 133, 145, 149, 153, 157, 
-	169, 172, 175, 187, 199, 205, 211, 215, 
-	219, 232, 245, 258, 265, 271, 284, 289, 
-	302, 314, 318, 321, 328, 336, 343, 353, 
-	357, 358, 360, 367, 368, 369, 372, 375, 
-	379, 383, 386, 389
+	0, 0, 79, 158, 273, 388, 503, 557, 
+	589, 649, 709, 824, 939, 941, 1001, 1116, 
+	1231, 1346, 1431, 1516, 1631, 1691, 1751, 1811, 
+	1926, 1981, 2036, 2151, 2266, 2351, 2436, 2496, 
+	2556, 2671, 2786, 2901, 2986, 3071, 3186, 3246, 
+	3361, 3476, 3531, 3586, 3665, 3744, 3823, 3938, 
+	3993, 3994, 3996, 4075, 4076, 4077, 4137, 4197, 
+	4257, 4317, 4372, 4427
 ]
 
 class &lt;&lt; self
@@ -185,55 +101,560 @@ class &lt;&lt; self
 	private :_parser_indicies, :_parser_indicies=
 end
 self._parser_indicies = [
-	2, 1, 1, 1, 1, 1, 1, 0, 
-	3, 3, 3, 3, 3, 3, 0, 4, 
-	6, 7, 5, 5, 4, 5, 5, 5, 
-	0, 8, 10, 11, 9, 9, 8, 9, 
-	9, 9, 0, 13, 15, 14, 14, 13, 
-	14, 14, 14, 14, 12, 16, 17, 16, 
-	12, 17, 18, 19, 17, 12, 21, 22, 
-	20, 24, 25, 23, 26, 28, 29, 27, 
-	27, 26, 27, 27, 27, 12, 30, 32, 
-	33, 31, 31, 30, 31, 31, 31, 12, 
-	34, 12, 35, 25, 23, 36, 24, 38, 
-	39, 37, 25, 37, 36, 37, 37, 37, 
-	23, 40, 24, 42, 43, 41, 25, 41, 
-	40, 41, 41, 41, 23, 44, 24, 46, 
-	45, 25, 45, 44, 45, 45, 45, 45, 
-	23, 47, 24, 48, 25, 47, 23, 48, 
-	49, 50, 25, 48, 23, 51, 21, 53, 
-	54, 52, 22, 52, 51, 52, 52, 52, 
-	20, 24, 55, 25, 23, 57, 58, 59, 
-	56, 61, 35, 62, 60, 64, 24, 66, 
-	67, 65, 68, 65, 64, 65, 65, 65, 
-	63, 24, 68, 63, 61, 68, 63, 69, 
-	24, 71, 72, 70, 68, 70, 69, 70, 
-	70, 70, 63, 73, 24, 75, 74, 68, 
-	74, 73, 74, 74, 74, 74, 63, 76, 
-	24, 77, 68, 76, 63, 77, 78, 79, 
-	68, 77, 63, 80, 58, 59, 56, 81, 
-	81, 62, 60, 82, 61, 35, 84, 85, 
-	83, 62, 83, 82, 83, 83, 83, 60, 
-	86, 61, 35, 88, 89, 87, 62, 87, 
-	86, 87, 87, 87, 60, 90, 61, 35, 
-	92, 91, 62, 91, 90, 91, 91, 91, 
-	91, 60, 93, 61, 35, 94, 62, 93, 
-	60, 94, 95, 96, 62, 94, 60, 97, 
-	80, 58, 99, 100, 98, 59, 98, 97, 
-	98, 98, 98, 56, 61, 35, 101, 62, 
-	60, 97, 57, 58, 99, 100, 98, 59, 
-	98, 97, 98, 98, 98, 56, 103, 21, 
-	105, 106, 104, 107, 104, 103, 104, 104, 
-	104, 102, 24, 108, 68, 63, 21, 107, 
-	102, 109, 109, 109, 109, 109, 109, 0, 
-	111, 110, 110, 110, 110, 110, 110, 0, 
+	1, 1, 0, 1, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 2, 0, 0, 
+	0, 0, 1, 0, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 1, 0, 0, 
+	0, 0, 1, 0, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 1, 1, 1, 
+	1, 1, 1, 1, 1, 1, 0, 3, 
+	3, 0, 3, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 0, 0, 0, 
+	0, 3, 0, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 0, 0, 0, 
+	0, 3, 0, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 3, 3, 3, 
+	3, 3, 3, 3, 3, 0, 4, 4, 
+	4, 4, 4, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 4, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 5, 5, 6, 5, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	0, 0, 0, 7, 5, 0, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	0, 0, 0, 0, 5, 0, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	5, 5, 5, 5, 5, 5, 5, 5, 
+	0, 8, 8, 8, 8, 8, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	8, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 9, 9, 10, 
+	9, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 0, 0, 0, 11, 9, 
+	0, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 0, 0, 0, 0, 9, 
+	0, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 9, 9, 9, 9, 9, 
+	9, 9, 9, 0, 13, 13, 13, 13, 
+	13, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 13, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	14, 14, 12, 14, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 12, 12, 
+	15, 12, 14, 12, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 12, 12, 
+	12, 12, 14, 12, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 14, 14, 
+	14, 14, 14, 14, 14, 14, 12, 16, 
+	16, 16, 16, 16, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 16, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 17, 12, 17, 17, 17, 
+	17, 17, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 17, 12, 18, 12, 
+	12, 12, 12, 19, 12, 21, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 22, 
+	20, 24, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 25, 23, 26, 26, 26, 
+	26, 26, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 26, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 27, 27, 28, 27, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 12, 
+	12, 12, 29, 27, 12, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 12, 
+	12, 12, 12, 27, 12, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 27, 
+	27, 27, 27, 27, 27, 27, 27, 12, 
+	30, 30, 30, 30, 30, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 12, 12, 12, 30, 
+	12, 12, 12, 12, 12, 12, 12, 12, 
+	12, 12, 12, 12, 31, 31, 32, 31, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 12, 12, 12, 33, 31, 12, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 12, 12, 12, 12, 31, 12, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 31, 31, 31, 31, 31, 31, 
+	31, 31, 12, 34, 12, 35, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 25, 
+	23, 36, 36, 36, 36, 36, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	36, 23, 24, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 37, 37, 38, 
+	37, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 23, 23, 23, 39, 37, 
+	23, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 23, 25, 23, 23, 37, 
+	23, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 37, 37, 37, 37, 37, 
+	37, 37, 37, 23, 40, 40, 40, 40, 
+	40, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 40, 23, 24, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	41, 41, 42, 41, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 23, 23, 
+	23, 43, 41, 23, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 23, 25, 
+	23, 23, 41, 23, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 41, 41, 
+	41, 41, 41, 41, 41, 41, 23, 44, 
+	44, 44, 44, 44, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 44, 23, 
+	24, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 45, 45, 23, 45, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 23, 23, 46, 23, 45, 23, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 23, 25, 23, 23, 45, 23, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 45, 45, 45, 45, 45, 45, 45, 
+	45, 23, 47, 47, 47, 47, 47, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 47, 23, 24, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 48, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 25, 23, 48, 
+	48, 48, 48, 48, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 48, 23, 
+	49, 23, 23, 23, 23, 50, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 25, 23, 51, 51, 51, 51, 
+	51, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	20, 20, 20, 51, 20, 21, 20, 20, 
+	20, 20, 20, 20, 20, 20, 20, 20, 
+	52, 52, 53, 52, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 20, 20, 
+	20, 54, 52, 20, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 20, 22, 
+	20, 20, 52, 20, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 52, 52, 
+	52, 52, 52, 52, 52, 52, 20, 24, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 55, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 25, 23, 57, 56, 56, 56, 56, 
+	58, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 59, 56, 61, 
+	60, 60, 60, 60, 35, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 62, 60, 64, 64, 64, 64, 64, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 64, 63, 63, 63, 63, 63, 
+	63, 24, 63, 63, 63, 63, 63, 65, 
+	65, 66, 65, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 63, 63, 63, 
+	67, 65, 63, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 63, 68, 63, 
+	63, 65, 63, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 65, 65, 65, 
+	65, 65, 65, 65, 65, 63, 24, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 68, 63, 61, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 68, 63, 69, 69, 69, 69, 
+	69, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 69, 63, 63, 63, 63, 
+	63, 63, 24, 63, 63, 63, 63, 63, 
+	70, 70, 71, 70, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 63, 63, 
+	63, 72, 70, 63, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 63, 68, 
+	63, 63, 70, 63, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 70, 70, 
+	70, 70, 70, 70, 70, 70, 63, 73, 
+	73, 73, 73, 73, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 73, 63, 
+	63, 63, 63, 63, 63, 24, 63, 63, 
+	63, 63, 63, 74, 74, 63, 74, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 63, 63, 75, 63, 74, 63, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 63, 68, 63, 63, 74, 63, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 74, 74, 74, 74, 74, 74, 74, 
+	74, 63, 76, 76, 76, 76, 76, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 76, 63, 63, 63, 63, 63, 63, 
+	24, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 77, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 68, 63, 77, 
+	77, 77, 77, 77, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 77, 63, 
+	78, 63, 63, 63, 63, 79, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 68, 63, 80, 56, 56, 56, 
+	56, 58, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 59, 56, 
+	81, 60, 60, 60, 60, 81, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 62, 60, 82, 82, 82, 82, 
+	82, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 82, 60, 61, 60, 60, 
+	60, 60, 35, 60, 60, 60, 60, 60, 
+	83, 83, 84, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 60, 60, 
+	60, 85, 83, 60, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 60, 62, 
+	60, 60, 83, 60, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 83, 83, 
+	83, 83, 83, 83, 83, 83, 60, 86, 
+	86, 86, 86, 86, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 86, 60, 
+	61, 60, 60, 60, 60, 35, 60, 60, 
+	60, 60, 60, 87, 87, 88, 87, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 60, 60, 60, 89, 87, 60, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 60, 62, 60, 60, 87, 60, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 87, 87, 87, 87, 87, 87, 87, 
+	87, 60, 90, 90, 90, 90, 90, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 90, 60, 61, 60, 60, 60, 60, 
+	35, 60, 60, 60, 60, 60, 91, 91, 
+	60, 91, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 60, 60, 92, 60, 
+	91, 60, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 60, 62, 60, 60, 
+	91, 60, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 91, 91, 91, 91, 
+	91, 91, 91, 91, 60, 93, 93, 93, 
+	93, 93, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 93, 60, 61, 60, 
+	60, 60, 60, 35, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 94, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	62, 60, 94, 94, 94, 94, 94, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 94, 60, 95, 60, 60, 60, 60, 
+	96, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 62, 60, 97, 
+	97, 97, 97, 97, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 97, 56, 
+	80, 56, 56, 56, 56, 58, 56, 56, 
+	56, 56, 56, 98, 98, 99, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 56, 56, 56, 100, 98, 56, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 56, 59, 56, 56, 98, 56, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 56, 61, 60, 60, 60, 60, 35, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 101, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 62, 60, 97, 97, 
+	97, 97, 97, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 56, 56, 56, 
+	56, 56, 56, 56, 56, 97, 56, 57, 
+	56, 56, 56, 56, 58, 56, 56, 56, 
+	56, 56, 98, 98, 99, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	56, 56, 56, 100, 98, 56, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	56, 59, 56, 56, 98, 56, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	98, 98, 98, 98, 98, 98, 98, 98, 
+	56, 103, 103, 103, 103, 103, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	103, 102, 102, 102, 102, 102, 102, 21, 
+	102, 102, 102, 102, 102, 104, 104, 105, 
+	104, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 102, 102, 102, 106, 104, 
+	102, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 102, 107, 102, 102, 104, 
+	102, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 104, 104, 104, 104, 104, 
+	104, 104, 104, 102, 24, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 108, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 68, 63, 21, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	102, 102, 102, 102, 102, 102, 102, 102, 
+	107, 102, 109, 109, 0, 109, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 0, 
+	0, 0, 0, 0, 109, 0, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 109, 
+	0, 0, 0, 0, 109, 0, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 109, 
+	109, 109, 109, 109, 109, 109, 109, 109, 
+	0, 110, 110, 0, 110, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 111, 0, 
+	0, 0, 0, 110, 0, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 110, 0, 
+	0, 0, 0, 110, 0, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 110, 110, 
+	110, 110, 110, 110, 110, 110, 110, 0, 
+	112, 112, 0, 112, 112, 112, 112, 112, 
+	112, 112, 112, 112, 112, 112, 0, 0, 
+	0, 0, 112, 0, 112, 112, 112, 112, 
+	112, 112, 112, 112, 112, 112, 112, 112, 
+	112, 112, 112, 112, 112, 112, 112, 112, 
+	112, 112, 112, 112, 112, 112, 0, 0, 
+	0, 0, 112, 0, 112, 112, 112, 112, 
+	112, 112, 112, 112, 112, 112, 112, 112, 
+	112, 112, 112, 112, 112, 112, 112, 112, 
 	112, 112, 112, 112, 112, 112, 0, 113, 
-	115, 114, 114, 113, 114, 114, 114, 114, 
-	0, 116, 117, 116, 0, 118, 120, 119, 
-	123, 122, 122, 122, 122, 122, 121, 124, 
-	125, 24, 25, 23, 24, 25, 23, 61, 
-	35, 62, 60, 61, 35, 62, 60, 24, 
-	68, 63, 24, 68, 63, 126, 0
+	113, 113, 113, 113, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 113, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 114, 114, 0, 114, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 0, 0, 0, 115, 114, 0, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 0, 0, 0, 0, 114, 0, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 114, 114, 114, 114, 114, 114, 114, 
+	114, 0, 116, 116, 116, 116, 116, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 116, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 0, 
+	0, 0, 0, 0, 0, 0, 0, 117, 
+	0, 118, 120, 119, 122, 122, 123, 122, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 121, 121, 121, 121, 121, 122, 121, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 122, 121, 121, 121, 121, 122, 121, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 122, 122, 122, 122, 122, 122, 122, 
+	122, 122, 121, 124, 125, 24, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 25, 
+	23, 24, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 23, 23, 23, 23, 23, 
+	23, 23, 23, 25, 23, 61, 60, 60, 
+	60, 60, 35, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 62, 
+	60, 61, 60, 60, 60, 60, 35, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 60, 60, 60, 60, 60, 
+	60, 60, 60, 62, 60, 24, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 68, 63, 24, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 63, 63, 63, 63, 63, 63, 63, 
+	63, 68, 63, 126, 0
 ]
 
 class &lt;&lt; self
@@ -264,22 +685,22 @@ class &lt;&lt; self
 	private :_parser_trans_actions, :_parser_trans_actions=
 end
 self._parser_trans_actions = [
-	29, 0, 3, 5, 7, 0, 7, 7, 
-	0, 13, 0, 0, 31, 15, 0, 15, 
-	0, 0, 0, 0, 17, 42, 17, 0, 
-	19, 0, 9, 63, 33, 33, 0, 36, 
-	11, 11, 0, 19, 9, 63, 33, 80, 
-	0, 36, 11, 71, 15, 0, 15, 0, 
-	0, 19, 0, 39, 75, 67, 85, 57, 
-	17, 45, 42, 17, 0, 19, 0, 0, 
-	9, 63, 33, 80, 0, 0, 36, 11, 
-	71, 15, 0, 15, 0, 0, 0, 19, 
-	42, 19, 9, 63, 33, 80, 0, 36, 
-	11, 71, 15, 0, 15, 0, 0, 19, 
-	19, 39, 75, 67, 85, 57, 17, 39, 
-	75, 67, 85, 17, 57, 1, 0, 3, 
-	5, 7, 0, 7, 0, 0, 0, 25, 
-	60, 27, 1, 0, 51, 48, 54
+	1, 0, 2, 3, 4, 0, 4, 4, 
+	0, 5, 0, 0, 6, 7, 0, 7, 
+	0, 0, 0, 0, 8, 9, 8, 0, 
+	10, 0, 11, 12, 13, 13, 0, 14, 
+	15, 15, 0, 10, 11, 12, 13, 16, 
+	0, 14, 15, 17, 7, 0, 7, 0, 
+	0, 10, 0, 18, 19, 20, 21, 22, 
+	8, 23, 9, 8, 0, 10, 0, 0, 
+	11, 12, 13, 16, 0, 0, 14, 15, 
+	17, 7, 0, 7, 0, 0, 0, 10, 
+	9, 10, 11, 12, 13, 16, 0, 14, 
+	15, 17, 7, 0, 7, 0, 0, 10, 
+	10, 18, 19, 20, 21, 22, 8, 18, 
+	19, 20, 21, 8, 22, 24, 0, 2, 
+	3, 4, 0, 4, 0, 0, 0, 27, 
+	28, 29, 24, 0, 30, 31, 32
 ]
 
 class &lt;&lt; self
@@ -293,7 +714,7 @@ self._parser_to_state_actions = [
 	0, 0, 0, 0, 0, 0, 0, 0, 
 	0, 0, 0, 0, 0, 0, 0, 0, 
 	0, 0, 0, 0, 0, 0, 0, 0, 
-	21, 21, 0, 0, 0, 0, 0, 0, 
+	25, 25, 0, 0, 0, 0, 0, 0, 
 	0, 0, 0, 0
 ]
 
@@ -308,7 +729,7 @@ self._parser_from_state_actions = [
 	0, 0, 0, 0, 0, 0, 0, 0, 
 	0, 0, 0, 0, 0, 0, 0, 0, 
 	0, 0, 0, 0, 0, 0, 0, 0, 
-	0, 23, 0, 0, 0, 0, 0, 0, 
+	0, 26, 0, 0, 0, 0, 0, 0, 
 	0, 0, 0, 0
 ]
 
@@ -349,10 +770,9 @@ class &lt;&lt; self
 end
 self.parser_en_main = 49;
 
-
 # line 118 &quot;scan.rl&quot;
       
-# line 356 &quot;scan.rb&quot;
+# line 776 &quot;scan.rb&quot;
 begin
 	p ||= 0
 	pe ||= data.length
@@ -361,12 +781,12 @@ begin
 	te = nil
 	act = 0
 end
-
 # line 119 &quot;scan.rl&quot;
       
-# line 368 &quot;scan.rb&quot;
+# line 787 &quot;scan.rb&quot;
 begin
-	_klen, _trans, _keys, _acts, _nacts = nil
+	testEof = false
+	_slen, _trans, _keys, _inds, _acts, _nacts = nil
 	_goto_level = 0
 	_resume = 10
 	_eof_trans = 15
@@ -374,7 +794,6 @@ begin
 	_test_eof = 30
 	_out = 40
 	while true
-	_trigger_goto = false
 	if _goto_level &lt;= 0
 	if p == pe
 		_goto_level = _test_eof
@@ -386,92 +805,37 @@ begin
 	end
 	end
 	if _goto_level &lt;= _resume
-	_acts = _parser_from_state_actions[cs]
-	_nacts = _parser_actions[_acts]
-	_acts += 1
-	while _nacts &gt; 0
-		_nacts -= 1
-		_acts += 1
-		case _parser_actions[_acts - 1]
-			when 14 then
+	case _parser_from_state_actions[cs] 
+	when 26 then
 # line 1 &quot;scan.rl&quot;
 		begin
 ts = p
 		end
 # line 1 &quot;scan.rl&quot;
-# line 403 &quot;scan.rb&quot;
-		end # from state action switch
-	end
-	if _trigger_goto
-		next
+# line 816 &quot;scan.rb&quot;
 	end
-	_keys = _parser_key_offsets[cs]
-	_trans = _parser_index_offsets[cs]
-	_klen = _parser_single_lengths[cs]
-	_break_match = false
-	
-	begin
-	  if _klen &gt; 0
-	     _lower = _keys
-	     _upper = _keys + _klen - 1
-
-	     loop do
-	        break if _upper &lt; _lower
-	        _mid = _lower + ( (_upper - _lower) &gt;&gt; 1 )
-
-	        if data[p] &lt; _parser_trans_keys[_mid]
-	           _upper = _mid - 1
-	        elsif data[p] &gt; _parser_trans_keys[_mid]
-	           _lower = _mid + 1
-	        else
-	           _trans += (_mid - _keys)
-	           _break_match = true
-	           break
-	        end
-	     end # loop
-	     break if _break_match
-	     _keys += _klen
-	     _trans += _klen
-	  end
-	  _klen = _parser_range_lengths[cs]
-	  if _klen &gt; 0
-	     _lower = _keys
-	     _upper = _keys + (_klen &lt;&lt; 1) - 2
-	     loop do
-	        break if _upper &lt; _lower
-	        _mid = _lower + (((_upper-_lower) &gt;&gt; 1) &amp; ~1)
-	        if data[p] &lt; _parser_trans_keys[_mid]
-	          _upper = _mid - 2
-	        elsif data[p] &gt; _parser_trans_keys[_mid+1]
-	          _lower = _mid + 2
-	        else
-	          _trans += ((_mid - _keys) &gt;&gt; 1)
-	          _break_match = true
-	          break
-	        end
-	     end # loop
-	     break if _break_match
-	     _trans += _klen
-	  end
-	end while false
-	_trans = _parser_indicies[_trans]
+	_keys = cs &lt;&lt; 1
+	_inds = _parser_index_offsets[cs]
+	_slen = _parser_key_spans[cs]
+	_trans = if (   _slen &gt; 0 &amp;&amp; 
+			_parser_trans_keys[_keys] &lt;= data[p] &amp;&amp; 
+			data[p] &lt;= _parser_trans_keys[_keys + 1] 
+		    ) then
+			_parser_indicies[ _inds + data[p] - _parser_trans_keys[_keys] ] 
+		 else 
+			_parser_indicies[ _inds + _slen ]
+		 end
 	end
 	if _goto_level &lt;= _eof_trans
 	cs = _parser_trans_targs[_trans]
 	if _parser_trans_actions[_trans] != 0
-		_acts = _parser_trans_actions[_trans]
-		_nacts = _parser_actions[_acts]
-		_acts += 1
-		while _nacts &gt; 0
-			_nacts -= 1
-			_acts += 1
-			case _parser_actions[_acts - 1]
-when 0 then
+	case _parser_trans_actions[_trans]
+	when 24 then
 # line 5 &quot;scan.rl&quot;
 		begin
  mark_pfx = p 		end
 # line 5 &quot;scan.rl&quot;
-when 1 then
+	when 2 then
 # line 6 &quot;scan.rl&quot;
 		begin
 
@@ -479,88 +843,56 @@ when 1 then
       @nodes.last &lt;&lt; data[mark_pfx-1..p]
 	    	begin
 		p += 1
-		_trigger_goto = true
 		_goto_level = _out
-		break
+		next
 	end
 
     end
 			end
 # line 6 &quot;scan.rl&quot;
-when 2 then
+	when 3 then
 # line 12 &quot;scan.rl&quot;
 		begin
  mark_stg = p 		end
 # line 12 &quot;scan.rl&quot;
-when 3 then
+	when 4 then
 # line 13 &quot;scan.rl&quot;
 		begin
  @starttag = data[mark_stg..p-1] 		end
 # line 13 &quot;scan.rl&quot;
-when 4 then
+	when 11 then
 # line 14 &quot;scan.rl&quot;
 		begin
  mark_attr = p 		end
 # line 14 &quot;scan.rl&quot;
-when 5 then
+	when 15 then
 # line 15 &quot;scan.rl&quot;
 		begin
 
 	  @attrs[@nat] = @vat 
 			end
 # line 15 &quot;scan.rl&quot;
-when 6 then
+	when 5 then
 # line 24 &quot;scan.rl&quot;
 		begin
  mark_nat = p 		end
 # line 24 &quot;scan.rl&quot;
-when 7 then
+	when 7 then
 # line 25 &quot;scan.rl&quot;
 		begin
  @nat = data[mark_nat..p-1] 		end
 # line 25 &quot;scan.rl&quot;
-when 8 then
+	when 8 then
 # line 26 &quot;scan.rl&quot;
 		begin
  mark_vat = p 		end
 # line 26 &quot;scan.rl&quot;
-when 9 then
+	when 10 then
 # line 27 &quot;scan.rl&quot;
 		begin
  @vat = data[mark_vat..p-1] 		end
 # line 27 &quot;scan.rl&quot;
-when 10 then
-# line 29 &quot;scan.rl&quot;
-		begin
- @flavor = :open 		end
-# line 29 &quot;scan.rl&quot;
-when 11 then
-# line 30 &quot;scan.rl&quot;
-		begin
- @flavor = :self 		end
-# line 30 &quot;scan.rl&quot;
-when 12 then
-# line 31 &quot;scan.rl&quot;
-		begin
- @flavor = :close 		end
-# line 31 &quot;scan.rl&quot;
-when 15 then
-# line 1 &quot;scan.rl&quot;
-		begin
-te = p+1
-		end
-# line 1 &quot;scan.rl&quot;
-when 16 then
-# line 69 &quot;scan.rl&quot;
-		begin
-act = 1;		end
-# line 69 &quot;scan.rl&quot;
-when 17 then
-# line 78 &quot;scan.rl&quot;
-		begin
-act = 2;		end
-# line 78 &quot;scan.rl&quot;
-when 18 then
+	when 27 then
 # line 78 &quot;scan.rl&quot;
 		begin
 te = p+1
@@ -570,28 +902,7 @@ te = p+1
 	   end
 		end
 # line 78 &quot;scan.rl&quot;
-when 19 then
-# line 69 &quot;scan.rl&quot;
-		begin
-te = p
-p = p - 1; begin 
-	    tag = {:prefix=&gt;@prefix, :name=&gt;@starttag, :flavor =&gt; @flavor, :attrs =&gt; @attrs}
-	    @prefix = nil
-	    @name = nil
-	    @flavor = :tasteless
-	    @attrs = {}
-	    @nodes &lt;&lt; tag &lt;&lt; ''
-      	begin
-		p += 1
-		_trigger_goto = true
-		_goto_level = _out
-		break
-	end
-
-	   end
-		end
-# line 69 &quot;scan.rl&quot;
-when 20 then
+	when 29 then
 # line 78 &quot;scan.rl&quot;
 		begin
 te = p
@@ -601,7 +912,7 @@ p = p - 1; begin
 	   end
 		end
 # line 78 &quot;scan.rl&quot;
-when 21 then
+	when 1 then
 # line 78 &quot;scan.rl&quot;
 		begin
  begin p = ((te))-1; end
@@ -611,7 +922,7 @@ when 21 then
 	   end
 		end
 # line 78 &quot;scan.rl&quot;
-when 22 then
+	when 6 then
 # line 1 &quot;scan.rl&quot;
 		begin
 	case act
@@ -626,9 +937,8 @@ when 22 then
 	    @nodes &lt;&lt; tag &lt;&lt; ''
       	begin
 		p += 1
-		_trigger_goto = true
 		_goto_level = _out
-		break
+		next
 	end
 
 	  end
@@ -641,33 +951,270 @@ when 22 then
 end 
 			end
 # line 1 &quot;scan.rl&quot;
-# line 645 &quot;scan.rb&quot;
-			end # action switch
+	when 13 then
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+	when 14 then
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+# line 24 &quot;scan.rl&quot;
+		begin
+ mark_nat = p 		end
+# line 24 &quot;scan.rl&quot;
+	when 18 then
+# line 26 &quot;scan.rl&quot;
+		begin
+ mark_vat = p 		end
+# line 26 &quot;scan.rl&quot;
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+	when 9 then
+# line 26 &quot;scan.rl&quot;
+		begin
+ mark_vat = p 		end
+# line 26 &quot;scan.rl&quot;
+# line 27 &quot;scan.rl&quot;
+		begin
+ @vat = data[mark_vat..p-1] 		end
+# line 27 &quot;scan.rl&quot;
+	when 23 then
+# line 27 &quot;scan.rl&quot;
+		begin
+ @vat = data[mark_vat..p-1] 		end
+# line 27 &quot;scan.rl&quot;
+# line 26 &quot;scan.rl&quot;
+		begin
+ mark_vat = p 		end
+# line 26 &quot;scan.rl&quot;
+	when 31 then
+# line 29 &quot;scan.rl&quot;
+		begin
+ @flavor = :open 		end
+# line 29 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+te = p
+p = p - 1; begin 
+	    tag = {:prefix=&gt;@prefix, :name=&gt;@starttag, :flavor =&gt; @flavor, :attrs =&gt; @attrs}
+	    @prefix = nil
+	    @name = nil
+	    @flavor = :tasteless
+	    @attrs = {}
+	    @nodes &lt;&lt; tag &lt;&lt; ''
+      	begin
+		p += 1
+		_goto_level = _out
+		next
+	end
+
+	   end
 		end
+# line 69 &quot;scan.rl&quot;
+	when 30 then
+# line 30 &quot;scan.rl&quot;
+		begin
+ @flavor = :self 		end
+# line 30 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+te = p
+p = p - 1; begin 
+	    tag = {:prefix=&gt;@prefix, :name=&gt;@starttag, :flavor =&gt; @flavor, :attrs =&gt; @attrs}
+	    @prefix = nil
+	    @name = nil
+	    @flavor = :tasteless
+	    @attrs = {}
+	    @nodes &lt;&lt; tag &lt;&lt; ''
+      	begin
+		p += 1
+		_goto_level = _out
+		next
 	end
-	if _trigger_goto
+
+	   end
+		end
+# line 69 &quot;scan.rl&quot;
+	when 32 then
+# line 31 &quot;scan.rl&quot;
+		begin
+ @flavor = :close 		end
+# line 31 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+te = p
+p = p - 1; begin 
+	    tag = {:prefix=&gt;@prefix, :name=&gt;@starttag, :flavor =&gt; @flavor, :attrs =&gt; @attrs}
+	    @prefix = nil
+	    @name = nil
+	    @flavor = :tasteless
+	    @attrs = {}
+	    @nodes &lt;&lt; tag &lt;&lt; ''
+      	begin
+		p += 1
+		_goto_level = _out
 		next
 	end
+
+	   end
+		end
+# line 69 &quot;scan.rl&quot;
+	when 22 then
+# line 1 &quot;scan.rl&quot;
+		begin
+te = p+1
+		end
+# line 1 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+act = 1;		end
+# line 69 &quot;scan.rl&quot;
+	when 28 then
+# line 1 &quot;scan.rl&quot;
+		begin
+te = p+1
+		end
+# line 1 &quot;scan.rl&quot;
+# line 78 &quot;scan.rl&quot;
+		begin
+act = 2;		end
+# line 78 &quot;scan.rl&quot;
+	when 12 then
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+# line 24 &quot;scan.rl&quot;
+		begin
+ mark_nat = p 		end
+# line 24 &quot;scan.rl&quot;
+	when 20 then
+# line 26 &quot;scan.rl&quot;
+		begin
+ mark_vat = p 		end
+# line 26 &quot;scan.rl&quot;
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+	when 17 then
+# line 1 &quot;scan.rl&quot;
+		begin
+te = p+1
+		end
+# line 1 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+act = 1;		end
+# line 69 &quot;scan.rl&quot;
+	when 19 then
+# line 26 &quot;scan.rl&quot;
+		begin
+ mark_vat = p 		end
+# line 26 &quot;scan.rl&quot;
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+# line 24 &quot;scan.rl&quot;
+		begin
+ mark_nat = p 		end
+# line 24 &quot;scan.rl&quot;
+	when 16 then
+# line 1 &quot;scan.rl&quot;
+		begin
+te = p+1
+		end
+# line 1 &quot;scan.rl&quot;
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+act = 1;		end
+# line 69 &quot;scan.rl&quot;
+	when 21 then
+# line 1 &quot;scan.rl&quot;
+		begin
+te = p+1
+		end
+# line 1 &quot;scan.rl&quot;
+# line 26 &quot;scan.rl&quot;
+		begin
+ mark_vat = p 		end
+# line 26 &quot;scan.rl&quot;
+# line 14 &quot;scan.rl&quot;
+		begin
+ mark_attr = p 		end
+# line 14 &quot;scan.rl&quot;
+# line 15 &quot;scan.rl&quot;
+		begin
+
+	  @attrs[@nat] = @vat 
+			end
+# line 15 &quot;scan.rl&quot;
+# line 69 &quot;scan.rl&quot;
+		begin
+act = 1;		end
+# line 69 &quot;scan.rl&quot;
+# line 1205 &quot;scan.rb&quot;
+	end
+	end
 	end
 	if _goto_level &lt;= _again
-	_acts = _parser_to_state_actions[cs]
-	_nacts = _parser_actions[_acts]
-	_acts += 1
-	while _nacts &gt; 0
-		_nacts -= 1
-		_acts += 1
-		case _parser_actions[_acts - 1]
-when 13 then
+	case _parser_to_state_actions[cs] 
+	when 25 then
 # line 1 &quot;scan.rl&quot;
 		begin
 ts = nil;		end
 # line 1 &quot;scan.rl&quot;
-# line 666 &quot;scan.rb&quot;
-		end # to state action switch
-	end
-	if _trigger_goto
-		next
+# line 1216 &quot;scan.rb&quot;
 	end
+
 	if cs == 0
 		_goto_level = _out
 		next
@@ -685,14 +1232,14 @@ ts = nil;		end
 		_goto_level = _eof_trans
 		next;
 	end
-end
+	end
+
 	end
 	if _goto_level &lt;= _out
 		break
 	end
+end
 	end
-	end
-
 # line 120 &quot;scan.rl&quot;
       return p
     end</diff>
      <filename>vendor/radius/lib/radius/parser/scan.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ namespace :scan do
   desc 'turn the scan.rl file into a ruby file'
   file 'lib/radius/parser/scan.rb' =&gt; ['lib/radius/parser/scan.rl'] do |t|
     cd 'lib/radius/parser' do
-      sh &quot;ragel -R scan.rl&quot;
+      sh &quot;ragel -R -F1 scan.rl&quot;
     end
   end
 </diff>
      <filename>vendor/radius/tasks/scan.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>600eeba32fda7ca736d623041f88f0c784f2ec14</id>
    </parent>
  </parents>
  <author>
    <name>Jason Garber</name>
    <email>jg@jasongarber.com</email>
  </author>
  <url>http://github.com/radiant/radiant/commit/401cb538e2695412e169b2e8d053847512bb71a2</url>
  <id>401cb538e2695412e169b2e8d053847512bb71a2</id>
  <committed-date>2009-10-19T12:54:48-07:00</committed-date>
  <authored-date>2009-10-19T12:53:13-07:00</authored-date>
  <message>Use a different code generation style for a 10% speed improvement in Radius parsing. 15k more generated code, though.</message>
  <tree>8f05b540a84eac7dbc3fa0e36fb35844d37fc683</tree>
  <committer>
    <name>Jason Garber</name>
    <email>jg@jasongarber.com</email>
  </committer>
</commit>
