Define proper operator precedence for bitwise/logical operators
This is an upstream port for the patch https://github.com/decaffeinate/coffeescript/pull/8
See https://github.com/decaffeinate/decaffeinate/issues/291 for the bug that this fixed.
For the most part, CoffeeScript and JavaScript have the same precedence rules,
but in some cases, the intermediate AST format didn't represent the actual
evaluation order. For example, in the expression `a or b and c`, the `and` is
evaluated first, but the parser treated the two operators with equal precedence.
This was still correct end-to-end because CoffeeScript simply emitted the result
without parens, but any intermediate tools using the CoffeeScript parser could
become confused.
Here are the JS operator precedence rules:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
For the most part, CoffeeScript already follows these. `COMPARE` operators
already behave differently due to chained comparisons, so I think we don't need
to worry about following JS precedence for those. So I think the only case where
it was behaving differently in an important way was for the binary/bitwise
operators that are being changed here.
As part of this change, I also introduced a new token tag, `BIN?`, for the
binary form of the `?` operator.
2016-10-09 15:00:38 -04:00
var o = function ( k , v , o , l ) { for ( o = o || { } , l = k . length ; l -- ; o [ k [ l ] ] = v ) ; return o } , $V0 = [ 1 , 22 ] , $V1 = [ 1 , 25 ] , $V2 = [ 1 , 83 ] , $V3 = [ 1 , 79 ] , $V4 = [ 1 , 84 ] , $V5 = [ 1 , 85 ] , $V6 = [ 1 , 81 ] , $V7 = [ 1 , 82 ] , $V8 = [ 1 , 56 ] , $V9 = [ 1 , 58 ] , $Va = [ 1 , 59 ] , $Vb = [ 1 , 60 ] , $Vc = [ 1 , 61 ] , $Vd = [ 1 , 62 ] , $Ve = [ 1 , 49 ] , $Vf = [ 1 , 50 ] , $Vg = [ 1 , 32 ] , $Vh = [ 1 , 68 ] , $Vi = [ 1 , 69 ] , $Vj = [ 1 , 78 ] , $Vk = [ 1 , 47 ] , $Vl = [ 1 , 51 ] , $Vm = [ 1 , 52 ] , $Vn = [ 1 , 67 ] , $Vo = [ 1 , 65 ] , $Vp = [ 1 , 66 ] , $Vq = [ 1 , 64 ] , $Vr = [ 1 , 42 ] , $Vs = [ 1 , 48 ] , $Vt = [ 1 , 63 ] , $Vu = [ 1 , 73 ] , $Vv = [ 1 , 74 ] , $Vw = [ 1 , 75 ] , $Vx = [ 1 , 76 ] , $Vy = [ 1 , 46 ] , $Vz = [ 1 , 72 ] , $VA = [ 1 , 34 ] , $VB = [ 1 , 35 ] , $VC = [ 1 , 36 ] , $VD = [ 1 , 37 ] , $VE = [ 1 , 38 ] , $VF = [ 1 , 39 ] , $VG = [ 1 , 86 ] , $VH = [ 1 , 6 , 32 , 42 , 131 ] , $VI = [ 1 , 101 ] , $VJ = [ 1 , 89 ] , $VK = [ 1 , 88 ] , $VL = [ 1 , 87 ] , $VM = [ 1 , 90 ] , $VN = [ 1 , 91 ] , $VO = [ 1 , 92 ] , $VP = [ 1 , 93 ] , $VQ = [ 1 , 94 ] , $VR = [ 1 , 95 ] , $VS = [ 1 , 96 ] , $VT = [ 1 , 97 ] , $VU = [ 1 , 98 ] , $VV = [ 1 , 99 ] , $VW = [ 1 , 100 ] , $VX = [ 1 , 104 ] , $VY = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $VZ = [ 1 , 110 ] , $V _ = [ 1 , 111 ] , $V$ = [ 1 , 112 ] , $V01 = [ 1 , 113 ] , $V11 = [ 1 , 115 ] , $V21 = [ 1 , 116 ] , $V31 = [ 1 , 109 ] , $V41 = [ 2 , 161 ] , $V51 = [ 1 , 6 , 32 , 42 , 131 , 133 , 135 , 139 , 155 ] , $V61 = [ 2 , 27 ] , $V71 = [ 1 , 123 ] , $V81 = [ 1 , 121 ] , $V91 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $Va1 = [ 2 , 94 ] , $Vb1 = [ 1 , 6 , 31 , 32 , 42 , 46 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $Vc1 = [ 2 , 73 ] , $Vd1 = [ 1 , 128 ] , $Ve1 = [ 1 , 133 ] , $Vf1 = [ 1 , 134 ] , $Vg1 = [ 1 , 136 ] , $Vh1 = [ 1 , 6 , 31 , 32 , 42 , 55 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $Vi1 = [ 2 , 91 ] , $Vj1 = [ 1 , 6 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $Vk1 = [ 2 , 63 ] , $Vl1 = [ 1 , 166 ] , $Vm1 = [ 1 , 178 ] , $Vn1 = [ 1 , 180 ] , $Vo1 = [ 1 , 175 ] , $Vp1 = [ 1 , 182 ] , $Vq1 = [ 1 , 184 ] , $Vr1 = [ 1 , 6 , 31 , 32 , 42 , 55 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 96 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 ] , $Vs1 = [ 2 , 110 ] , $Vt1 = [ 1 , 6 , 31 , 32 , 42 , 58 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $Vu1 = [ 1 , 239 ] , $Vv1 = [ 1 , 238 ] , $Vw1 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 ] , $Vx1 = [ 2 , 71 ] , $Vy1 = [ 1 , 248 ] , $Vz1 = [ 6 , 31 , 32 , 65 , 70 ] , $VA1 = [ 6 , 31 , 32 , 55 , 65 , 70 , 73 ] , $VB1 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 163 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $VC1 = [ 82 , 83 , 84 , 85 , 87 , 90 , 113 , 114 ] , $VD1 = [ 1 , 267 ] , $VE1 = [ 2 , 62 ] , $VF1 = [ 1 , 277 ] , $VG1 = [ 1 , 283 ] , $VH1 = [ 2 , 182 ] , $VI1 = [ 1 , 6 , 31 , 32 , 42 , 55 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 146 , 147 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $VJ1 = [ 1 , 293 ] , $VK1 = [ 6 , 31 , 32 , 70 , 115 , 120 ] , $VL1 = [ 1 , 6 , 31 , 32 , 42 , 55 , 58 , 65 , 70 , 73 , 82 , 83 , 84 , 85 , 87 , 89 , 90 , 94 , 96 , 113 , 114 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 146 , 147 , 155 , 158 , 159 , 160 , 161 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 , 174 ] , $VM1 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 140 , 155 ] , $VN1 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 134 , 140 , 155 ] , $VO1 = [ 146 , 147 ] , $VP1 = [ 70 , 146 , 147 ] , $VQ1 = [ 6 , 31 , 94 ] , $VR1 = [ 1 , 306 ] , $VS1 = [ 6 , 31 , 32 , 70 , 94 ] , $VT1 = [ 6 , 31 , 32 , 58 , 70 , 94 ] , $VU1 = [ 6 , 31 , 32 , 55 , 58 , 70 , 94 ] , $VV1 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 155 , 158 , 159 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $VW1 = [ 12 , 28 , 34 , 38 , 40 , 41 , 44 , 45 , 48 , 49 , 50 , 51 , 52 , 53 , 61 , 62 , 63 , 67 , 68 , 89 , 92 , 95 , 97 , 104 , 112 , 117 , 118 , 119 , 125 , 129 , 130 , 133 , 135 , 137 , 139 , 148 , 154 , 156 , 157 , 158 , 159 , 160 , 161 ] , $VX1 = [ 2 , 171 ] , $VY1 = [ 6 , 31 , 32 ] , $VZ1 = [ 2 , 72 ] , $V _1 = [ 1 , 318 ] , $V$1 = [ 1 , 319 ] , $V02 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 127 , 128 , 131 , 133 , 134 , 135 , 139 , 140 , 150 , 152 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $V12 = [ 32 , 150 , 152 ] , $V22 = [ 1 , 6 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 134 , 140 , 155 ] , $V32 = [ 1 , 345 ] , $V42 = [ 1 , 350 ] , $V52 = [ 1 , 6 , 32 , 42 , 131 , 155 ] , $V62 = [ 2 , 86 ] , $V72 = [ 1 , 360 ] , $V82 = [ 1 , 361 ] , $V92 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 134 , 135 , 139 , 140 , 150 , 155 , 158 , 159 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $Va2 = [ 1 , 6 , 31 , 32 , 42 , 65 , 70 , 73 , 89 , 94 , 115 , 120 , 122 , 131 , 133 , 135 , 139 , 140 , 155 ] , $Vb2 = [ 1 , 373
productions _ : [ 0 , [ 3 , 0 ] , [ 3 , 1 ] , [ 4 , 1 ] , [ 4 , 3 ] , [ 4 , 2 ] , [ 5 , 1 ] , [ 5 , 1 ] , [ 5 , 1 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 8 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 7 , 1 ] , [ 27 , 1 ] , [ 27 , 2 ] , [ 27 , 3 ] , [ 30 , 2 ] , [ 30 , 3 ] , [ 33 , 1 ] , [ 35 , 1 ] , [ 37 , 1 ] , [ 37 , 1 ] , [ 39 , 1 ] , [ 39 , 3 ] , [ 43 , 1 ] , [ 43 , 3 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 47 , 1 ] , [ 19 , 3 ] , [ 19 , 4 ] , [ 19 , 5 ] , [ 56 , 1 ] , [ 56 , 3 ] , [ 56 , 5 ] , [ 56 , 3 ] , [ 56 , 5 ] , [ 56 , 1 ] , [ 59 , 1 ] , [ 59 , 1 ] , [ 59 , 1 ] , [ 57 , 1 ] , [ 57 , 1 ] , [ 10 , 2 ] , [ 10 , 1 ] , [ 9 , 3 ] , [ 9 , 2 ] , [ 11 , 1 ] , [ 17 , 5 ] , [ 17 , 2 ] , [ 66 , 1 ] , [ 66 , 1 ] , [ 69 , 0 ] , [ 69 , 1 ] , [ 64 , 0 ] , [ 64 , 1 ] , [ 64 , 3 ] , [ 64 , 4 ] , [ 64 , 6 ] , [ 71 , 1 ] , [ 71 , 2 ] , [ 71 , 3 ] , [ 71 , 1 ] , [ 72 , 1 ] , [ 72 , 1 ] , [ 72 , 1 ] , [ 72 , 1 ] , [ 76 , 2 ] , [ 77 , 1 ] , [ 77 , 2 ] , [ 77 , 2 ] , [ 77 , 1 ] , [ 54 , 1 ] , [ 54 , 1 ] , [ 54 , 1 ] , [ 15 , 1 ] , [ 15 , 1 ] , [ 15 , 1 ] , [ 15 , 1 ] , [ 15 , 1 ] , [ 78 , 2 ] , [ 78 , 2 ] , [ 78 , 2 ] , [ 78 , 2 ] , [ 78 , 1 ] , [ 78 , 1 ] , [ 86 , 3 ] , [ 86 , 2 ] , [ 88 , 1 ] , [ 88 , 1 ] , [ 75 , 4 ] , [ 93 , 0 ] , [ 93 , 1 ] , [ 93 , 3 ] , [ 93 , 4 ] , [ 93 , 6 ] , [ 25 , 1 ] , [ 25 , 2 ] , [ 25 , 3 ] , [ 25 , 4 ] , [ 25 , 2 ] , [ 25 , 3 ] , [ 25 , 4 ] , [ 25 , 5 ] , [ 13 , 2 ] , [ 13 , 4 ] , [ 13 , 4 ] , [ 13 , 5 ] , [ 13 , 7 ] , [ 13 , 6 ] , [ 13 , 9 ] , [ 100 , 1 ] , [ 100 , 3 ] , [ 100 , 4 ] , [ 100 , 4 ] , [ 100 , 6 ] , [ 101 , 1 ] , [ 101 , 3 ] , [ 98 , 1 ] , [ 99 , 3 ] , [ 14 , 3 ] , [ 14 , 5 ] , [ 14 , 2 ] , [ 14 , 4 ] , [ 14 , 5 ] , [ 14 , 6 ] , [ 14 , 3 ] , [ 14 , 4 ] , [ 14 , 7 ] , [ 105 , 1 ] , [ 105 , 3 ] , [ 105 , 4 ] , [ 105 , 4 ] , [ 105 , 6 ] , [ 108 , 1 ] , [ 108 , 3 ] , [ 108 , 3 ] , [ 16 , 3 ] , [ 16 , 3 ] , [ 16 , 1 ] , [ 111 , 1 ] , [ 111 , 2 ] , [ 109 , 0 ] , [ 109 , 1 ] , [ 110 , 2 ] , [ 110 , 4 ] , [ 81 , 1 ] , [ 81 , 1 ] , [ 60 , 2 ] , [ 74 , 2 ] , [ 74 , 4 ] , [ 121 , 1 ] , [ 121 , 1 ] , [ 80 , 5 ] , [ 91 , 3 ] , [ 91 , 2 ] , [ 91 , 2 ] , [ 91 , 1 ] , [ 116 , 1 ] , [ 116 , 3 ] , [ 116 , 4 ] , [ 116 , 4 ] , [ 116 , 6 ] , [ 123 , 1 ] , [ 123 , 1 ] , [ 123 , 1 ] , [ 124 , 1 ] , [ 124 , 3 ] , [ 21 , 2 ] , [ 21 , 3 ] , [ 21 , 4 ] , [ 21 , 5 ] , [ 126 , 3 ] , [ 126 , 3 ] , [ 126 , 2 ] , [ 26 , 2 ] , [ 79 , 3 ] , [ 79 , 5 ] , [ 132 , 2 ] , [ 132 , 4 ] , [ 132 , 2 ] , [ 132 , 4 ] , [ 22 , 2 ] , [ 22 , 2 ] , [ 22 , 2 ] , [ 22 , 1 ] , [ 136 , 2 ] , [ 136 , 2 ] , [ 23 , 2 ] , [ 23 , 2 ] , [ 23 , 2 ] , [ 138 , 2 ] , [ 138 , 4 ] , [ 138 , 2 ] , [ 141 , 2 ] , [ 141 , 3 ] , [ 145 , 1 ] , [ 145 , 1 ] , [ 145 , 1 ] , [ 145 , 1 ] , [ 143 , 1 ] , [ 143 , 3 ] , [ 142 , 2 ] , [ 142 , 2 ] , [ 142 , 4 ] , [ 142 , 4 ] , [ 142 , 4 ] , [ 142 , 6 ] , [ 142 , 6 ] , [ 24 , 5 ] , [ 24 , 7 ] , [ 24 , 4 ] , [ 24 , 6 ] , [ 149 , 1 ] , [ 149 , 2 ] , [ 151 , 3 ] , [ 151 , 4 ] , [ 153 , 3 ] , [ 153 , 5 ] , [ 20 , 1 ] , [ 20 , 3 ] , [ 20 , 3 ] , [ 20 , 3 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 2 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 3 ] , [ 18 , 5 ] , [ 18 , 4 ] , [ 18 , 3 ] ] ,
Define proper operator precedence for bitwise/logical operators
This is an upstream port for the patch https://github.com/decaffeinate/coffeescript/pull/8
See https://github.com/decaffeinate/decaffeinate/issues/291 for the bug that this fixed.
For the most part, CoffeeScript and JavaScript have the same precedence rules,
but in some cases, the intermediate AST format didn't represent the actual
evaluation order. For example, in the expression `a or b and c`, the `and` is
evaluated first, but the parser treated the two operators with equal precedence.
This was still correct end-to-end because CoffeeScript simply emitted the result
without parens, but any intermediate tools using the CoffeeScript parser could
become confused.
Here are the JS operator precedence rules:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
For the most part, CoffeeScript already follows these. `COMPARE` operators
already behave differently due to chained comparisons, so I think we don't need
to worry about following JS precedence for those. So I think the only case where
it was behaving differently in an important way was for the binary/bitwise
operators that are being changed here.
As part of this change, I also introduced a new token tag, `BIN?`, for the
binary form of the `?` operator.
2016-10-09 15:00:38 -04:00
table : [ { 1 : [ 2 , 1 ] , 3 : 1 , 4 : 2 , 5 : 3 , 7 : 4 , 8 : 5 , 9 : 6 , 10 : 20 , 11 : 21 , 12 : $V0 , 13 : 23 , 14 : 24 , 15 : 7 , 16 : 8 , 17 : 9 , 18 : 10 , 19 : 11 , 20 : 12 , 21 : 13 , 22 : 14 , 23 : 15 , 24 : 16 , 25 : 17 , 26 : 18 , 27 : 19 , 28 : $V1 , 33 : 70 , 34 : $V2 , 37 : 55 , 38 : $V3 , 39 : 80 , 40 : $V4 , 41 : $V5 , 43 : 57 , 44 : $V6 , 45 : $V7 , 47 : 27 , 48 : $V8 , 49 : $V9 , 50 : $Va , 51 : $Vb , 52 : $Vc , 53 : $Vd , 54 : 26 , 60 : 71 , 61 : $Ve , 62 : $Vf , 63 : $Vg , 66 : 33 , 67 : $Vh , 68 : $Vi , 74 : 53 , 75 : 54 , 77 : 40 , 79 : 28 , 80 : 29 , 81 : 30 , 92 : $Vj , 95 : $Vk , 97 : $Vl , 104 : $Vm , 111 : 31 , 112 : $Vn , 117 : $Vo , 118 : $Vp , 119 : $Vq , 125 : $Vr , 129 : $Vs , 130 : $Vt , 132 : 43 , 133 : $Vu , 135 : $Vv , 136 : 44 , 137 : $Vw , 138 : 45 , 139 : $Vx , 141 : 77 , 148 : $Vy , 153 : 41 , 154 : $Vz , 156 : $VA , 157 : $VB , 158 : $VC , 159 : $VD , 160 : $VE , 161 : $VF } , { 1 : [ 3 ] } , { 1 : [ 2 , 2 ] , 6 : $VG } , o ( $VH , [ 2 , 3 ] ) , o ( $VH , [ 2 , 6 ] , { 141 : 77 , 132 : 102 , 138 : 103 , 133 : $Vu , 135 : $Vv , 139 : $Vx , 155 : $VI , 158 : $VJ , 159 : $VK , 162 : $VL , 163 : $VM , 164 : $VN , 165 : $VO , 166 : $VP , 167 : $VQ , 168 : $VR , 169 : $VS , 170 : $VT , 171 : $VU , 172 : $VV , 173 : $VW } ) , o ( $VH , [ 2 , 7 ] , { 141 : 77 , 132 : 105 , 138 : 106 , 133 : $Vu , 135 : $Vv , 139 : $Vx , 155 : $VX } ) , o ( $VH , [ 2 , 8 ] ) , o ( $VY , [ 2 , 14 ] , { 109 : 107 , 78 : 108 , 86 : 114 , 82 : $VZ , 83 : $V _ , 84 : $V$ , 85 : $V01 , 87 : $V11 , 90 : $V21 , 113 : $V31 , 114 : $V41 } ) , o ( $VY , [ 2 , 15 ] , { 86 : 114 , 109 : 117 , 78 : 118 , 82 : $VZ , 83 : $V _ , 84 : $V$ , 85 : $V01 , 87 : $V11 , 90 : $V21 , 113 : $V31 , 114 : $V41 } ) , o ( $VY , [ 2 , 16 ] ) , o ( $VY , [ 2 , 17 ] ) , o ( $VY , [ 2 , 18 ] ) , o ( $VY , [ 2 , 19 ] ) , o ( $VY , [ 2 , 20 ] ) , o ( $VY , [ 2 , 21 ] ) , o ( $VY , [ 2 , 22 ] ) , o ( $VY , [ 2 , 23 ] ) , o ( $VY , [ 2 , 24 ] ) , o ( $VY , [ 2 , 25 ] ) , o ( $VY , [ 2 , 26 ] ) , o ( $V51 , [ 2 , 9 ] ) , o ( $V51 , [ 2 , 10 ] ) , o ( $V51 , [ 2 , 11 ] ) , o ( $V51 , [ 2 , 12 ] ) , o ( $V51 , [ 2 , 13 ] ) , o ( [ 1 , 6 , 32 , 42 , 131 , 133 , 135 , 139 , 155 , 162 , 163 , 164 , 165 , 166 , 167 , 168 , 169 , 170 , 171 , 172 , 173 ] , $V61 , { 15 : 7 , 16 : 8 , 17 : 9 , 18 : 10 , 19 : 11 , 20 : 12 , 21 : 13 , 22 : 14 , 23 : 15 , 24 : 16 , 25 : 17 , 26 : 18 , 27 : 19 , 10 : 20 , 11 : 21 , 13 : 23 , 14 : 24 , 54 : 26 , 47 : 27 , 79 : 28 , 80 : 29 , 81 : 30 , 111 : 31 , 66 : 33 , 77 : 40 , 153 : 41 , 132 : 43 , 136 : 44 , 138 : 45 , 74 : 53 , 75 : 54 , 37 : 55 , 43 : 57 , 33 : 70 , 60 : 71 , 141 : 77 , 39 : 80 , 7 : 120 , 8 : 122 , 12 : $V0 , 28 : $V71 , 29 : $V81 , 34 : $V2 , 38 : $V3 , 40 : $V4 , 41 : $V5 , 44 : $V6 , 45 : $V7 , 48 : $V8 , 49 : $V9 , 50 : $Va , 51 : $Vb , 52 : $Vc , 53 : $Vd , 61 : [ 1 , 119 ] , 62 : $Vf , 63 : $Vg , 67 : $Vh , 68 : $Vi , 92 : $Vj , 95 : $Vk , 97 : $Vl , 104 : $Vm , 112 : $Vn , 117 : $Vo , 118 : $Vp , 119 : $Vq , 125 : $Vr , 129 : $Vs , 130 : $Vt , 137 : $Vw , 148 : $Vy , 154 : $Vz , 156 : $VA , 157 : $VB , 158 : $VC , 159 : $VD , 160 : $VE , 161 : $VF } ) , o ( $V91 , $Va1 , { 55 : [ 1 , 124 ] } ) , o ( $V91 , [ 2 , 95 ] ) , o ( $V91 , [ 2 , 96 ] ) , o ( $V91 , [ 2 , 97 ] ) , o ( $V91 , [ 2 , 98 ] ) , o ( $Vb1 , [ 2 , 158 ] ) , o ( [ 6 , 31 , 65 , 70 ] , $Vc1 , { 64 : 125 , 71 : 126 , 72 : 127 , 33 : 129 , 60 : 130 , 74 : 131 , 75 : 132 , 34 : $V2 , 73 : $Vd1 , 92 : $Vj , 118 : $Ve1 , 119 : $Vf1 } ) , { 30 : 135 , 31 : $Vg1 } , { 7 : 137 , 8 : 122 , 10 : 20 , 11 : 21 , 12 : $V0 , 13 : 23 , 14 : 24 , 15 : 7 , 16 : 8 , 17 : 9 , 18 : 10 , 19 : 11 , 20 : 12 , 21 : 13 , 22 : 14 , 23 : 15 , 24 : 16 , 25 : 17 , 26 : 18 , 27 : 19 , 28 : $V71 , 33 : 70 , 34 : $V2 , 37 : 55 , 38 : $V3 , 39 : 80 , 40 : $V4 , 41 : $V5 , 43 : 57 , 44 : $V6 , 45 : $V7 , 47 : 27 , 48 : $V8 , 49 : $V9 , 50 : $Va , 51 : $Vb , 52 : $Vc , 53 : $Vd , 54 : 26 , 60 : 71 , 61 : $Ve , 62 : $Vf , 63 : $Vg , 66 : 33 , 67 : $Vh , 68 : $Vi , 74 : 53 , 75 : 54 , 77 : 40 , 79 : 28 , 80 : 29 , 81 : 30 , 92 : $Vj , 95 : $Vk , 97 : $Vl , 104 : $Vm , 111 : 31 , 112 : $Vn , 117 : $Vo , 118 : $Vp , 119 : $Vq , 125 : $Vr , 129 : $Vs , 130 : $Vt , 132 : 43 , 133 : $Vu , 135 : $Vv , 136 : 44 , 137 : $Vw , 138 : 45 , 139 : $Vx , 141 : 77 , 148 : $Vy , 153 : 41 , 154 : $Vz , 156 : $VA , 157 : $VB , 158 : $VC , 159 : $VD , 160 : $VE , 161 : $VF } , { 7 : 138 , 8 : 122 , 10 : 20 , 11 : 21 , 12 : $V0 , 13 : 23 , 14 : 24 , 15 : 7 , 16 : 8 , 17 : 9 , 18 : 10 , 19 : 11 , 20 : 12 , 21 : 13 , 22 : 14 , 23 : 15 , 24 : 16 , 25 : 17 , 26 : 18 , 27 : 19 , 28 : $V71 , 33 : 70 , 34 : $V2 , 37 : 55 , 38 : $V3 , 39 : 80 , 40 : $V4 , 41 : $V5 , 43 : 57 , 44 : $V6 , 45 : $V7 , 47 : 27 , 48 : $V8 , 49 : $V9 , 50 : $Va , 51 : $Vb , 52 : $Vc , 53 : $Vd , 54 : 26 , 60 : 71 , 61 : $Ve , 62 : $Vf , 63 : $Vg , 66 : 33 , 67 : $Vh , 68 : $Vi , 74 : 53 , 75 : 54 , 77 : 40 , 79 : 28 , 80 : 29 , 81 : 30 , 92 : $Vj , 95 : $Vk , 97 : $Vl , 104 : $Vm , 111 : 31 , 112 : $Vn , 117 : $Vo , 118 : $Vp , 119 : $Vq , 125 : $Vr , 129 : $Vs , 130 : $Vt , 132 : 43 , 133 : $Vu , 135 : $Vv , 136 : 44 , 137 : $Vw , 138 : 45 , 139 : $Vx , 141 : 77 , 148 : $Vy , 153 : 41 , 154 : $Vz , 156 : $VA , 157 : $VB , 158 : $VC , 159 : $VD , 160 : $VE , 161 : $VF } , { 7 : 139 , 8 : 122 , 10 : 20 , 11 : 21 , 12 : $V0 , 13 : 23 , 14 : 24 , 15 : 7 , 16 : 8 , 17 : 9 , 18 : 10 , 19 : 11 , 20 : 12 , 21 : 13 , 22 : 14 , 23 : 15 , 24 : 16 , 25 : 17 , 26 : 18 , 27 : 19 , 28 : $V71 , 33 : 70 , 34 : $V2 , 37 : 55 , 38 : $V3 , 39 : 80 , 40 : $V4 , 41 : $V5 , 43 : 57 , 44 : $V6 , 45 : $V7 , 47 : 27 , 48 : $V8 , 49 : $V9 , 50 : $Va , 51 : $Vb , 52 : $Vc , 53 : $Vd , 54 : 26 , 60 : 71 , 61 : $Ve , 62 : $Vf , 63 : $Vg , 66 : 33 , 67 : $Vh , 68 : $Vi , 74 : 53 , 75 : 54 , 77 : 40 , 79 : 28 , 80 : 29 , 81 : 30 , 92 : $Vj , 95 : $Vk , 97 : $Vl , 104 : $Vm , 111 : 31 , 112 : $Vn , 117 : $Vo , 118 : $Vp , 119 : $Vq , 125 : $Vr , 129 : $Vs , 130 : $Vt , 132 : 43 , 133 : $Vu , 135 : $Vv , 136 : 44 , 137 : $Vw , 138 : 45 , 139 : $Vx , 141 : 77 , 148 : $Vy , 153 : 41 , 154 : $Vz , 156 : $VA , 157 : $VB , 158 : $VC , 159 : $VD , 160 : $VE , 161 : $VF } , { 7 : 140 , 8 : 122 , 10 : 20 , 11 : 21 , 12 : $V0 , 13 : 23 , 14 : 24 , 15 : 7 , 16 : 8 , 17 : 9 , 18 : 10 , 19 : 11 , 20 : 12 , 21 : 13 , 22 : 14 , 23 : 15 , 24 : 16 , 25 : 17 , 26 : 18 , 27 : 19 , 28 : $V71 , 33 : 70 , 34 : $V2 , 37 : 55 , 38 : $V3 , 39 : 80 , 40 : $V4 , 41 : $V5 , 43 : 57 , 44 : $V6 , 45 : $V7 , 47 : 27 , 48 : $V8 , 49 : $V9 , 50 : $Va , 51 : $Vb , 52 : $Vc , 53 : $Vd , 54 : 26 , 60 : 71 , 61 : $Ve