diff --git a/data/pc/1.20.2/recipes.json b/data/pc/1.20.2/recipes.json index f4c84d377..8fdce7139 100644 --- a/data/pc/1.20.2/recipes.json +++ b/data/pc/1.20.2/recipes.json @@ -18,9 +18,10 @@ { "inShape": [ [ - 630, - 630, - null + 630 + ], + [ + 630 ] ], "result": { @@ -33,14 +34,12 @@ { "inShape": [ [ - 129, 129, 129 ], [ 129, - null, - null + 129 ] ], "result": { @@ -73,8 +72,12 @@ { "inShape": [ [ - 762, - 807, + 762 + ], + [ + 807 + ], + [ 304 ] ], @@ -322,8 +325,7 @@ "inShape": [ [ 33, - 33, - null + 33 ] ], "result": { @@ -627,12 +629,14 @@ { "inShape": [ [ - 29, 29, 29 ], [ 29, + 29 + ], + [ 29, 29 ] @@ -647,14 +651,12 @@ { "inShape": [ [ - 112, 112, 112 ], [ 112, - null, - null + 112 ] ], "result": { @@ -717,9 +719,10 @@ { "inShape": [ [ - 238, - 238, - null + 238 + ], + [ + 238 ] ], "result": { @@ -732,14 +735,12 @@ { "inShape": [ [ - 110, 110, 110 ], [ 110, - null, - null + 110 ] ], "result": { @@ -827,9 +828,10 @@ { "inShape": [ [ - 251, - 251, - null + 251 + ], + [ + 251 ] ], "result": { @@ -1035,8 +1037,12 @@ { "inShape": [ [ - 770, - 770, + 770 + ], + [ + 770 + ], + [ 807 ] ], @@ -1050,14 +1056,12 @@ { "inShape": [ [ - 111, 111, 111 ], [ 111, - null, - null + 111 ] ], "result": { @@ -1180,14 +1184,12 @@ { "inShape": [ [ - 1173, 1173, 1173 ], [ 1173, - null, - null + 1173 ] ], "result": { @@ -1376,8 +1378,7 @@ "inShape": [ [ 31, - 31, - null + 31 ] ], "result": { @@ -1390,12 +1391,14 @@ { "inShape": [ [ - 28, 28, 28 ], [ 28, + 28 + ], + [ 28, 28 ] @@ -1465,12 +1468,14 @@ { "inShape": [ [ - 27, 27, 27 ], [ 27, + 27 + ], + [ 27, 27 ] @@ -1485,14 +1490,12 @@ { "inShape": [ [ - 117, 117, 117 ], [ 117, - null, - null + 117 ] ], "result": { @@ -1505,14 +1508,12 @@ { "inShape": [ [ - 306, 306, 306 ], [ 306, - null, - null + 306 ] ], "result": { @@ -1591,11 +1592,13 @@ "inShape": [ [ 774, - 774, - null + 774 + ], + [ + null, + 807 ], [ - 807, null, 807 ] @@ -1610,9 +1613,10 @@ { "inShape": [ [ - 886, - 640, - null + 886 + ], + [ + 640 ] ], "result": { @@ -1840,9 +1844,10 @@ { "inShape": [ [ - 229, - 229, - null + 229 + ], + [ + 229 ] ], "result": { @@ -1853,9 +1858,10 @@ { "inShape": [ [ - 23, - 23, - null + 23 + ], + [ + 23 ] ], "result": { @@ -1918,14 +1924,12 @@ { "inShape": [ [ - 123, 123, 123 ], [ 123, - null, - null + 123 ] ], "result": { @@ -1938,14 +1942,12 @@ { "inShape": [ [ - 44, 44, 44 ], [ 44, - null, - null + 44 ] ], "result": { @@ -2073,14 +2075,12 @@ { "inShape": [ [ - 1105, 1105, 1105 ], [ 1105, - null, - null + 1105 ] ], "result": { @@ -2233,14 +2233,12 @@ { "inShape": [ [ - 131, 131, 131 ], [ 131, - null, - null + 131 ] ], "result": { @@ -2254,8 +2252,7 @@ "inShape": [ [ 189, - 189, - null + 189 ] ], "result": { @@ -2373,14 +2370,12 @@ { "inShape": [ [ - 488, 488, 488 ], [ 488, - null, - null + 488 ] ], "result": { @@ -2494,8 +2489,7 @@ "inShape": [ [ 192, - 192, - null + 192 ] ], "result": { @@ -2518,12 +2512,14 @@ { "inShape": [ [ - 26, 26, 26 ], [ 26, + 26 + ], + [ 26, 26 ] @@ -2596,14 +2592,12 @@ { "inShape": [ [ - 1069, 1069, 1069 ], [ 1069, - null, - null + 1069 ] ], "result": { @@ -2617,8 +2611,7 @@ "inShape": [ [ 191, - 191, - null + 191 ] ], "result": { @@ -2641,12 +2634,14 @@ { "inShape": [ [ - 31, 31, 31 ], [ 31, + 31 + ], + [ 31, 31 ] @@ -2706,14 +2701,12 @@ { "inShape": [ [ - 1, 1, 1 ], [ 1, - null, - null + 1 ] ], "result": { @@ -2816,14 +2809,12 @@ { "inShape": [ [ - 810, 810, 810 ], [ 810, - null, - null + 810 ] ], "result": { @@ -2846,12 +2837,14 @@ { "inShape": [ [ - 774, 774, 774 ], [ - 807, + 774, + 807 + ], + [ null, 807 ] @@ -2985,8 +2978,7 @@ "inShape": [ [ 23, - 23, - null + 23 ] ], "result": { @@ -3024,8 +3016,12 @@ { "inShape": [ [ - 22, - 22, + 22 + ], + [ + 22 + ], + [ 807 ] ], @@ -3040,13 +3036,11 @@ "inShape": [ [ 22, - 767, 767 ], [ - 22, - null, - null + 767, + 22 ] ], "result": { @@ -3079,14 +3073,12 @@ { "inShape": [ [ - 120, 120, 120 ], [ 120, - null, - null + 120 ] ], "result": { @@ -3139,14 +3131,12 @@ { "inShape": [ [ - 1211, 1211, 1211 ], [ 1211, - null, - null + 1211 ] ], "result": { @@ -3184,12 +3174,14 @@ { "inShape": [ [ - 33, 33, 33 ], [ 33, + 33 + ], + [ 33, 33 ] @@ -3205,11 +3197,13 @@ "inShape": [ [ 770, - 770, - null + 770 + ], + [ + null, + 807 ], [ - 807, null, 807 ] @@ -3335,8 +3329,7 @@ "inShape": [ [ 182, - 182, - null + 182 ] ], "result": { @@ -3443,13 +3436,11 @@ "inShape": [ [ 1069, - 956, 956 ], [ - 1069, - null, - null + 956, + 1069 ] ], "result": { @@ -3572,14 +3563,12 @@ { "inShape": [ [ - 1070, 1070, 1070 ], [ 1070, - null, - null + 1070 ] ], "result": { @@ -3592,8 +3581,12 @@ { "inShape": [ [ - 774, - 774, + 774 + ], + [ + 774 + ], + [ 807 ] ], @@ -3666,9 +3659,10 @@ { "inShape": [ [ - 244, - 244, - null + 244 + ], + [ + 244 ] ], "result": { @@ -3681,14 +3675,12 @@ { "inShape": [ [ - 882, 882, 882 ], [ 882, - null, - null + 882 ] ], "result": { @@ -3836,9 +3828,10 @@ { "inShape": [ [ - 635, - 807, - null + 635 + ], + [ + 807 ] ], "result": { @@ -3852,8 +3845,7 @@ "inShape": [ [ 225, - 225, - null + 225 ] ], "result": { @@ -3932,8 +3924,7 @@ "inShape": [ [ 181, - 181, - null + 181 ] ], "result": { @@ -3956,14 +3947,12 @@ { "inShape": [ [ - 96, 96, 96 ], [ 96, - null, - null + 96 ] ], "result": { @@ -4329,14 +4318,12 @@ { "inShape": [ [ - 128, 128, 128 ], [ 128, - null, - null + 128 ] ], "result": { @@ -4400,8 +4387,7 @@ "inShape": [ [ 28, - 28, - null + 28 ] ], "result": { @@ -4414,14 +4400,12 @@ { "inShape": [ [ - 121, 121, 121 ], [ 121, - null, - null + 121 ] ], "result": { @@ -4434,9 +4418,10 @@ { "inShape": [ [ - 249, - 249, - null + 249 + ], + [ + 249 ] ], "result": { @@ -4449,8 +4434,12 @@ { "inShape": [ [ - 23, - 807, + 23 + ], + [ + 807 + ], + [ 807 ] ], @@ -4480,11 +4469,13 @@ "inShape": [ [ 770, - 770, - 23 + 770 ], [ 23, + 23 + ], + [ 23, 23 ] @@ -4529,14 +4520,12 @@ { "inShape": [ [ - 962, 962, 962 ], [ 962, - null, - null + 962 ] ], "result": { @@ -4575,8 +4564,7 @@ "inShape": [ [ 24, - 24, - null + 24 ] ], "result": { @@ -4659,8 +4647,12 @@ { "inShape": [ [ - 811, - 772, + 811 + ], + [ + 772 + ], + [ 807 ] ], @@ -4674,8 +4666,12 @@ { "inShape": [ [ - 764, - 807, + 764 + ], + [ + 807 + ], + [ 807 ] ], @@ -4690,13 +4686,11 @@ "inShape": [ [ 891, - null, null ], [ - 215, null, - null + 215 ] ], "result": { @@ -4994,8 +4988,12 @@ { "inShape": [ [ - 764, - 764, + 764 + ], + [ + 764 + ], + [ 807 ] ], @@ -5134,8 +5132,12 @@ { "inShape": [ [ - 774, - 807, + 774 + ], + [ + 807 + ], + [ 807 ] ], @@ -5149,14 +5151,12 @@ { "inShape": [ [ - 75, 75, 75 ], [ 75, - null, - null + 75 ] ], "result": { @@ -5349,8 +5349,12 @@ { "inShape": [ [ - 1119, - 770, + 1119 + ], + [ + 770 + ], + [ 1119 ] ], @@ -5575,8 +5579,7 @@ "inShape": [ [ 25, - 25, - null + 25 ] ], "result": { @@ -5843,8 +5846,7 @@ "inShape": [ [ 185, - 185, - null + 185 ] ], "result": { @@ -5986,8 +5988,7 @@ "inShape": [ [ 194, - 194, - null + 194 ] ], "result": { @@ -6061,11 +6062,13 @@ "inShape": [ [ 23, - 23, - null + 23 + ], + [ + null, + 807 ], [ - 807, null, 807 ] @@ -6080,9 +6083,10 @@ { "inShape": [ [ - 401, - 401, - null + 401 + ], + [ + 401 ] ], "result": { @@ -6095,14 +6099,12 @@ { "inShape": [ [ - 322, 322, 322 ], [ 322, - null, - null + 322 ] ], "result": { @@ -6411,8 +6413,7 @@ "inShape": [ [ 188, - 188, - null + 188 ] ], "result": { @@ -6560,8 +6561,12 @@ { "inShape": [ [ - 1118, - 277, + 1118 + ], + [ + 277 + ], + [ 1118 ] ], @@ -6600,12 +6605,14 @@ { "inShape": [ [ - 23, 23, 23 ], [ - 807, + 23, + 807 + ], + [ null, 807 ] @@ -6734,8 +6741,7 @@ "inShape": [ [ 180, - 180, - null + 180 ] ], "result": { @@ -6784,8 +6790,7 @@ "inShape": [ [ 193, - 193, - null + 193 ] ], "result": { @@ -6808,14 +6813,12 @@ { "inShape": [ [ - 1181, 1181, 1181 ], [ 1181, - null, - null + 1181 ] ], "result": { @@ -6843,9 +6846,10 @@ { "inShape": [ [ - 301, - 269, - null + 301 + ], + [ + 269 ] ], "result": { @@ -6858,8 +6862,12 @@ { "inShape": [ [ - 770, - 807, + 770 + ], + [ + 807 + ], + [ 23 ] ], @@ -7018,14 +7026,12 @@ { "inShape": [ [ - 770, 770, 770 ], [ 770, - null, - null + 770 ] ], "result": { @@ -7083,12 +7089,14 @@ { "inShape": [ [ - 764, 764, 764 ], [ - 807, + 764, + 807 + ], + [ null, 807 ] @@ -7123,14 +7131,12 @@ { "inShape": [ [ - 113, 113, 113 ], [ 113, - null, - null + 113 ] ], "result": { @@ -7143,14 +7149,12 @@ { "inShape": [ [ - 97, 97, 97 ], [ 97, - null, - null + 97 ] ], "result": { @@ -7174,11 +7178,13 @@ "inShape": [ [ 884, - 884, - 23 + 884 ], [ 23, + 23 + ], + [ 23, 23 ] @@ -7236,14 +7242,12 @@ { "inShape": [ [ - 4, 4, 4 ], [ 4, - null, - null + 4 ] ], "result": { @@ -7272,8 +7276,7 @@ "inShape": [ [ 27, - 27, - null + 27 ] ], "result": { @@ -7317,8 +7320,7 @@ "inShape": [ [ 29, - 29, - null + 29 ] ], "result": { @@ -7421,14 +7423,12 @@ { "inShape": [ [ - 94, 94, 94 ], [ 94, - null, - null + 94 ] ], "result": { @@ -7495,8 +7495,7 @@ "inShape": [ [ 183, - 183, - null + 183 ] ], "result": { @@ -7519,9 +7518,10 @@ { "inShape": [ [ - 1182, - 1182, - null + 1182 + ], + [ + 1182 ] ], "result": { @@ -7580,11 +7580,13 @@ "inShape": [ [ 840, - 840, - 23 + 840 ], [ 23, + 23 + ], + [ 23, 23 ] @@ -7644,8 +7646,12 @@ { "inShape": [ [ - 768, - 772, + 768 + ], + [ + 772 + ], + [ 772 ] ], @@ -7684,9 +7690,10 @@ { "inShape": [ [ - 255, - 255, - null + 255 + ], + [ + 255 ] ], "result": { @@ -7700,8 +7707,7 @@ "inShape": [ [ 770, - 770, - null + 770 ] ], "result": { @@ -7754,8 +7760,12 @@ { "inShape": [ [ - 22, - 807, + 22 + ], + [ + 807 + ], + [ 807 ] ], @@ -7794,14 +7804,12 @@ { "inShape": [ [ - 125, 125, 125 ], [ 125, - null, - null + 125 ] ], "result": { @@ -7915,8 +7923,7 @@ "inShape": [ [ 1, - 1, - null + 1 ] ], "result": { @@ -8023,8 +8030,7 @@ "inShape": [ [ 195, - 195, - null + 195 ] ], "result": { @@ -8047,9 +8053,10 @@ { "inShape": [ [ - 953, - 1105, - null + 953 + ], + [ + 1105 ] ], "result": { @@ -8157,14 +8164,12 @@ { "inShape": [ [ - 9, 9, 9 ], [ 9, - null, - null + 9 ] ], "result": { @@ -8212,9 +8217,10 @@ { "inShape": [ [ - 762, - 807, - null + 762 + ], + [ + 807 ] ], "result": { @@ -8272,9 +8278,10 @@ { "inShape": [ [ - 807, - 22, - null + 807 + ], + [ + 22 ] ], "result": { @@ -8492,8 +8499,12 @@ { "inShape": [ [ - 770, - 807, + 770 + ], + [ + 807 + ], + [ 807 ] ], @@ -8523,8 +8534,7 @@ "inShape": [ [ 1181, - 1181, - null + 1181 ] ], "result": { @@ -8537,14 +8547,12 @@ { "inShape": [ [ - 401, 401, 401 ], [ 401, - null, - null + 401 ] ], "result": { @@ -8557,14 +8565,12 @@ { "inShape": [ [ - 23, 23, 23 ], [ 23, - null, - null + 23 ] ], "result": { @@ -8647,14 +8653,12 @@ { "inShape": [ [ - 116, 116, 116 ], [ 116, - null, - null + 116 ] ], "result": { @@ -8693,8 +8697,7 @@ "inShape": [ [ 186, - 186, - null + 186 ] ], "result": { @@ -8757,14 +8760,12 @@ { "inShape": [ [ - 10, 10, 10 ], [ 10, - null, - null + 10 ] ], "result": { @@ -8802,12 +8803,14 @@ { "inShape": [ [ - 25, 25, 25 ], [ 25, + 25 + ], + [ 25, 25 ] @@ -8847,14 +8850,12 @@ { "inShape": [ [ - 127, 127, 127 ], [ 127, - null, - null + 127 ] ], "result": { @@ -8981,14 +8982,12 @@ { "inShape": [ [ - 768, 768, 768 ], [ 768, - null, - null + 768 ] ], "result": { @@ -9001,12 +9000,14 @@ { "inShape": [ [ - 23, 23, 23 ], [ 23, + 23 + ], + [ 23, 23 ] @@ -9051,8 +9052,12 @@ { "inShape": [ [ - 23, - 23, + 23 + ], + [ + 23 + ], + [ 807 ] ], @@ -9131,12 +9136,14 @@ { "inShape": [ [ - 24, 24, 24 ], [ 24, + 24 + ], + [ 24, 24 ] @@ -9152,13 +9159,11 @@ "inShape": [ [ 891, - null, null ], [ - 1051, null, - null + 1051 ] ], "result": { @@ -9442,9 +9447,10 @@ { "inShape": [ [ - 810, - 1170, - null + 810 + ], + [ + 1170 ] ], "result": { @@ -9457,8 +9463,12 @@ { "inShape": [ [ - 772, - 772, + 772 + ], + [ + 772 + ], + [ 772 ] ], @@ -9586,8 +9596,11 @@ "inShape": [ [ null, - 770, 770 + ], + [ + 770, + null ] ], "result": { @@ -9600,14 +9613,12 @@ { "inShape": [ [ - 1170, 1170, 1170 ], [ 1170, - null, - null + 1170 ] ], "result": { @@ -9620,14 +9631,12 @@ { "inShape": [ [ - 767, 767, 767 ], [ 767, - null, - null + 767 ] ], "result": { @@ -9725,14 +9734,12 @@ { "inShape": [ [ - 95, 95, 95 ], [ 95, - null, - null + 95 ] ], "result": { @@ -9846,13 +9853,11 @@ "inShape": [ [ 810, - 810, - 23 + 810 ], [ 23, - null, - null + 23 ] ], "result": { @@ -9935,8 +9940,12 @@ { "inShape": [ [ - 840, - 807, + 840 + ], + [ + 807 + ], + [ 811 ] ], @@ -10055,14 +10064,12 @@ { "inShape": [ [ - 881, 881, 881 ], [ 881, - null, - null + 881 ] ], "result": { @@ -10091,8 +10098,7 @@ "inShape": [ [ 187, - 187, - null + 187 ] ], "result": { @@ -10250,14 +10256,12 @@ { "inShape": [ [ - 79, 79, 79 ], [ 79, - null, - null + 79 ] ], "result": { @@ -10270,14 +10274,12 @@ { "inShape": [ [ - 1177, 1177, 1177 ], [ 1177, - null, - null + 1177 ] ], "result": { @@ -10366,8 +10368,7 @@ "inShape": [ [ 26, - 26, - null + 26 ] ], "result": { @@ -10485,12 +10486,14 @@ { "inShape": [ [ - 22, 22, 22 ], [ - 807, + 22, + 807 + ], + [ null, 807 ] @@ -10710,14 +10713,12 @@ { "inShape": [ [ - 894, 894, 894 ], [ 894, - null, - null + 894 ] ], "result": { @@ -10810,9 +10811,10 @@ { "inShape": [ [ - 253, - 253, - null + 253 + ], + [ + 253 ] ], "result": { @@ -10941,8 +10943,7 @@ "inShape": [ [ 190, - 190, - null + 190 ] ], "result": { @@ -10990,14 +10991,12 @@ { "inShape": [ [ - 872, 872, 872 ], [ 872, - null, - null + 872 ] ], "result": { @@ -11035,12 +11034,14 @@ { "inShape": [ [ - 770, 770, 770 ], [ - 807, + 770, + 807 + ], + [ null, 807 ] @@ -11241,13 +11242,11 @@ "inShape": [ [ 15, - 48, 48 ], [ - 15, - null, - null + 48, + 15 ] ], "result": { @@ -11341,8 +11340,7 @@ "inShape": [ [ 184, - 184, - null + 184 ] ], "result": { @@ -11431,11 +11429,13 @@ "inShape": [ [ 22, - 22, - null + 22 + ], + [ + null, + 807 ], [ - 807, null, 807 ] @@ -11451,11 +11451,13 @@ "inShape": [ [ 764, - 764, - null + 764 + ], + [ + null, + 807 ], [ - 807, null, 807 ] @@ -11490,14 +11492,12 @@ { "inShape": [ [ - 130, 130, 130 ], [ 130, - null, - null + 130 ] ], "result": { @@ -11531,8 +11531,7 @@ "inShape": [ [ 774, - 774, - null + 774 ] ], "result": { @@ -11605,14 +11604,12 @@ { "inShape": [ [ - 80, 80, 80 ], [ 80, - null, - null + 80 ] ], "result": { @@ -11625,12 +11622,14 @@ { "inShape": [ [ - 770, 770, 770 ], [ 770, + 770 + ], + [ 770, 770 ] @@ -11645,14 +11644,12 @@ { "inShape": [ [ - 2, 2, 2 ], [ 2, - null, - null + 2 ] ], "result": { @@ -11680,14 +11677,12 @@ { "inShape": [ [ - 81, 81, 81 ], [ 81, - null, - null + 81 ] ], "result": { @@ -11725,9 +11720,10 @@ { "inShape": [ [ - 252, - 252, - null + 252 + ], + [ + 252 ] ], "result": { @@ -11765,14 +11761,12 @@ { "inShape": [ [ - 132, 132, 132 ], [ 132, - null, - null + 132 ] ], "result": { @@ -11785,12 +11779,14 @@ { "inShape": [ [ - 32, 32, 32 ], [ 32, + 32 + ], + [ 32, 32 ] @@ -11805,14 +11801,12 @@ { "inShape": [ [ - 1076, 1076, 1076 ], [ 1076, - null, - null + 1076 ] ], "result": { @@ -11870,14 +11864,12 @@ { "inShape": [ [ - 355, 355, 355 ], [ 355, - null, - null + 355 ] ], "result": { @@ -11986,8 +11978,7 @@ "inShape": [ [ 30, - 30, - null + 30 ] ], "result": { @@ -12071,8 +12062,7 @@ "inShape": [ [ 32, - 32, - null + 32 ] ], "result": { @@ -12135,12 +12125,14 @@ { "inShape": [ [ - 30, 30, 30 ], [ 30, + 30 + ], + [ 30, 30 ] @@ -12180,14 +12172,12 @@ { "inShape": [ [ - 47, 47, 47 ], [ 47, - null, - null + 47 ] ], "result": { @@ -12260,14 +12250,12 @@ { "inShape": [ [ - 169, 169, 169 ], [ 169, - null, - null + 169 ] ], "result": { @@ -12320,14 +12308,12 @@ { "inShape": [ [ - 324, 324, 324 ], [ 324, - null, - null + 324 ] ], "result": { @@ -12610,14 +12596,12 @@ { "inShape": [ [ - 115, 115, 115 ], [ 115, - null, - null + 115 ] ], "result": { @@ -12695,14 +12679,12 @@ { "inShape": [ [ - 124, 124, 124 ], [ 124, - null, - null + 124 ] ], "result": { @@ -12715,14 +12697,12 @@ { "inShape": [ [ - 114, 114, 114 ], [ 114, - null, - null + 114 ] ], "result": { @@ -12755,14 +12735,12 @@ { "inShape": [ [ - 126, 126, 126 ], [ 126, - null, - null + 126 ] ], "result": { @@ -12835,14 +12813,12 @@ { "inShape": [ [ - 6, 6, 6 ], [ 6, - null, - null + 6 ] ], "result": { diff --git a/tools/js/test/audit_recipes.js b/tools/js/test/audit_recipes.js index c2e28b550..70571d359 100644 --- a/tools/js/test/audit_recipes.js +++ b/tools/js/test/audit_recipes.js @@ -90,5 +90,32 @@ require('./version_iterator')(function (p, versionString) { ]) } }) + it('iron door not rotated', () => { + const recipes = getIfExist(path.join(p, 'recipes.json')) + const items = getIfExist(path.join(p, 'items.json')) + if (recipes && items) { + const ironDoor = items.find(x => x.name === 'iron_door') + const iron = items.find(x => x.name === 'iron_ingot') + + const recipe = recipes[ironDoor.id] + + if (!recipe[0]) return + + assert.deepStrictEqual(recipe[0].inShape, [ + [ + iron.id, + iron.id + ], + [ + iron.id, + iron.id + ], + [ + iron.id, + iron.id + ] + ]) + } + }) }) })