diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 31e552bcabe2..1f0f0bc3767e 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -113,7 +113,7 @@ the GPE dispatcher. This facility can be used to prevent such uncontrolled GPE floodings. - Format: + Format: acpi_no_auto_serialize [HW,ACPI] Disable auto-serialization of AML methods diff --git a/Makefile b/Makefile index d09716c9e405..7669ff128a69 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Kleptomaniac Octopus diff --git a/abi_gki_aarch64.xml b/abi_gki_aarch64.xml index 3fd984e5edb7..93acaa39cb80 100644 --- a/abi_gki_aarch64.xml +++ b/abi_gki_aarch64.xml @@ -900,21 +900,7 @@ - - - - - - - - - - - - - - - + @@ -922,13 +908,13 @@ - + - + - + @@ -943,28 +929,28 @@ - + - + - + - + - + - + - + @@ -982,7 +968,7 @@ - + @@ -994,7 +980,7 @@ - + @@ -1006,7 +992,7 @@ - + @@ -1041,41 +1027,41 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -1083,20 +1069,20 @@ - + - + - + - + - + - + @@ -1105,12 +1091,12 @@ - + - + @@ -1125,7 +1111,7 @@ - + @@ -1139,117 +1125,116 @@ + + - - - + - - - + + + - - - + + + + + + + - - - - - - - + + - - + + - - + + + + + + - - + + + + + - - - - - - + + + + + + + + + - - - - + + + - - - - - - + - - - - - + - + - - - + + + - + - - + + - + - + - + - + - + - + - + @@ -1257,15 +1242,15 @@ - + - + - + @@ -1273,58 +1258,58 @@ - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -1333,23 +1318,23 @@ - + - + - + - + - + - + @@ -1358,28 +1343,28 @@ - + - + - + - + - + - + - + - + - + @@ -1388,48 +1373,48 @@ - + - + - - - - + + + + - - - - - + + + + + - - + + - - - + + + - + - - - + + + - + - + @@ -1437,10 +1422,10 @@ - + - - + + @@ -1452,31 +1437,31 @@ - + - + - - + + - + - - + + @@ -1637,226 +1622,240 @@ - + - + - + - - - + + + - + - - - - + + + + - - - + + + - - - + + + - - + + - - + + - + - - - - - - + + + + + + - + - + - - - + + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - - - - - - - + + + + + + + + + - - - + + + - + - - + + - + - - + + - + + + + + + + + + + + + + + + - - + + - - - + + + - - - - - - - - - - + + + + + + + + + + - + - + - - + + - + @@ -1893,720 +1892,720 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - - + + + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - - + + - + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - - - + + + - - + + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2615,25 +2614,25 @@ - + - + - + - + - + - - - - + + + + @@ -2661,8 +2660,8 @@ - - + + @@ -2688,11 +2687,11 @@ - - - - - + + + + + @@ -2721,61 +2720,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2787,383 +2786,383 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3193,16 +3192,16 @@ - + - + - + - + @@ -3211,122 +3210,122 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3341,71 +3340,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3426,13 +3425,13 @@ - + - + - + @@ -3440,7 +3439,7 @@ - + @@ -3453,7 +3452,7 @@ - + @@ -3469,10 +3468,10 @@ - + - + @@ -3480,7 +3479,7 @@ - + @@ -3491,7 +3490,7 @@ - + @@ -3503,7 +3502,7 @@ - + @@ -3511,16 +3510,16 @@ - + - + - + - + @@ -3532,10 +3531,10 @@ - + - + @@ -3550,7 +3549,7 @@ - + @@ -3562,16 +3561,16 @@ - + - + - + - + @@ -3589,7 +3588,7 @@ - + @@ -3601,10 +3600,10 @@ - + - + @@ -3640,10 +3639,10 @@ - + - + @@ -3658,23 +3657,23 @@ - - - + + + - - - + + + - + @@ -3748,7 +3747,7 @@ - + @@ -3758,19 +3757,19 @@ - + - + - + - + @@ -3782,21 +3781,21 @@ - + - - + + - + - + @@ -3805,19 +3804,19 @@ - + - + - + - + @@ -3826,13 +3825,13 @@ - + - + - + @@ -3847,22 +3846,22 @@ - + - + - + - + - + - + @@ -3870,22 +3869,22 @@ - + - + - + - + - + - + @@ -3896,13 +3895,13 @@ - + - + @@ -3971,10 +3970,10 @@ - + - + @@ -3995,31 +3994,31 @@ - + - + - + - + - + - + @@ -4028,10 +4027,10 @@ - + - + @@ -4040,7 +4039,7 @@ - + @@ -4052,25 +4051,25 @@ - + - + - + - + - + @@ -4105,28 +4104,28 @@ - + - + - + - + - + - + - + - + @@ -4137,7 +4136,7 @@ - + @@ -4152,7 +4151,7 @@ - + @@ -4161,22 +4160,22 @@ - + - + - + - + @@ -4185,10 +4184,10 @@ - + - + @@ -4197,10 +4196,10 @@ - + - + @@ -4221,7 +4220,7 @@ - + @@ -4248,28 +4247,28 @@ - + - + - + - + - + @@ -4278,13 +4277,13 @@ - + - + @@ -4302,11 +4301,11 @@ - + - + @@ -4320,7 +4319,7 @@ - + @@ -4337,7 +4336,7 @@ - + @@ -4352,19 +4351,19 @@ - + - + - + - + - + @@ -4372,7 +4371,7 @@ - + @@ -4381,7 +4380,7 @@ - + @@ -4394,10 +4393,10 @@ - + - + @@ -4407,10 +4406,10 @@ - + - + @@ -4423,10 +4422,10 @@ - + - + @@ -4442,16 +4441,16 @@ - + - + - + @@ -4518,7 +4517,7 @@ - + @@ -4541,22 +4540,22 @@ - + - + - + - + - + @@ -4577,13 +4576,13 @@ - + - + @@ -4594,18 +4593,18 @@ - + - + - + @@ -4635,13 +4634,13 @@ - + - + @@ -4677,7 +4676,7 @@ - + @@ -4713,7 +4712,7 @@ - + @@ -4731,19 +4730,19 @@ - + - + - + @@ -4752,12 +4751,12 @@ - + - + @@ -4766,8 +4765,8 @@ - - + + @@ -4777,16 +4776,16 @@ - + - + - + @@ -4797,10 +4796,10 @@ - + - + @@ -4828,7 +4827,7 @@ - + @@ -4848,28 +4847,28 @@ - + - + - + - + - + - + @@ -4890,7 +4889,7 @@ - + @@ -4908,13 +4907,13 @@ - + - + - + @@ -4929,7 +4928,7 @@ - + @@ -4941,10 +4940,10 @@ - + - + @@ -4962,13 +4961,13 @@ - + - + - + @@ -4992,40 +4991,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -5034,19 +5033,19 @@ - + - + - + - + @@ -5055,7 +5054,7 @@ - + @@ -5064,10 +5063,10 @@ - + - + @@ -5085,19 +5084,19 @@ - + - + - + - + @@ -5109,10 +5108,10 @@ - + - + @@ -5124,19 +5123,19 @@ - + - + - + - + @@ -5172,22 +5171,22 @@ - + - + - + - + - + @@ -5199,10 +5198,10 @@ - + - + @@ -5211,7 +5210,7 @@ - + @@ -5247,22 +5246,22 @@ - + - + - + - + - + @@ -5289,16 +5288,16 @@ - + - + - + - + @@ -5313,7 +5312,7 @@ - + @@ -5328,10 +5327,10 @@ - + - + @@ -5343,13 +5342,13 @@ - + - + @@ -5364,7 +5363,7 @@ - + @@ -5387,7 +5386,7 @@ - + @@ -5399,7 +5398,7 @@ - + @@ -5427,28 +5426,28 @@ - + - + - + - + - + - + - + @@ -5479,96 +5478,96 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5591,10 +5590,10 @@ - + - + @@ -5608,13 +5607,13 @@ - + - + - + @@ -5631,46 +5630,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5693,21 +5692,21 @@ - + - + - + - + - + @@ -5715,22 +5714,22 @@ - + - + - + - + @@ -5747,40 +5746,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -5795,7 +5794,7 @@ - + @@ -5810,41 +5809,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -5852,13 +5851,13 @@ - + - + - + @@ -5874,10 +5873,10 @@ - + - + @@ -5885,7 +5884,7 @@ - + @@ -5921,7 +5920,7 @@ - + @@ -5938,11 +5937,11 @@ - + - + @@ -5960,10 +5959,10 @@ - + - + @@ -5992,36 +5991,36 @@ - + - + - + - + - + - + - + - + - + @@ -6030,13 +6029,13 @@ - + - + @@ -6052,25 +6051,25 @@ - + - + - + - + - + - + @@ -6085,10 +6084,10 @@ - + - + @@ -6110,24 +6109,24 @@ - + - + - + - + - + @@ -6148,10 +6147,10 @@ - + - + @@ -6169,7 +6168,7 @@ - + @@ -6181,7 +6180,7 @@ - + @@ -6194,13 +6193,13 @@ - + - + @@ -6221,13 +6220,13 @@ - + - + @@ -6286,22 +6285,22 @@ - + - + - + - + - + @@ -6317,7 +6316,7 @@ - + @@ -6348,21 +6347,21 @@ - + - + - + - + @@ -6387,7 +6386,7 @@ - + @@ -6418,9 +6417,9 @@ - + - + @@ -6469,7 +6468,7 @@ - + @@ -6477,7 +6476,7 @@ - + @@ -6534,7 +6533,7 @@ - + @@ -6556,7 +6555,7 @@ - + @@ -6564,81 +6563,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6656,7 +6655,7 @@ - + @@ -6674,7 +6673,7 @@ - + @@ -6689,7 +6688,7 @@ - + @@ -6703,7 +6702,7 @@ - + @@ -6712,16 +6711,16 @@ - + - + - + - + @@ -6729,7 +6728,7 @@ - + @@ -6758,7 +6757,7 @@ - + @@ -6792,19 +6791,19 @@ - + - + - + - + @@ -6816,7 +6815,7 @@ - + @@ -6855,10 +6854,10 @@ - + - + @@ -6918,7 +6917,7 @@ - + @@ -6932,10 +6931,10 @@ - + - + @@ -7007,13 +7006,13 @@ - + - + - + @@ -7040,85 +7039,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7133,10 +7132,10 @@ - + - + @@ -7160,13 +7159,13 @@ - + - + - + @@ -7184,37 +7183,37 @@ - + - + - + - + - + - + - + - + @@ -7244,13 +7243,13 @@ - + - + @@ -7265,28 +7264,28 @@ - + - + - + - + - + - + @@ -7295,30 +7294,30 @@ - + - + - + - + - + - + - + - + @@ -7329,7 +7328,7 @@ - + @@ -7603,7 +7602,7 @@ - + @@ -7627,7 +7626,7 @@ - + @@ -7657,10 +7656,10 @@ - + - + @@ -7668,20 +7667,20 @@ - + - + - + - + @@ -7689,181 +7688,181 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7878,7 +7877,7 @@ - + @@ -7914,29 +7913,29 @@ - + - + - + - - - + + + - + - + - + - + @@ -7949,7 +7948,7 @@ - + @@ -7969,7 +7968,7 @@ - + @@ -7981,10 +7980,10 @@ - + - + @@ -7998,11 +7997,11 @@ - + - + @@ -8011,24 +8010,24 @@ - + - + - + - + - + - + @@ -8060,232 +8059,232 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8309,33 +8308,33 @@ - + - + - + - + - + - + - + - + @@ -8361,22 +8360,22 @@ - + - + - + - + - + - + @@ -8384,27 +8383,27 @@ - + - + - + - + - + - + - + @@ -8416,7 +8415,7 @@ - + @@ -8455,7 +8454,7 @@ - + @@ -8463,7 +8462,7 @@ - + @@ -8497,7 +8496,7 @@ - + @@ -8505,13 +8504,13 @@ - + - + - + @@ -8700,220 +8699,220 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8921,24 +8920,24 @@ - + - + - + - + - + - + @@ -8947,12 +8946,12 @@ - + - + @@ -8967,10 +8966,10 @@ - + - + @@ -9014,283 +9013,283 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9303,72 +9302,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9393,13 +9392,13 @@ - + - + @@ -9408,7 +9407,7 @@ - + @@ -9438,35 +9437,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -9486,65 +9485,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9556,7 +9555,7 @@ - + @@ -9580,27 +9579,27 @@ - + - + - + - + - + - + - + @@ -9624,84 +9623,87 @@ - + - + - + - + - + - + - + - + - + - + - + + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9710,80 +9712,80 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9795,7 +9797,7 @@ - + @@ -9813,13 +9815,13 @@ - + - + - + @@ -9834,128 +9836,128 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9978,7 +9980,7 @@ - + @@ -9990,82 +9992,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10083,95 +10085,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10180,13 +10182,13 @@ - + - + - + @@ -10194,63 +10196,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10259,38 +10261,38 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + @@ -10298,22 +10300,22 @@ - + - + - + - + - + @@ -10322,61 +10324,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10385,46 +10387,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -10432,90 +10434,90 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10523,7 +10525,7 @@ - + @@ -10535,63 +10537,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10600,34 +10602,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -10636,29 +10638,29 @@ - + - + - + - - + + - - + + - - + + @@ -10672,58 +10674,58 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10732,22 +10734,22 @@ - + - + - + - + - + - + @@ -10756,13 +10758,13 @@ - + - + @@ -10771,46 +10773,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10819,28 +10821,28 @@ - + - + - + - + - + - + - + - + @@ -10851,10 +10853,10 @@ - + - + @@ -10893,160 +10895,160 @@ - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11057,7 +11059,7 @@ - + @@ -11066,12 +11068,12 @@ - + - + @@ -11082,13 +11084,13 @@ - + - + @@ -11109,16 +11111,16 @@ - + - + - + @@ -11127,81 +11129,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -11210,133 +11212,133 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11345,81 +11347,81 @@ - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11427,18 +11429,18 @@ - - + + - - - + + + - + @@ -11447,26 +11449,18 @@ - + - + - + - + - - - - - - - - - + @@ -11478,7 +11472,7 @@ - + @@ -11487,7 +11481,7 @@ - + @@ -11495,13 +11489,13 @@ - + - + - + @@ -11515,10 +11509,10 @@ - + - + @@ -11530,71 +11524,71 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -11603,156 +11597,156 @@ - + - + - + - + - + - + - + - + - - + + - + - - - + + + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11766,66 +11760,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -11833,101 +11827,101 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11935,14 +11929,14 @@ - - - + + + - + - + @@ -11956,107 +11950,107 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12072,10 +12066,10 @@ - + - + @@ -12098,76 +12092,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12188,7 +12182,7 @@ - + @@ -12281,7 +12275,7 @@ - + @@ -12374,10 +12368,10 @@ - + - + @@ -12386,7 +12380,7 @@ - + @@ -12395,16 +12389,16 @@ - + - + - + - + @@ -12431,45 +12425,45 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -12478,45 +12472,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -12525,18 +12519,18 @@ - + - + - + - + @@ -12560,37 +12554,37 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -12599,123 +12593,123 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12724,143 +12718,143 @@ - + - + - + - + - - - + + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12881,22 +12875,22 @@ - + - + - + - + - + - + @@ -12961,10 +12955,10 @@ - + - + @@ -13003,68 +12997,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13073,15 +13067,15 @@ - + - + - + - + @@ -13092,39 +13086,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -13132,22 +13126,22 @@ - + - + - + - + - + @@ -13165,24 +13159,24 @@ - + - + - + - + - + - + - + @@ -13194,102 +13188,102 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13301,40 +13295,40 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -13342,46 +13336,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13408,59 +13402,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13498,25 +13492,25 @@ - + - + - + - + - + - + @@ -13533,9 +13527,9 @@ - + - + @@ -13544,7 +13538,7 @@ - + @@ -13562,7 +13556,7 @@ - + @@ -13571,7 +13565,7 @@ - + @@ -13583,30 +13577,30 @@ - + - + - + - + - + - + - + - + @@ -13621,27 +13615,27 @@ - + - + - + - + - + - + - + @@ -13680,52 +13674,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13734,31 +13728,31 @@ - + - + - + - + - + - + - + @@ -13772,45 +13766,45 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -13818,15 +13812,15 @@ - + - + - + @@ -13838,7 +13832,7 @@ - + @@ -13847,153 +13841,153 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14005,75 +13999,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + @@ -14081,7 +14075,7 @@ - + @@ -14092,18 +14086,18 @@ - + - + - + - + @@ -14115,136 +14109,136 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14253,118 +14247,118 @@ - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14376,75 +14370,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14456,7 +14450,7 @@ - + @@ -14465,89 +14459,89 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14564,13 +14558,13 @@ - + - + @@ -14579,19 +14573,19 @@ - + - + - + - + @@ -14606,49 +14600,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -14699,34 +14693,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -14737,26 +14731,26 @@ - - + + - + - + - + - + - + - + - + @@ -14769,178 +14763,178 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14949,48 +14943,48 @@ - + - + - + - + - + - + - - - - + + + + - + - + - + - + @@ -14999,10 +14993,10 @@ - + - + @@ -15014,23 +15008,23 @@ - + - + - + - + - + - + - + @@ -15041,19 +15035,19 @@ - + - + - - + + - + - + @@ -15064,33 +15058,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -15098,23 +15092,23 @@ - + - + - + - - - + + + @@ -15122,7 +15116,7 @@ - + @@ -15130,10 +15124,10 @@ - + - + @@ -15144,35 +15138,35 @@ - + - + - - + + - + - + - + - + - + - + - + @@ -15181,23 +15175,23 @@ - + - + - + - + - + - + @@ -15205,77 +15199,77 @@ - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -15283,21 +15277,21 @@ - + - + - + - - + + - + @@ -15309,13 +15303,13 @@ - + - + - + @@ -15329,13 +15323,13 @@ - + - + - + @@ -15343,22 +15337,22 @@ - + - + - + - + - + @@ -15367,13 +15361,13 @@ - + - + - + @@ -15414,7 +15408,7 @@ - + @@ -15422,24 +15416,24 @@ - + - + - + - + - + - + - + @@ -15450,30 +15444,30 @@ - + - + - + - + - + - + - + - + - + @@ -15483,39 +15477,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -15526,9 +15520,9 @@ - - - + + + @@ -15536,73 +15530,73 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + @@ -15615,41 +15609,41 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -15660,19 +15654,19 @@ - + - + - + - + - - + + @@ -15680,18 +15674,18 @@ - + - + - + - + @@ -15700,38 +15694,38 @@ - - + + - + - + - + - + - + - + - - - - - - + + + + + + - + @@ -15740,15 +15734,15 @@ - + - + - + @@ -15759,24 +15753,24 @@ - + - + - + - + - + - + - + @@ -15791,13 +15785,13 @@ - + - + @@ -15806,24 +15800,24 @@ - + - + - + - + - + - + @@ -15832,18 +15826,18 @@ - + - + - + - + - + @@ -15852,19 +15846,19 @@ - + - + - + - + @@ -15873,33 +15867,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -15913,7 +15907,7 @@ - + @@ -15921,9 +15915,9 @@ - + - + @@ -15932,13 +15926,13 @@ - + - + - + @@ -15947,75 +15941,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16027,83 +16021,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - - + + + - + - + - + - + - + - + - + - + @@ -16112,10 +16106,10 @@ - - + + - + @@ -16130,123 +16124,123 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16261,13 +16255,13 @@ - + - + - + @@ -16276,38 +16270,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -16316,13 +16310,13 @@ - + - + @@ -16330,13 +16324,13 @@ - + - + - + @@ -16348,7 +16342,7 @@ - + @@ -16357,22 +16351,22 @@ - + - + - + - + - + @@ -16390,29 +16384,29 @@ - + - + - + - + - + - + - + @@ -16424,59 +16418,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16487,27 +16481,27 @@ - + - + - + - + - + - + @@ -16518,80 +16512,80 @@ - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16600,12 +16594,12 @@ - + - + @@ -16614,156 +16608,156 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + @@ -16772,16 +16766,16 @@ - + - + - + - + @@ -16790,16 +16784,16 @@ - + - + - + - + @@ -16808,63 +16802,63 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16872,12 +16866,12 @@ - + - + - + @@ -16889,29 +16883,29 @@ - + - + - + - + - + - + - + - - + + @@ -16919,73 +16913,73 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -17013,23 +17007,23 @@ - + - + - + - + - + @@ -17038,10 +17032,10 @@ - + - + @@ -17050,323 +17044,323 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + @@ -17374,1150 +17368,1151 @@ - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - + + + - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + - - - + + + - - - - - + + + + + - + - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - + + - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + + + - - - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + + + + + - - + + - - - - - + - - - + + + - - - - - + + + + + + + + + + + - - - - - - - + - - + + - - - + + + - + - + - + - + - - + + - + - + - + + + + + + - - + - + - - - + + + + - - - - - + + + + + + + + + - - + + + - - - + + - - - - + + + - - - + + - - + + + + + + - + - + + + + - + - - - - - + - + + + + + - - - + + - - - + + - - - - + + + + - - + + - - - - + - - + + - + + + - + + - + - + + - - + - + - + + - - - + + + - - - - + - - - - - - - - - - - - + + + + + + + + + + + + - - - + + - + + + + - - - - - - - - - - - - - - + + - - + + - + - + + + + + + + + + + - + + + + - - + + + + - - + - + + + + - + - - + + + - - - - - - + + - - - - - + + - - + + + - - + - - - - - - - - - - - - - + + + - + - - - + + + - - + + @@ -18525,503 +18520,514 @@ - - + + - + - + - + - + + + + + + + + + + + + - + - - + - - + - - + + - + + - - + + + + + - - + + + + + + - - - - - + + - - - - - - + + - - - - - - - - - - - - + + - - + + - - + + - - - + + + - - + + - - + + - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + + + - - - + + + + - - - - + + - - - - + + - - + + + + - - + + - - - + - - + + + - - + - - - + - - - - - - - - - + - - + + - - + + + + + + + + + + + + + + + + + + - - - + - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + - - - + + + - - + + + + + + + + + + + + + - - + + - - - - + + + + + - - - - - - - - - - - - - + - + + + + + + + + + + - + + + + - + - - - - - - - - - + + - + + - - - - - - - - - + + + - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + - + - + - - + + + + + + + + + + + + + - - + + - + + + - - + + + - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + - + - + @@ -19032,7 +19038,6 @@ - @@ -19052,1507 +19057,1502 @@ - + - + - + + - + - - + - + - + + - + - + + - + - + + - + - - + - + - + + + - + - - - + + - + - - + + - - + - - - + - + - + + + + + - - + - - - - + - + + + - + + - - + + - - + - - - + + - + - - + - + - + + + - - + - - + + + + + + - - - + - - - - - + - - - - - - - - - - - + + + + + + + + + + + - + + + - - + + - - - + + - - + + - - + + - - - - - - - - - - - + - - + + - + + + + + + + + + + + - - + + + - - + + - - + + - - - - - - - - - - - - + - + - + - + - + - + - + + + + + + + + + + + + + + - + + + + + + + - + + - - + + - - - - - - - - - - - - - - - - - + - - - - - + - - + + + + + + + + + + + + + + + - - - - + + - - - + + + - - + + + - - + + + + + + + - - - + + - - - - - - - - + + + - - + - - - + - + + + + + + + + + - - - - - + + + - - - - - + + + - + + - - - - + - - - + + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + - - - - + + + - - - - - - - - - - - + + - + - - + + - + - + - + - + - - + + - + - - + + - - - + + + - + - + - + + + + + + + + + + - - + + + - - - + - - - + + + - + + + - - + - - + + + - - - + + - - - + + + - - + + + - - - + + - - - + + + + + + + - - + + + + - - - - + - - - - - - + + - - - - + + + + + + + + + - - - - - - - + + + + - - - - + + + + - - - - - - - + - - - + + + + + + + + - - - + + - - + + + - - - + + + - - - + + - - - - - - + + + + + + + + + - - - - - + + + + + - - - - - + + + + + + + - - - - - + + - + + + - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + - - - - + + - - - + + + + - - - - + + + + + - - - - - + + + + - - - + + + + - - - - + + + + + - - - - - - - - - + - - - + + + - - + + - - - + + + - + - + - + + + + + + - - + - + + + - - - - + + + - - - + + - - + + + + - + - - - - + + - - + + + - - - - - - + + + + - + + - - + + + - - - + + + + - - - + - + + + + + - - - - - + + - - + - - + + - - - + + - - + + + - + + - - + + - - + + - - - + + - - + + + - - - + + + + - - - - + + - - + + - - + + + - - - + + - - + + - - + + + - - - + + + - - - - - - - - + + + + + + + - + + - - - + + - - + + - - + + + + - - - - + + + + + - - + + - - + + + - - - - - - + + + - - - + + + + + - - - - - + + + + + + - - - - - - + + + - - - + + + + + + - - + - - - + + + - - - - - + + - - + + - - - - - + - + - - + + - + - - + + - + + + + + + - - + + - - + + + - - - + + + - - - + + - - + + + + - - - - + + - - + + + - - - + + - - + + + + + + + - - - - - - - + + - + + + - - - - + + - - + + + + - - - - + + - - + + - + + - - - + + - + + - + - - + + - - + + + - - - + + - + + - + - + - - + - - + + - - + + - - + + - - + + - - + + - + + - - + - - + + - - - + + - - + + + + - - - - + + + + + + + + - - - - - - - - + + + - - - + + + - - - + + + - - - + + - - + + - - + + - - + + + + - - - + + + - - - + + - - - + + - - + + - - + + + + - - - - + + - - + + + + - - - - + + - + + - - + + + - - - + + - - - + + - - - - - - - + + + - - + + + + + + + - - + - - - - - - - - + + + + - - + + - + - + + + + + + - - + + - + + - - - - - - - + - + - + - + - + - + - + @@ -20560,7 +20560,7 @@ - + @@ -20568,34 +20568,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -20603,29 +20603,29 @@ - + - + - + - + - + - + - + - + - + @@ -20633,15 +20633,15 @@ - + - + - + @@ -20649,15 +20649,15 @@ - + - + - + @@ -20665,7 +20665,7 @@ - + @@ -20678,28 +20678,28 @@ - + - + - + - + - + @@ -20707,15 +20707,15 @@ - + - + - + @@ -20726,7 +20726,7 @@ - + @@ -20734,10 +20734,10 @@ - + - + @@ -20745,100 +20745,100 @@ - + - + - + - + - + - + - + - + + + + + + + + + - - - - - - - - - + - - - + + + - - + + - + - + - + - - + + - - + + - + - + - + - + - + - + - - - + + + - + - + - + @@ -20847,7 +20847,7 @@ - + @@ -20855,7 +20855,7 @@ - + @@ -20865,68 +20865,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20937,7 +20937,7 @@ - + @@ -20948,213 +20948,199 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - - + + - - + + - - + + - + - - + + - - - + + + - + - + - + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - + - - + + - - - + + + - - + + - - + + - - - - + + + + - - - - - - - - - - - - - - - + @@ -21167,7 +21153,7 @@ - + @@ -21179,228 +21165,228 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -21409,10 +21395,10 @@ - + - + @@ -21421,58 +21407,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -21484,10 +21470,10 @@ - + - + @@ -21496,10 +21482,10 @@ - + - + @@ -21511,7 +21497,7 @@ - + @@ -21529,28 +21515,28 @@ - + - + - + - + - + - + @@ -21559,39 +21545,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -21599,9 +21585,9 @@ - + - + @@ -21616,15 +21602,15 @@ - + - + - + - + @@ -21632,30 +21618,30 @@ - + - + - + - + - + - - + + @@ -21663,7 +21649,7 @@ - + @@ -21675,35 +21661,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -21733,13 +21719,13 @@ - + - + @@ -21775,7 +21761,7 @@ - + @@ -21811,7 +21797,7 @@ - + @@ -21829,19 +21815,19 @@ - + - + - + @@ -21850,18 +21836,18 @@ - + - + - + - + @@ -21870,28 +21856,28 @@ - + - + - + - + - + - + - + @@ -21906,10 +21892,10 @@ - + - + @@ -21918,21 +21904,21 @@ - + - + - + - + - + - + @@ -21941,13 +21927,13 @@ - + - + - + @@ -21955,13 +21941,13 @@ - + - + - + @@ -21970,22 +21956,22 @@ - + - + - + - + - + @@ -22000,46 +21986,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22048,25 +22034,25 @@ - + - + - + - + - + - + @@ -22075,29 +22061,29 @@ - + - + - + - + - + - + - + - + @@ -22108,15 +22094,15 @@ - + - + - + - + @@ -22125,13 +22111,13 @@ - + - + - + @@ -22146,117 +22132,117 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22279,18 +22265,18 @@ - + - + - + - + @@ -22301,89 +22287,89 @@ - + - + - + - - - + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22395,48 +22381,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22447,10 +22433,10 @@ - + - + @@ -22459,113 +22445,113 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22576,28 +22562,28 @@ - + - + - + - + - + - + - + - + @@ -22609,62 +22595,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22673,24 +22659,24 @@ - + - + - + - + - + - + @@ -22702,40 +22688,40 @@ - + - + - - + + - + - + - + - + - + - - + + @@ -22743,32 +22729,32 @@ - + - + - + - + - - + + - + - + - + @@ -22776,26 +22762,26 @@ - + - + - + - + - + - + - + - + @@ -22804,95 +22790,95 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -22904,22 +22890,22 @@ - + - + - + - + - + - + @@ -22928,46 +22914,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -22976,7 +22962,7 @@ - + @@ -22988,22 +22974,22 @@ - + - + - + - + - + @@ -23011,9 +22997,9 @@ - + - + @@ -23025,25 +23011,25 @@ - + - + - + - + - + @@ -23052,7 +23038,7 @@ - + @@ -23066,76 +23052,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -23150,114 +23136,114 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23278,13 +23264,13 @@ - + - + @@ -23293,42 +23279,42 @@ - + - + - + - + - + - + - + - + - + - + @@ -23337,19 +23323,19 @@ - + - + - + - + @@ -23370,19 +23356,19 @@ - + - + - + - + @@ -23391,7 +23377,7 @@ - + @@ -23400,42 +23386,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -23446,136 +23432,136 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23590,139 +23576,139 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23734,27 +23720,27 @@ - + - + - + - + - + - + - + - + @@ -23766,39 +23752,39 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -23807,108 +23793,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - + + + + - + - + @@ -23917,30 +23903,30 @@ - + - + - + - + - + - + - + - + - + @@ -23949,119 +23935,119 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - - + + + + - + - + @@ -24073,7 +24059,7 @@ - + @@ -24085,22 +24071,22 @@ - + - + - + - + - + - + @@ -24112,7 +24098,7 @@ - + @@ -24121,10 +24107,10 @@ - + - + @@ -24133,10 +24119,10 @@ - - + + - + @@ -24157,13 +24143,13 @@ - + - + - + @@ -24187,22 +24173,22 @@ - + - + - + - + @@ -24211,16 +24197,16 @@ - + - + - + - + @@ -24229,10 +24215,10 @@ - + - + @@ -24240,28 +24226,28 @@ - + - + - + - + - + - + - - + + @@ -24273,65 +24259,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24343,33 +24329,33 @@ - + - + - + - + - + - + - + - + @@ -24381,31 +24367,31 @@ - + - + - + - + - + - + - + - + @@ -24416,193 +24402,193 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24611,45 +24597,45 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -24658,611 +24644,611 @@ - + - + - + - - - + + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - + - + - + - + - + - + - + - - + + - + - + - - - + + + + + + + + - - + + - + - + + + - - - + + + - - - - + - + + + - - + - - + - - + + - + + + + - - - - + - - + + + + + + + + - - - - - - - + + - - + + + - - - + + - - + + + - - + + - - - - + + - - - - - + - + - - - + + + + + + + - - + + + - - - - - - + + + - - - + - - - - + + + + + + + + - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + - - - + + + + - - - - + + + - - - + + + - - - - + + + - - - + + + - - + + + + - - - - + + + - - - - - - + + + + + + + - - - - + + - - + + - - + + + - - - + + - - + + - - + + + + + + + + - - - - - - - - + + + - - - + + + + - - - - + + + + - - - - + + - - - + + + + - - - - - - - - + + + - + - - - - + + + + - - + + - + - - - - + + + + - - + + - + - + - + - + - + - - + + @@ -25279,105 +25265,105 @@ - - - + + + - + - - - - - - + + + + + + - - - + + + - - + + - - - - - + + + + + - + - + - + - - + + - - + + - - + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + - - + + - + - + - - + + - - + + - + @@ -25388,27 +25374,27 @@ - + - + - + - + - + - + @@ -25417,7 +25403,7 @@ - + @@ -25426,7 +25412,7 @@ - + @@ -25435,17 +25421,17 @@ - + - + - + - + @@ -25460,7 +25446,7 @@ - + @@ -25478,15 +25464,15 @@ - + - + - + - + @@ -25498,7 +25484,7 @@ - + @@ -25522,10 +25508,10 @@ - + - + @@ -25534,13 +25520,13 @@ - + - + - + @@ -25549,27 +25535,27 @@ - + - + - + - + - + - - + + @@ -25577,10 +25563,10 @@ - + - + @@ -25597,7 +25583,7 @@ - + @@ -25605,7 +25591,7 @@ - + @@ -25626,7 +25612,7 @@ - + @@ -25638,90 +25624,90 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25742,16 +25728,16 @@ - + - + - + - + @@ -25762,23 +25748,23 @@ - + - + - + - + - - + + @@ -25788,9 +25774,9 @@ - + - + @@ -25799,40 +25785,40 @@ - + - + - + - + - + - + - - - + + + - + - + - + - + @@ -25841,28 +25827,28 @@ - + - + - + - + - + - + - + @@ -25877,55 +25863,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25936,16 +25922,16 @@ - + - + - + @@ -25960,58 +25946,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26020,13 +26006,13 @@ - + - + @@ -26038,10 +26024,10 @@ - + - + @@ -26062,7 +26048,7 @@ - + @@ -26074,49 +26060,49 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -26128,8 +26114,8 @@ - - + + @@ -26137,220 +26123,220 @@ - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26362,59 +26348,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26422,34 +26408,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -26470,18 +26456,18 @@ - + - + - + - + - + @@ -26490,18 +26476,18 @@ - + - + - + - + - + @@ -26518,29 +26504,29 @@ - + - + - + - + - + - + - + @@ -26548,83 +26534,83 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26633,90 +26619,90 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26724,7 +26710,7 @@ - + @@ -26732,28 +26718,28 @@ - + - + - + - + - + - + - + - + - + @@ -26762,79 +26748,79 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -26846,8 +26832,8 @@ - - + + @@ -26858,18 +26844,18 @@ - + - + - + - + @@ -26878,7 +26864,7 @@ - + @@ -26887,7 +26873,7 @@ - + @@ -26899,15 +26885,15 @@ - + - + - + @@ -26915,67 +26901,67 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -26983,147 +26969,147 @@ - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + + + + + - + - + + - - + + - - + + + - - + - + - - + - - - + + - - - + + + + - - + + - - + + + - - - + + + - - - + + + + - - - - + + + - - - + + - - + + + - - - - - - - + + - + - + @@ -27138,117 +27124,235 @@ - - - + + + - - + + - + - - + + - + - + - - + + - - + + - + - + + + + - + - + - + - + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - - + + @@ -27260,132 +27364,132 @@ - - - + + + - + - - + + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - - + + - + - - + + - - - + + + - - - + + + - - + + - + - - + + - + - + - + - - + + - - + + - + - - - + + + - - - - + + + + - - + + @@ -27394,15 +27498,15 @@ - + - + - + @@ -27410,74 +27514,74 @@ - + - + - - + + - - - - + + + + - + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - + - + - - - - + + + + @@ -27486,22 +27590,22 @@ - - + + - + - + - + - + @@ -27512,29 +27616,29 @@ - + - + - + - - - - + + + + - + - + @@ -27542,82 +27646,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -27629,222 +27733,222 @@ - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - + - + - - + + - - + + - - + + - + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - - - - + + + + + - - + + - - + + - - - - + + + + - + - - + + - + - + - - + + - - + + - + - - + + - + - + - - + + - - + + - + - + - + - - - + + + @@ -27855,40 +27959,40 @@ - + - + - - + + - + - - + + - + - + - - + + @@ -27896,40 +28000,40 @@ - + - - + + - + - + - + - + - + - + - + @@ -27937,24 +28041,24 @@ - + - + - + - + - - + + @@ -27973,7 +28077,7 @@ - + @@ -27981,26 +28085,26 @@ - - + + - + - + - - + + - + - + - + @@ -28008,15 +28112,15 @@ - + - + - + @@ -28024,37 +28128,37 @@ - + - + - + - + - + - + - + - + @@ -28063,49 +28167,22 @@ - - - - - - - - - + + - - - - - - - + - + - - - - - - - - - - - - - - - + - - + + @@ -28113,7 +28190,7 @@ - + @@ -28122,45 +28199,45 @@ - + - + - + - + - + - + - - - - + + + + - - + + - - - - - + + + + + - + - + @@ -28180,33 +28257,33 @@ - + - + - + - + - + - - + + @@ -28219,62 +28296,62 @@ - + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - + - + - + - + - - + + @@ -28282,44 +28359,44 @@ - - + + - + - - + + - - + + - - + + - - + + - - - - + + + + - + - + @@ -28328,9 +28405,9 @@ - - - + + + @@ -28340,406 +28417,417 @@ - + - + - - + + - + - + - - + + - - + + - - + + - + - + - - + + - - + + - + - + - - + + - - + + - - - + + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + + + + + + + + + + + + - + - - - + + + - + - + - + - - + + - - - + + + - + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - - + + + - - - + + + - + - + - + - + - - + + - - - + + + - + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - - + + - - - + + + - + - + - + - + - + @@ -28748,25 +28836,25 @@ - + - + - + - + - - + + @@ -28775,7 +28863,7 @@ - + @@ -28783,13 +28871,13 @@ - + - + - + @@ -28800,40 +28888,40 @@ - + - + - + - + - + - + - + - + - - + + - - + + @@ -28842,23 +28930,23 @@ - + - + - + - + - + - + - + @@ -28872,15 +28960,15 @@ - + - + - + @@ -28892,197 +28980,197 @@ - - - - - - - - - - - - - - + + + + + - - - - + + + + + + + + - - + + + + + + + - - - - + + + + - - + + - - + + - - + + - + - - - + + + - + - - - + + + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - - - + + + + - - - - + + + + - + @@ -29091,41 +29179,41 @@ - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + @@ -29134,21 +29222,21 @@ - + - + - + - + - + - + @@ -29159,62 +29247,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29222,271 +29310,271 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - - - - - - + + + + + + - - - - - - + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - - - + + + - - - + + + - + - - + + - - + + - - + + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - - - - - - - - + + - - - - - - - - - - - - - - - + - + - - - - + + + - - - + + + + + + - - - - - - - - - - - + + - - + + + - - - + + + + - - - - + + + - - - - + + + + + + - - - - - + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + @@ -29494,38 +29582,38 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -29535,10 +29623,10 @@ - + - + @@ -29556,34 +29644,34 @@ - + - + - + - + - + - + - + - + @@ -29613,22 +29701,22 @@ - + - + - + - + @@ -29652,52 +29740,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29712,25 +29800,25 @@ - + - + - + - + - + - + @@ -29739,19 +29827,19 @@ - + - + - + - + - + @@ -29760,101 +29848,101 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -29867,7 +29955,7 @@ - + @@ -29880,286 +29968,286 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30168,10 +30256,10 @@ - + - + @@ -30183,35 +30271,35 @@ - + - + - + - + - + - + - + - + - - + + - + @@ -30220,7 +30308,7 @@ - + @@ -30234,37 +30322,37 @@ - + - + - + - + - + - + - + - + @@ -30273,25 +30361,25 @@ - + - + - + - + - + - + - + @@ -30303,44 +30391,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30360,40 +30448,40 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -30405,10 +30493,10 @@ - + - + @@ -30431,25 +30519,25 @@ - + - + - + - + - + - + @@ -30467,61 +30555,61 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30529,136 +30617,136 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30669,7 +30757,7 @@ - + @@ -30678,36 +30766,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -30715,59 +30803,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + @@ -30775,96 +30863,96 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30894,13 +30982,13 @@ - + - + @@ -30936,7 +31024,7 @@ - + @@ -30972,7 +31060,7 @@ - + @@ -30990,19 +31078,19 @@ - + - + - + @@ -31011,25 +31099,25 @@ - + - - + + - + - + - + - + @@ -31037,511 +31125,511 @@ - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + + + - + + - + + - - - + - - - - - + + + - - - + + + + + - - - + + + - - - - - - + + - - + + - - - - + + + + - - - - + - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - - - - + + + - - - - + + - - - + + + - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - + - - - - - - - - - - - + + + - - - + + + + - - - - + + - - + + + - - + + + - + - - - + + + + + + - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + @@ -31550,39 +31638,39 @@ - + - - + + - - + + - - - + + + - + - - - + + + - + - - - + + + @@ -31593,35 +31681,35 @@ - - + + - - + + - + - + - + - + - + - + @@ -31638,22 +31726,22 @@ - + - + - + - + - + - + - + @@ -31662,18 +31750,18 @@ - + - + - + - + @@ -31684,13 +31772,13 @@ - + - + - + @@ -31699,176 +31787,176 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -31877,595 +31965,595 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - + + + + + - - - - + + + + - - + + + - - - + + - - + + + + - - + + + + + + - - - - + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - - + + + - + - - + + - - + + - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - - + + + - + - - - + + + @@ -32473,372 +32561,372 @@ - + - + - + - + - - + + - + - - + + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - + + + + + + + + - - - - - - - - - - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -32849,92 +32937,92 @@ - - - + + + - - - + + + - + - + - + - - + + - - + + - - + + - - + + - + - - - + + + - + - + - - + + - - + + - - - - - - + + + + + + - - + + - + - + - + @@ -32943,136 +33031,136 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -33081,157 +33169,157 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -33240,12 +33328,12 @@ - + - + @@ -33254,13 +33342,13 @@ - + - + @@ -33269,10 +33357,10 @@ - + - + @@ -33281,81 +33369,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -33363,465 +33451,465 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + - + + + + + + + + + + + + + + + + + + + - + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - - + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - + - + - - + + - + - + - + - + - - + + - - - + + + - + - + - + - + - + - - + + - + - - - - - + + + + + - - + + - - + + - + - + - - - - + + + + - - + + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + @@ -33829,20 +33917,20 @@ - + - + - + - + - + @@ -33863,16 +33951,16 @@ - + - + - + - + @@ -33884,19 +33972,19 @@ - + - + - + - + @@ -33905,19 +33993,19 @@ - + - + - + - + @@ -33931,200 +34019,200 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -34156,70 +34244,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -34230,17 +34318,17 @@ - + - + - - + + @@ -34248,132 +34336,132 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -34382,26 +34470,26 @@ - + - + - + - + - + - + @@ -34410,193 +34498,193 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + + + + + + - - - - + + - - - - - + + + - - + + + - + - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - + + - + - + @@ -34608,7 +34696,7 @@ - + @@ -34616,25 +34704,25 @@ - + - + - + - + - + @@ -34649,38 +34737,38 @@ - - + + - + - + - + - + - + - + - + - + @@ -34698,7 +34786,7 @@ - + @@ -34710,24 +34798,24 @@ - + - + - + - + - + - + @@ -34739,141 +34827,141 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -34896,45 +34984,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -34943,19 +35031,19 @@ - + - + - + - + - + @@ -34967,28 +35055,28 @@ - + - + - + - + - + - + @@ -35000,10 +35088,10 @@ - - + + - + @@ -35012,22 +35100,22 @@ - + - + - + - + - + - + @@ -35042,447 +35130,447 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - + + + + - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - + + - - - + + + + + - - - + + + - - + + + + - - + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + @@ -35491,83 +35579,83 @@ - + - - - + + + - - + + - + - + - + - + - - + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -35579,225 +35667,231 @@ - + - + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -35809,143 +35903,143 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - + + - + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - + - + - + - + - + - + - + - + - + @@ -35954,9 +36048,9 @@ - + - + @@ -35968,118 +36062,118 @@ - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36100,7 +36194,7 @@ - + @@ -36109,10 +36203,10 @@ - + - + @@ -36121,24 +36215,24 @@ - + - + - + - + - + - + - + @@ -36159,25 +36253,25 @@ - + - + - + - + - + - + @@ -36189,24 +36283,24 @@ - + - + - + - + - + - + @@ -36215,12 +36309,12 @@ - + - + - + @@ -36238,18 +36332,18 @@ - + - + - + - + - + @@ -36257,61 +36351,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36320,7 +36414,7 @@ - + @@ -36344,16 +36438,16 @@ - + - + - + @@ -36362,7 +36456,7 @@ - + @@ -36371,7 +36465,7 @@ - + @@ -36386,13 +36480,13 @@ - + - + - + @@ -36400,10 +36494,10 @@ - + - + @@ -36421,16 +36515,16 @@ - + - + - + - + @@ -36439,189 +36533,189 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36656,10 +36750,10 @@ - + - + @@ -36667,7 +36761,7 @@ - + @@ -36685,45 +36779,45 @@ - + - + - + - + - + - + - + - + - + - + @@ -36732,15 +36826,15 @@ - + - + - + - + @@ -36754,410 +36848,410 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - + + + - + - + - + - - + + - - + + - - - - + + + + - - - + + + - - + + - - + + - + - - - + + + - - + + - - + + - - + + - - - + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - + - - + + - + - + @@ -37169,81 +37263,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37252,211 +37346,211 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37465,16 +37559,16 @@ - + - - + + - + @@ -37485,68 +37579,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37555,91 +37649,91 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37648,75 +37742,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37725,7 +37819,7 @@ - + @@ -37734,12 +37828,12 @@ - + - + - + @@ -37748,34 +37842,34 @@ - + - + - + - + - + - + - + - + - + @@ -37790,88 +37884,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -37882,14 +37976,14 @@ - - + + - + - - + + @@ -37898,47 +37992,47 @@ - - + + - + - + - + - + - + - + - + - + - + - + - - - + + + @@ -37948,123 +38042,123 @@ - - - + + + - + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -38079,14 +38173,14 @@ - + - + - - + + @@ -38097,27 +38191,27 @@ - - + + - + - + - + - + - + @@ -38126,10 +38220,10 @@ - + - + @@ -38137,23 +38231,23 @@ - + - + - + - + - + - + - + @@ -38164,390 +38258,390 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - - - + + + + + + + - - + + - - + + + - - - - + + + + + + - - + + + + + + + - - + + + + + - - - - - - - - - - - - - - - - + + + - - - + + + + - + - - + + + + + + + + + + + + + + + + + - - - + + + - - - + + - - + + - - + + + - - - + + + - - - - + + + - - - - - - - - - - - - - - - - - + + + + - - - + + + - - + + + - - - + + - - - + + - + - - + - - - + + + + - - - + + + - - - + + + - - - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + @@ -38555,51 +38649,51 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -38608,43 +38702,43 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -38652,163 +38746,163 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - + - - + + - - + + - - - + + + - - - + + + - + @@ -38816,11 +38910,11 @@ - + - + @@ -38828,16 +38922,16 @@ - + - + - + @@ -38849,41 +38943,41 @@ - + - + - - + + - + - + - + - + - + - + - + @@ -38895,168 +38989,168 @@ - - - - - - + + + + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + @@ -39065,109 +39159,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39176,7 +39270,7 @@ - + @@ -39188,76 +39282,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39268,49 +39362,49 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -39319,28 +39413,28 @@ - + - + - + - + - + - + @@ -39349,51 +39443,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39402,7 +39496,7 @@ - + @@ -39411,22 +39505,22 @@ - + - + - + - + @@ -39465,193 +39559,193 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39660,25 +39754,25 @@ - + - + - + - + - + - + - + @@ -39687,99 +39781,99 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -39794,10 +39888,10 @@ - + - + @@ -39805,148 +39899,148 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -39988,18 +40082,18 @@ - + - + - + - + @@ -40035,7 +40129,7 @@ - + @@ -40098,14 +40192,14 @@ - + - - + + @@ -40113,71 +40207,71 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40186,41 +40280,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40229,18 +40323,18 @@ - + - + - + - + - + @@ -40249,19 +40343,19 @@ - + - + - + - + - + @@ -40270,13 +40364,13 @@ - + - + - + @@ -40285,54 +40379,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40341,128 +40435,128 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40489,65 +40583,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + @@ -40556,13 +40650,13 @@ - + - + @@ -40576,12 +40670,12 @@ - + - + - + @@ -40590,17 +40684,17 @@ - + - + - - - + + + @@ -40617,136 +40711,136 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -40758,112 +40852,112 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -40872,26 +40966,26 @@ - + - + - + - + - + - + @@ -40900,21 +40994,21 @@ - + - + - + - + - + @@ -40934,7 +41028,7 @@ - + @@ -40948,52 +41042,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41011,269 +41105,269 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41317,9 +41411,9 @@ - + - + @@ -41346,201 +41440,201 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41554,7 +41648,7 @@ - + @@ -41562,46 +41656,46 @@ - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + @@ -41610,10 +41704,10 @@ - + - + @@ -41622,29 +41716,29 @@ - + - + - + - + - + - + - + - - + + @@ -41652,151 +41746,151 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -41805,7 +41899,7 @@ - + @@ -41814,45 +41908,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -41863,144 +41957,144 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + @@ -42010,62 +42104,62 @@ - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -42080,55 +42174,55 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -42146,1106 +42240,1106 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - - - + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + - - - + + - - - + + - - - + + - - - - - - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - + + + - - + + + - - - - + + + + + + - - - + + - - - - - + + - - - - + + + + + - - - - + + + - - + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + - - - + + + - - - + + + + - - - - + + - - - - - - + + + + - - + + + + + + - - - + + + + + - + + + + + + + - - - + + + + + - - + + + + + + - - - + + + + + - - - - - - + + + - - + + + - + + + + - - - - + + + + + + - - - - - - - - - - - - + + - - + + + - - + - - - - + + + - - - + + - - + + + - - + + + + + + - + + - - + - - + + + + - - - + + + + + + + + + + + + - - + + - - + + - + + + + - - - + + + - - - - - - - + + - - + + - - + - - - - - - + + - - - - + + + - - - - + + + + - - - - + + + - - - - + + + - - - - - + + - - - - - + + + + - - + + + + + + + + - - + + + + + + + + + + + + + + + + + - - + + + + - - + + + + - - - - + + + + - - - + + + + - - + + + + + - - + + + + + - - - + + - - - - - - - - - - - - + + - - + + - - + + - - - + + + + - - - - + + + - - - - + + - - - + + - - + + + - - + + - - - + + + - - - + + + - - - + + - - - + + - - - + + + - - - + + + + - - - + + + + - - + + + - - - + + - - - + + - - - + + + - - - - + + + - - - - - + + + - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - - + + - - + + @@ -43253,10 +43347,10 @@ - + - + @@ -43265,12 +43359,12 @@ - + - + - + @@ -43282,7 +43376,7 @@ - + @@ -43297,10 +43391,10 @@ - + - + @@ -43309,102 +43403,102 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43413,44 +43507,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43458,60 +43552,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43520,7 +43614,7 @@ - + @@ -43538,16 +43632,16 @@ - + - + - - + + - + @@ -43556,43 +43650,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43610,322 +43704,322 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - + + + - - - + + + - - + + - + - - + + - - - + + + - - - + + + - - - + + + - - + + - + - - + + - - + + - - + + - - - + + + - + - - + + - - - + + + - - - - - + + + + + - - - + + + - + - + - - - + + + - - + + - + - - - - + + + + - + - + - + - + - - - - + + + + - + - + - + - + @@ -43940,18 +44034,18 @@ - + - + - + - + @@ -43960,97 +44054,97 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44062,7 +44156,7 @@ - + @@ -44071,83 +44165,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44156,23 +44250,23 @@ - + - + - + - + - + - + - + @@ -44181,440 +44275,440 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + - - - + + + - - - - + + + + + - - - + + + - - - - + + + - - - + + - - + + + - - - + + + - - - + + - - - - + + + + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - - + + + - - - - - - + + + + + + - + - + - - + + - - + + - + - - - + + + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -44641,347 +44735,347 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - + + + + - - - - - - - - - - - - - + + + - - - - - - + + + + - - - - - - - + + - - - + - - - - + + - - + + + + - + + + + + + + + + + + - - + + + + + + + + - - - - - - + + + - - - - - - - - - + + + + + + + + + - - - + + + + - - - + + + + - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - - + + - - - + + + - - + + - + - + - + @@ -44996,7 +45090,7 @@ - + @@ -45014,62 +45108,62 @@ - + - - + + - - + + - - + + - + - - - + + + - + - - + + - - + + - - + + - + - - + + - - + + @@ -45078,73 +45172,73 @@ - - - - - + + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - + + - - - + + + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + - + - + @@ -45153,385 +45247,385 @@ - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - - - + + + - + - + - + @@ -45561,13 +45655,13 @@ - + - + @@ -45603,7 +45697,7 @@ - + @@ -45639,7 +45733,7 @@ - + @@ -45657,19 +45751,19 @@ - + - + - + @@ -45678,15 +45772,15 @@ - + - + - + - + @@ -45694,15 +45788,15 @@ - + - + - + @@ -45710,37 +45804,37 @@ - + - + - + - + - + - + - + - + @@ -45749,17 +45843,17 @@ - + - + - + - + @@ -45768,242 +45862,242 @@ - + - + - - + + - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - - - - - + + + + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - + - + - + - - - + + + - - - + + + - - + + - + - + - - + + @@ -46011,181 +46105,181 @@ - + - + - + - + - - + + - - - + + + - + - + - + - - + + - - + + - - - + + + - + - + - - - + + + - - + + - - - - + + + + - - - - - - + + + + + + - + - - + + - + - - - - + + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - + - - - + + + - - + + - + - + @@ -46197,28 +46291,28 @@ - + - + - - - + + + - - + + - + - + @@ -46227,16 +46321,16 @@ - + - - + + - + @@ -46250,13 +46344,13 @@ - + - + @@ -46274,13 +46368,13 @@ - + - + - + @@ -46288,129 +46382,129 @@ - + - + - + - + - - - - + + + + - - + + - + - - + + - - - + + + - + - - + + - - + + - + - + - + - + - - + + - + - - + + - + - - + + - + - + - + - - + + - - - + + + - - + + @@ -46421,146 +46515,146 @@ - - + + - - - - + + + + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -46593,41 +46687,41 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -46638,8 +46732,8 @@ - - + + @@ -46648,35 +46742,35 @@ - + - + - + - + - + - + - + - + @@ -46685,40 +46779,40 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -46730,23 +46824,23 @@ - + - + - + - + - + - + - + @@ -46755,7 +46849,7 @@ - + @@ -46770,250 +46864,250 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47022,114 +47116,114 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47138,135 +47232,135 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - + + - - - - - - - + + + + + + + - + - + - + @@ -47278,118 +47372,118 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47412,34 +47506,34 @@ - + - + - + - + - + - + - + - + @@ -47457,7 +47551,7 @@ - + @@ -47475,13 +47569,13 @@ - + - + - + @@ -47489,31 +47583,31 @@ - + - + - - + + - + - + - + - + @@ -47521,287 +47615,287 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47809,10 +47903,10 @@ - + - + @@ -47821,49 +47915,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -47883,77 +47977,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -47962,19 +48056,19 @@ - + - + - + - - + + @@ -47990,88 +48084,88 @@ - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -48080,15 +48174,15 @@ - + - + - + @@ -48097,7 +48191,7 @@ - + @@ -48106,372 +48200,372 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + - - + + - - - + + + + - - + + - - - + - - - + + - - - + + - - - - - + + + - - - - - - + + - - - - + + + + + + - + + - - + + + - - + + + - - + + - + + + - - + + + - - + + + - - + + + + + - - + + + + + + - - - + + + + - - + + + + + + - - + + + - - - - - - - - + + + - - + + + + + + + - - + + + - - + + + - - + + + - - + + + + - - - - - - - - + + + - - - + + - - - + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -48479,116 +48573,116 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -48597,41 +48691,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -48640,39 +48734,39 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -48681,263 +48775,263 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - - + + - - + + - - + + - - + + - - + + - + @@ -48948,115 +49042,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -49068,231 +49162,231 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -49303,30 +49397,30 @@ - + - + - + - + - + - + - + - + @@ -49346,7 +49440,7 @@ - + @@ -49357,10 +49451,10 @@ - + - + @@ -49369,33 +49463,33 @@ - + - + - + - + - + - + - + - + - + @@ -49404,7 +49498,7 @@ - + @@ -49413,239 +49507,239 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - + - - + + - - + + - + - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + - - + + + + - - - + + + - - + + + - - - - + + + - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + @@ -49674,19 +49768,19 @@ - + - - + + - + - + @@ -49697,13 +49791,13 @@ - + - + - + @@ -49712,13 +49806,13 @@ - + - + @@ -49730,10 +49824,10 @@ - + - + @@ -49742,28 +49836,28 @@ - + - + - + - + - + - + @@ -49772,50 +49866,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -49823,235 +49917,235 @@ - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -50066,89 +50160,89 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -50157,73 +50251,73 @@ - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + @@ -50232,13 +50326,13 @@ - + - + - + @@ -50247,32 +50341,32 @@ - + - + - + - + - + - + - + - + - + @@ -50281,13 +50375,13 @@ - + - + - + @@ -50323,19 +50417,19 @@ - + - + - + - + @@ -50344,108 +50438,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + @@ -50472,9 +50566,9 @@ - + - + @@ -50483,31 +50577,31 @@ - + - + - + - + - + - + - + - - + + @@ -50517,220 +50611,220 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + + - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + + + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + @@ -50739,25 +50833,25 @@ - + - + - + - + - + - + - + @@ -50784,10 +50878,10 @@ - + - + @@ -50796,7 +50890,7 @@ - + @@ -50805,20 +50899,20 @@ - + - + - - + + - + @@ -50826,18 +50920,18 @@ - + - + - + - + @@ -50849,9 +50943,9 @@ - + - + @@ -50860,134 +50954,134 @@ - + - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - + @@ -50995,11 +51089,11 @@ - + - - + + @@ -51010,140 +51104,148 @@ - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51152,210 +51254,210 @@ - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - + + + - - + + + - - + + + + - - - - - - - + + + + + + + + + + + + + - + - - - + + + - - - - + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + - - - + - - - - - - - - - - - - - - - - - + + - - - - - + + + + - - - - - + + + + - - - - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + @@ -51363,129 +51465,110 @@ - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - + - - - + + + - + - + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + + + + + + + + + - + - + - + @@ -51509,92 +51592,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51603,67 +51686,67 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51674,47 +51757,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51726,44 +51809,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -51775,55 +51858,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51838,19 +51921,19 @@ - + - + - + - + @@ -51859,91 +51942,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51955,125 +52038,125 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52081,13 +52164,13 @@ - + - + - + @@ -52095,42 +52178,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52138,20 +52221,20 @@ - + - + - + - + - - + + @@ -52159,7 +52242,7 @@ - + @@ -52170,9 +52253,9 @@ - + - + @@ -52181,7 +52264,7 @@ - + @@ -52190,7 +52273,7 @@ - + @@ -52202,45 +52285,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52248,37 +52331,37 @@ - + - + - + - + - + - + - + - + - + @@ -52286,22 +52369,22 @@ - + - + - + - + - + - + @@ -52310,50 +52393,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52365,75 +52448,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -52442,13 +52525,13 @@ - + - + - + @@ -52456,25 +52539,25 @@ - + - + - + - + - + - + - + @@ -52498,16 +52581,16 @@ - + - + - + @@ -52516,22 +52599,22 @@ - + - + - + - + - + @@ -52540,45 +52623,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -52587,7 +52670,7 @@ - + @@ -52596,38 +52679,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -52642,10 +52725,10 @@ - + - + @@ -52656,512 +52739,516 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + + + + + + - + - + - - - - + - + - - + + - - + + - - + + + + + - + - - - - - + + - + - + - + - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - + + - - + + - + - - + + - + - + - + - - - - + + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + @@ -53169,410 +53256,406 @@ - - - + + + - - + + - + - + - - - + + + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - - + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + + - - + + + + + + + + + - - - - - - - - - + + + - - - + + + + + + + - - - - + + + - - - + + + - - - - - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - + - + - + - - + + - - + + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - - + + - + - - - + + + - + - + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -53581,73 +53664,73 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -53662,16 +53745,16 @@ - + - + - + - + @@ -53683,48 +53766,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -53733,19 +53816,19 @@ - + - + - + - + - + @@ -53753,34 +53836,34 @@ - + - + - + - + - + - + - + - + @@ -53789,25 +53872,25 @@ - + - + - - + + - + - + @@ -53819,7 +53902,7 @@ - + @@ -53828,126 +53911,126 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -53955,9 +54038,9 @@ - - - + + + @@ -53984,35 +54067,35 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -54021,291 +54104,291 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + @@ -54318,77 +54401,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54397,27 +54480,27 @@ - + - + - + - + - + - + - + - + @@ -54426,382 +54509,382 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - + + + + + - - + - - + + + - + + + - - - + - - - - + + + - - + + - + + + + + + + + - - + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + - - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -54810,137 +54893,137 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -54951,22 +55034,22 @@ - + - + - + - + - + @@ -54984,13 +55067,13 @@ - + - + - + @@ -54999,60 +55082,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -55061,18 +55144,18 @@ - + - + - + - + @@ -55080,10 +55163,10 @@ - + - + @@ -55091,32 +55174,32 @@ - + - + - + - + - + - + - + - + - + @@ -55125,55 +55208,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + @@ -55181,56 +55264,56 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - + @@ -55238,19 +55321,19 @@ - - + + - - + + - - + + - + @@ -55268,10 +55351,10 @@ - + - + @@ -55280,7 +55363,7 @@ - + @@ -55289,47 +55372,47 @@ - + - + - + - - - + + + - + - + - - + + - + - + - + @@ -55345,7 +55428,7 @@ - + @@ -55366,34 +55449,34 @@ - + - + - - + + - - + + - + - + - - + + - - + + - - + + @@ -55415,19 +55498,19 @@ - + - + - + - + - + @@ -55435,29 +55518,29 @@ - + - - + + - + - - + + - - + + - + @@ -55466,46 +55549,46 @@ - + - + - + - - + + - + - + - + - + - - - - + + + + - - - + + + - + - - - - + + + + @@ -55514,7 +55597,7 @@ - + @@ -55524,11 +55607,11 @@ - + - + @@ -55545,87 +55628,87 @@ - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - - + + + - + - - + + - + - + - + - + @@ -55633,7 +55716,7 @@ - + @@ -55643,7 +55726,7 @@ - + @@ -55651,44 +55734,44 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + @@ -55696,10 +55779,10 @@ - + - + @@ -55709,148 +55792,148 @@ - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - - - - - - - - - - - - - - - - - + + - + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + - - + + - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + @@ -55862,34 +55945,34 @@ - + - + - + - + - + - + - + - + @@ -55904,19 +55987,19 @@ - + - + - + - + @@ -55925,25 +56008,25 @@ - + - + - + - + - + - + @@ -55955,46 +56038,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -56003,13 +56086,13 @@ - + - + - + @@ -56018,19 +56101,19 @@ - + - + - + - + @@ -56042,72 +56125,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -56127,12 +56210,12 @@ - + - + - + @@ -56144,61 +56227,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -56207,33 +56290,33 @@ - + - + - + - + - + - + - + - + - + @@ -56242,46 +56325,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -56290,19 +56373,19 @@ - + - + - + - + @@ -56314,28 +56397,28 @@ - + - + - + - + - + - + - + @@ -56344,53 +56427,53 @@ - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -56398,28 +56481,28 @@ - + - + - + - - + + - + - + - + @@ -56434,73 +56517,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -56515,32 +56598,32 @@ - + - + - + - + - + - + - - + + @@ -56557,23 +56640,23 @@ - + - + - + - + - + - + @@ -56585,24 +56668,24 @@ - + - - + + - - + + - + @@ -56610,10 +56693,10 @@ - + - + @@ -56625,36 +56708,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -56663,39 +56746,39 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -56710,7 +56793,7 @@ - + @@ -56722,44 +56805,44 @@ - + - + - - + + - + - + - + - + - + - + - + - + @@ -56768,11 +56851,11 @@ - + - - + + @@ -56782,16 +56865,16 @@ - + - + - + - - + + @@ -56805,7 +56888,7 @@ - + @@ -56816,32 +56899,32 @@ - + - + - + - + - + - + - + - + - + - + @@ -56850,225 +56933,225 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + @@ -57077,10 +57160,10 @@ - + - + @@ -57091,7 +57174,7 @@ - + @@ -57099,57 +57182,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -57169,46 +57252,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -57216,10 +57299,10 @@ - + - + @@ -57227,21 +57310,21 @@ - + - + - + - + - + - + @@ -57249,354 +57332,354 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -57604,21 +57687,21 @@ - + - + - + - + - + - + @@ -57627,129 +57710,129 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -57760,44 +57843,44 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -57810,69 +57893,69 @@ - - + + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -57890,80 +57973,80 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -57971,34 +58054,34 @@ - + - + - - + + - + - + - + - + - + - + @@ -58007,43 +58090,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -58061,19 +58144,19 @@ - + - + - + - + @@ -58082,43 +58165,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -58130,75 +58213,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -58236,7 +58319,7 @@ - + @@ -58256,13 +58339,13 @@ - + - + - + @@ -58271,160 +58354,160 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -58435,10 +58518,10 @@ - + - + @@ -58447,40 +58530,40 @@ - + - + - + - + - + - + - + - + - - + + - + - + @@ -58489,220 +58572,220 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -58711,70 +58794,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + @@ -58782,416 +58865,416 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -59211,7 +59294,7 @@ - + @@ -59223,9 +59306,9 @@ - + - + @@ -59240,986 +59323,986 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + - - - + + - - - + + - - - - + + - + - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - - + - + - - - - - - - - - + + - - + + + + + + + - + - - + - + - - + - + - - + - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - + + + - + - - + + + + - + - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - - + + + - - - - - - + + + + - - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - + - + - + - + - + - + - + - - + + - - + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - + + @@ -60233,8 +60316,8 @@ - - + + @@ -60242,169 +60325,169 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - - + + + - - - - - - + + + + + + - + - - + + - - + + - + - + - + - - - - + + + + - - - + + + - - + + - + - + - - + + - - + + - + - + @@ -60412,20 +60495,20 @@ - - + + - + - + @@ -60444,85 +60527,85 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abi_gki_aarch64_de197c5a4f.xml b/abi_gki_aarch64_813bf83282.xml similarity index 91% rename from abi_gki_aarch64_de197c5a4f.xml rename to abi_gki_aarch64_813bf83282.xml index 88600e98cdf9..c418c519d7cc 100644 --- a/abi_gki_aarch64_de197c5a4f.xml +++ b/abi_gki_aarch64_813bf83282.xml @@ -1480,6 +1480,7 @@ + @@ -23272,12 +23273,12 @@ - + - + - + @@ -26128,30 +26129,30 @@ - + - + - + - + - + - + - + - + - + @@ -26932,7 +26933,65 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -26958,13 +27017,13 @@ - + - + - + @@ -26978,7 +27037,7 @@ - + @@ -26986,10 +27045,10 @@ - + - + @@ -27014,7 +27073,7 @@ - + @@ -27028,7 +27087,7 @@ - + @@ -27036,16 +27095,16 @@ - - + + - + - + @@ -27057,7 +27116,7 @@ - + @@ -27066,7 +27125,7 @@ - + @@ -27078,19 +27137,19 @@ - + - + - + - + - + @@ -27099,20 +27158,20 @@ - + - + - + - + - + @@ -27121,16 +27180,16 @@ - + - + - - + + @@ -27167,15 +27226,15 @@ - + - + - + @@ -27204,7 +27263,7 @@ - + @@ -27212,7 +27271,7 @@ - + @@ -27220,7 +27279,7 @@ - + @@ -27228,17 +27287,17 @@ - + - + - + - + @@ -27259,15 +27318,15 @@ - + - + - + - + @@ -27281,7 +27340,7 @@ - + @@ -27295,18 +27354,18 @@ - + - + - + - + @@ -27333,10 +27392,10 @@ - + - + @@ -27347,22 +27406,22 @@ - + - + - + - + - + @@ -27373,7 +27432,7 @@ - + @@ -27384,40 +27443,40 @@ - + - + - + - + - + - + - - + + - + - + - + - + @@ -27429,25 +27488,25 @@ - + - + - + - + - + @@ -27471,18 +27530,18 @@ - + - + - + @@ -27496,8 +27555,8 @@ - - + + @@ -27519,28 +27578,28 @@ - - - - + + + + - + - + - + @@ -27552,53 +27611,53 @@ - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -27616,64 +27675,64 @@ - + - + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -27687,217 +27746,217 @@ - - - + + + - - - + + + - + - - - + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -27905,65 +27964,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27971,47 +28030,47 @@ - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -28026,17 +28085,17 @@ - + - + - + - + @@ -28046,15 +28105,15 @@ - + - + - + @@ -28064,66 +28123,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -28134,137 +28193,137 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + @@ -28274,42 +28333,42 @@ - + - + - + - + - + - + - + - + - + - + @@ -28321,7 +28380,7 @@ - + @@ -28337,64 +28396,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -28580,7 +28581,7 @@ - + @@ -28596,7 +28597,7 @@ - + @@ -30248,7 +30249,7 @@ - + @@ -31403,7 +31404,7 @@ - + @@ -32442,7 +32443,7 @@ - + @@ -33970,10 +33971,10 @@ - + - + @@ -33982,7 +33983,7 @@ - + @@ -34012,7 +34013,7 @@ - + @@ -34043,7 +34044,7 @@ - + @@ -34073,7 +34074,7 @@ - + @@ -36211,10 +36212,10 @@ - + - + @@ -37374,7 +37375,7 @@ - + @@ -37938,7 +37939,7 @@ - + @@ -39591,15 +39592,15 @@ - + - + - + - + @@ -39642,8 +39643,8 @@ - - + + @@ -39667,40 +39668,40 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - + + + + + + @@ -39813,7 +39814,7 @@ - + @@ -39845,7 +39846,7 @@ - + @@ -47897,18 +47898,18 @@ - + - + - + @@ -47917,14 +47918,14 @@ - + - + @@ -48011,7 +48012,7 @@ - + @@ -48356,11 +48357,11 @@ - + - + @@ -48371,7 +48372,7 @@ - + @@ -48386,21 +48387,21 @@ - + - + - + - + @@ -48478,7 +48479,7 @@ - + @@ -48520,7 +48521,7 @@ - + @@ -48598,7 +48599,7 @@ - + @@ -48611,7 +48612,7 @@ - + @@ -48764,7 +48765,7 @@ - + @@ -48786,8 +48787,8 @@ - - + + @@ -48829,10 +48830,10 @@ - + - + @@ -48885,17 +48886,17 @@ - - + + - - + + - - + + @@ -48920,7 +48921,7 @@ - + @@ -48928,7 +48929,7 @@ - + @@ -48951,7 +48952,7 @@ - + @@ -49000,23 +49001,23 @@ - - + + - + - + - + @@ -49140,7 +49141,7 @@ - + @@ -49158,7 +49159,7 @@ - + @@ -49279,7 +49280,7 @@ - + @@ -49442,14 +49443,14 @@ - + - + @@ -50452,12 +50453,7 @@ - - - - - - + @@ -50549,13 +50545,13 @@ - + - + @@ -50578,7 +50574,7 @@ - + @@ -50626,15 +50622,15 @@ - + - + - + @@ -50654,7 +50650,7 @@ - + @@ -50662,31 +50658,31 @@ - + - + - + - + - - - - - + + + + + + - - + @@ -50725,11 +50721,11 @@ - + - + @@ -50741,7 +50737,7 @@ - + @@ -50751,7 +50747,7 @@ - + @@ -50762,7 +50758,7 @@ - + @@ -50777,34 +50773,34 @@ - + - + - + - + - + - + - + - + @@ -50816,38 +50812,38 @@ - + - + - + - + - + - + - + - + @@ -50857,9 +50853,9 @@ - + - + @@ -50867,7 +50863,7 @@ - + @@ -50875,42 +50871,42 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -50918,13 +50914,13 @@ - + - + - + @@ -50938,7 +50934,7 @@ - + @@ -50946,57 +50942,57 @@ - - - + + + + - - - + + - + - + - + - - + + + + + + + - - + + + + - - - - - - - - - + + @@ -51027,7 +51023,7 @@ - + @@ -51047,9 +51043,9 @@ - + - + @@ -51061,8 +51057,8 @@ - - + + @@ -51079,13 +51075,13 @@ - + - + - + @@ -51093,14 +51089,14 @@ - + - + @@ -51120,7 +51116,7 @@ - + @@ -51130,118 +51126,118 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - + + + + + + - + - - - - - - - - - - - + + + - + + + + + + + + + - + - - + + - - - + + + - - + + - + - - + + - - + + - - + + @@ -51255,7 +51251,7 @@ - + @@ -51428,7 +51424,7 @@ - + @@ -51438,110 +51434,110 @@ - - + + - - - - + + + + - - + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - + - + - + @@ -51551,15 +51547,15 @@ - + - + - + @@ -51571,7 +51567,7 @@ - + @@ -51580,21 +51576,21 @@ - + - + - + - + @@ -51675,7 +51671,7 @@ - + @@ -51689,7 +51685,7 @@ - + @@ -51740,14 +51736,14 @@ - + - - - + + + @@ -51771,8 +51767,8 @@ - - + + @@ -51786,7 +51782,7 @@ - + @@ -51802,7 +51798,7 @@ - + @@ -51827,19 +51823,19 @@ - + - + - + - + - + @@ -51852,7 +51848,7 @@ - + @@ -51863,7 +51859,7 @@ - + @@ -51874,7 +51870,7 @@ - + @@ -51882,13 +51878,13 @@ - + - + @@ -51902,15 +51898,15 @@ - + - + - + @@ -51921,22 +51917,22 @@ - + - + - + - + @@ -51944,14 +51940,14 @@ - + - + @@ -51961,11 +51957,11 @@ - + - + @@ -51973,10 +51969,10 @@ - + - + @@ -52007,7 +52003,7 @@ - + @@ -52016,53 +52012,53 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -52076,7 +52072,7 @@ - + @@ -52096,17 +52092,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -52165,18 +52161,18 @@ - + - + - + - + @@ -52186,43 +52182,43 @@ - + - + - + - + - + - + - + - + @@ -52237,24 +52233,24 @@ - + - + - + - + - + @@ -52262,10 +52258,10 @@ - + - + @@ -52273,9 +52269,9 @@ - + - + @@ -52302,7 +52298,7 @@ - + @@ -52326,10 +52322,10 @@ - + - + @@ -52338,18 +52334,18 @@ - + - + - + - + - + @@ -52358,15 +52354,15 @@ - + - + - + @@ -52375,7 +52371,7 @@ - + @@ -52385,7 +52381,7 @@ - + @@ -52399,7 +52395,7 @@ - + @@ -52413,7 +52409,7 @@ - + @@ -52430,16 +52426,16 @@ - + - + - + @@ -52449,7 +52445,7 @@ - + @@ -52457,13 +52453,13 @@ - + - + @@ -52481,7 +52477,7 @@ - + @@ -52492,61 +52488,61 @@ - - - - - - - - - + + + + + + + + + + - - + - - - - + + + + - - - - - + + + + + - - - - + + + + + + + + + - + - - - - - - + - - + + @@ -52653,7 +52649,7 @@ - + @@ -52672,7 +52668,7 @@ - + @@ -52714,66 +52710,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -52840,12 +52836,12 @@ - + - + @@ -52863,21 +52859,21 @@ - + - + - + - + @@ -52891,7 +52887,7 @@ - + @@ -52899,22 +52895,22 @@ - + - + - + - + - + @@ -52928,20 +52924,20 @@ - + - + - + - + - + @@ -52953,15 +52949,15 @@ - + - + - + @@ -52969,7 +52965,7 @@ - + @@ -52989,17 +52985,17 @@ - - - - + + + + - + @@ -53062,7 +53058,7 @@ - + @@ -53083,8 +53079,8 @@ - - + + @@ -53092,15 +53088,15 @@ - - + + - + - + @@ -53116,50 +53112,50 @@ - + - + - + - + - + - + - + - + - + - + @@ -53170,7 +53166,7 @@ - + @@ -53197,7 +53193,7 @@ - + @@ -53206,7 +53202,7 @@ - + @@ -53240,14 +53236,14 @@ - - + + - - + + @@ -53255,12 +53251,12 @@ - - - - - - + + + + + + @@ -53312,13 +53308,13 @@ - + - + @@ -53339,47 +53335,47 @@ - + - - - - - + + + + + - - - - + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - - - + + + + + + - + @@ -53392,42 +53388,42 @@ - - + + - - - - - - + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + @@ -53558,7 +53554,7 @@ - + @@ -53567,15 +53563,15 @@ - + - + - + @@ -53592,12 +53588,12 @@ - + - + @@ -53636,10 +53632,10 @@ - + + - - + @@ -53662,7 +53658,7 @@ - + @@ -53685,7 +53681,7 @@ - + @@ -53711,7 +53707,7 @@ - + @@ -53719,11 +53715,11 @@ - + - + @@ -53743,10 +53739,10 @@ - + - + @@ -53767,7 +53763,7 @@ - + @@ -53791,13 +53787,13 @@ - + - + - + @@ -53808,28 +53804,28 @@ - + - + - + - + - + - - - + + + - + @@ -53845,7 +53841,7 @@ - + @@ -53871,27 +53867,27 @@ - + - + - + - + - + @@ -53902,38 +53898,38 @@ - + - + - + - + - + - + - + - - - - + + + + @@ -53980,27 +53976,27 @@ - - + + - - + + - - + + - - + + - - + + - - + + @@ -54009,7 +54005,7 @@ - + @@ -54049,7 +54045,7 @@ - + @@ -54083,20 +54079,20 @@ - + - - + + - + - + @@ -54108,7 +54104,7 @@ - + @@ -54129,12 +54125,12 @@ - + - + @@ -54149,84 +54145,84 @@ - + - + - + - + - + + - - - - + + + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - - - - + + + + + - + @@ -54238,16 +54234,16 @@ - + - + - + @@ -54340,12 +54336,12 @@ - - + + - + @@ -54353,15 +54349,15 @@ - + - - - + + + @@ -54378,10 +54374,10 @@ - + - + @@ -54398,9 +54394,9 @@ - - - + + + @@ -54505,14 +54501,14 @@ - + - + @@ -54571,7 +54567,7 @@ - + @@ -54596,25 +54592,25 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -54632,15 +54628,15 @@ - - - + + + - - + + @@ -54655,7 +54651,7 @@ - + @@ -54672,7 +54668,7 @@ - + @@ -54694,39 +54690,39 @@ - + - - - + + + - - + + - - + + - - + + - - + + - - + + @@ -54734,7 +54730,7 @@ - + @@ -54745,18 +54741,18 @@ - + - + - + @@ -54784,55 +54780,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -54846,7 +54842,7 @@ - + @@ -54972,7 +54968,7 @@ - + @@ -54984,8 +54980,8 @@ - - + + @@ -54997,7 +54993,7 @@ - + @@ -55016,7 +55012,7 @@ - + @@ -55024,7 +55020,7 @@ - + @@ -55032,7 +55028,7 @@ - + @@ -55122,8 +55118,8 @@ - - + + @@ -55260,14 +55256,14 @@ - + - + @@ -55339,13 +55335,13 @@ - + - + @@ -55366,14 +55362,14 @@ - + - + @@ -55382,7 +55378,7 @@ - + @@ -55391,7 +55387,7 @@ - + @@ -55440,7 +55436,7 @@ - + @@ -55448,7 +55444,7 @@ - + @@ -55466,24 +55462,24 @@ - + - + - - + + - + @@ -55501,7 +55497,7 @@ - + @@ -55516,10 +55512,10 @@ - - - - + + + + @@ -55544,7 +55540,7 @@ - + @@ -55552,7 +55548,7 @@ - + @@ -55561,15 +55557,15 @@ - + - + - - + + @@ -55582,29 +55578,29 @@ - + - - + + - + - + - + - + @@ -55619,21 +55615,21 @@ - + - + - + - + - + - + @@ -55647,7 +55643,7 @@ - + @@ -55655,10 +55651,10 @@ - + - + @@ -55666,7 +55662,7 @@ - + @@ -55674,24 +55670,24 @@ - + - + - + - + - + - + - + @@ -55699,10 +55695,10 @@ - + - + @@ -55741,7 +55737,7 @@ - + @@ -55774,7 +55770,7 @@ - + @@ -55792,21 +55788,21 @@ - + - + - + - + - + @@ -55839,9 +55835,9 @@ - + - + @@ -55859,7 +55855,7 @@ - + @@ -55867,7 +55863,7 @@ - + @@ -55888,7 +55884,7 @@ - + @@ -55896,7 +55892,7 @@ - + @@ -55904,23 +55900,23 @@ - + - + - + - + - + - + @@ -55929,17 +55925,17 @@ - + - + - + @@ -55960,7 +55956,7 @@ - + @@ -55975,21 +55971,21 @@ - + - + - + - + @@ -55997,114 +55993,114 @@ - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - - + + + @@ -56114,13 +56110,13 @@ - - + + - + @@ -56128,7 +56124,7 @@ - + @@ -56140,12 +56136,12 @@ - + - + @@ -56307,13 +56303,13 @@ - + - - - + + + @@ -56330,14 +56326,14 @@ - + - - - - - + + + + + @@ -56349,8 +56345,8 @@ - - + + @@ -56439,23 +56435,23 @@ - - + + - - + + - + @@ -56471,7 +56467,7 @@ - + @@ -56483,7 +56479,7 @@ - + @@ -56494,7 +56490,7 @@ - + @@ -56589,25 +56585,25 @@ - - + + - + - + - - + + @@ -56620,20 +56616,20 @@ - + - + - + @@ -56652,7 +56648,7 @@ - + @@ -56686,11 +56682,11 @@ - + - + @@ -56742,11 +56738,11 @@ - + - + @@ -57087,11 +57083,11 @@ - + - + @@ -57105,7 +57101,7 @@ - + @@ -57116,13 +57112,13 @@ - - - - - - - + + + + + + + @@ -57135,8 +57131,8 @@ - - + + @@ -57203,9 +57199,9 @@ - + - + @@ -57273,17 +57269,17 @@ - + - + - + @@ -57349,18 +57345,18 @@ - + - + - + - + @@ -57414,18 +57410,18 @@ - + - + - + @@ -57439,16 +57435,16 @@ - + - + - + @@ -57490,7 +57486,7 @@ - + @@ -57500,12 +57496,12 @@ - + - + @@ -57517,10 +57513,10 @@ - + - + @@ -57531,7 +57527,7 @@ - + @@ -57542,7 +57538,7 @@ - + @@ -57557,7 +57553,7 @@ - + @@ -57568,18 +57564,18 @@ - - - - - - - - + + + + + + + + - + @@ -57597,8 +57593,8 @@ - - + + @@ -57619,8 +57615,8 @@ - - + + @@ -57632,19 +57628,19 @@ - + - + - + - + - - + + @@ -57715,10 +57711,10 @@ - + - + @@ -57749,7 +57745,7 @@ - + @@ -57764,55 +57760,55 @@ - - + + - + - - + + - + - + - + - + - + - + - + @@ -57820,21 +57816,7 @@ - - - - - - - - - - - - - - - + @@ -57842,10 +57824,10 @@ - + - + @@ -57859,43 +57841,43 @@ - - - + + + - + - + - - + + - - + + - + - + - + - + @@ -57905,30 +57887,30 @@ - + - + - + - + - + - + @@ -57939,22 +57921,22 @@ - + - - - - - + + + + + - + - + @@ -57975,28 +57957,28 @@ - + - - - + + + - + - - + + - + - + @@ -58004,7 +57986,7 @@ - + @@ -58017,7 +57999,7 @@ - + @@ -58043,9 +58025,9 @@ - - - + + + @@ -58058,7 +58040,7 @@ - + @@ -58067,7 +58049,7 @@ - + @@ -58098,13 +58080,13 @@ - + - - - - + + + + @@ -58120,7 +58102,7 @@ - + @@ -58133,7 +58115,7 @@ - + @@ -58143,7 +58125,7 @@ - + @@ -58158,67 +58140,67 @@ - - + + - + - + - - + + - + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + @@ -58231,7 +58213,7 @@ - + @@ -58242,7 +58224,7 @@ - + @@ -58253,7 +58235,7 @@ - + @@ -58261,18 +58243,18 @@ - + - + - + @@ -58337,7 +58319,7 @@ - + @@ -58440,7 +58422,7 @@ - + @@ -58450,12 +58432,12 @@ - - - - - - + + + + + + @@ -58465,20 +58447,20 @@ - - - + + + - + - + @@ -58494,24 +58476,24 @@ - + - + - - + + - - + + @@ -58542,13 +58524,13 @@ - + - + - + @@ -58590,35 +58572,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -58627,7 +58609,7 @@ - + @@ -58635,7 +58617,7 @@ - + @@ -58656,7 +58638,7 @@ - + @@ -58664,7 +58646,7 @@ - + @@ -58675,96 +58657,96 @@ - - - - - - - - - - - + + + + + + + + + + + - - + + - + - - + + - + + + + + + + + + - + - + + - - - - - - - - - - + - + - + - + - + - - + + - + - + - - + + - - + + @@ -58788,7 +58770,7 @@ - + @@ -58801,7 +58783,7 @@ - + @@ -58818,14 +58800,14 @@ - - + + - + - + @@ -58877,19 +58859,19 @@ - + - + - - - + + + - + @@ -58898,7 +58880,7 @@ - + @@ -58910,32 +58892,32 @@ - + - + - + - + - + - + - + - + - + @@ -58950,7 +58932,7 @@ - + @@ -58970,7 +58952,7 @@ - + @@ -58990,7 +58972,7 @@ - + @@ -59004,10 +58986,10 @@ - + - + @@ -59021,13 +59003,13 @@ - + - + @@ -59035,12 +59017,12 @@ - + - + @@ -59049,74 +59031,74 @@ - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - + + - + - - + + - - + + - - + + @@ -59139,21 +59121,21 @@ - + - + - + @@ -59255,12 +59237,12 @@ - + - - + + @@ -59278,7 +59260,7 @@ - + @@ -59290,7 +59272,7 @@ - + @@ -59302,10 +59284,10 @@ - - + + - + @@ -59317,9 +59299,9 @@ - + - + @@ -59349,9 +59331,9 @@ - + - + @@ -59363,10 +59345,10 @@ - - - - + + + + @@ -59520,9 +59502,9 @@ - + - + @@ -59546,7 +59528,7 @@ - + @@ -59569,17 +59551,17 @@ - - - + + + - + - + @@ -59587,43 +59569,43 @@ - + - + - + - - - + + + - + - + - - + + - + - + - - - + + + @@ -59668,12 +59650,12 @@ - + - - + + @@ -59682,13 +59664,13 @@ - + - + - + @@ -59700,15 +59682,15 @@ - - - + + + - - + + @@ -59719,7 +59701,7 @@ - + @@ -59754,42 +59736,42 @@ - - + + - + - + - + - + - + - + + + - - - + + + - - - + - + - + @@ -59823,14 +59805,14 @@ - + - + @@ -59838,63 +59820,63 @@ - + - + - + - + - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + - + - + - - - + + + @@ -59903,11 +59885,11 @@ - - + + - + @@ -59921,13 +59903,13 @@ - + - + @@ -59935,20 +59917,20 @@ - + - + - + - + @@ -59963,7 +59945,7 @@ - + @@ -59993,46 +59975,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -60075,7 +60057,7 @@ - + @@ -60236,14 +60218,14 @@ - + - + @@ -60272,74 +60254,74 @@ - + - + - + - + - + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + @@ -60353,12 +60335,12 @@ - + - + @@ -60366,7 +60348,7 @@ - + @@ -60374,9 +60356,9 @@ - - - + + + @@ -60470,7 +60452,7 @@ - + @@ -60478,18 +60460,18 @@ - + - + - - - + + + @@ -60504,7 +60486,7 @@ - + @@ -60524,7 +60506,7 @@ - + @@ -60542,13 +60524,13 @@ - + - + @@ -60559,7 +60541,7 @@ - + @@ -60596,12 +60578,12 @@ - + + + - + - - @@ -60610,30 +60592,30 @@ - + - + - + - + - + @@ -60642,29 +60624,29 @@ - + - + - + - + - + @@ -60769,19 +60751,19 @@ - + - + - + - + @@ -60790,12 +60772,12 @@ - + - + @@ -60804,64 +60786,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -60872,15 +60854,15 @@ - + - + - + - + @@ -60889,226 +60871,226 @@ - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - - + + - + - + - - + + - + - + - + - - + + - + - - + + - + + + + + + + + + + - - - - - - - - - - + - - + + - - + + + + + + + + + + + - - - - - - - - - - - + + - - + + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - - + + - - + + - + - - + + - + - + - + @@ -61147,23 +61129,23 @@ - + - + - + - + - + - + - + @@ -61172,22 +61154,22 @@ - + - + - + - + - + - + @@ -61205,7 +61187,7 @@ - + @@ -61214,10 +61196,10 @@ - + - + @@ -61238,7 +61220,7 @@ - + @@ -61246,10 +61228,10 @@ - + - + @@ -61264,13 +61246,13 @@ - + - + - + @@ -61291,7 +61273,7 @@ - + @@ -61336,16 +61318,16 @@ - + - + - + - + @@ -61366,13 +61348,13 @@ - + - + - + @@ -61390,7 +61372,7 @@ - + @@ -61399,7 +61381,7 @@ - + @@ -61408,16 +61390,16 @@ - + - - + + - + @@ -61468,17 +61450,17 @@ - + - + - - + + @@ -61489,10 +61471,10 @@ - - - - + + + + @@ -61500,10 +61482,10 @@ - + - + @@ -61532,7 +61514,7 @@ - + @@ -61540,7 +61522,7 @@ - + @@ -61552,9 +61534,9 @@ - + - + @@ -61572,42 +61554,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -61621,13 +61603,13 @@ - - + + - + - + @@ -61645,164 +61627,164 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - + - + - + @@ -61811,79 +61793,79 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + @@ -61892,40 +61874,40 @@ - + - + - - + + - - + + - - + + - - + + - + - + @@ -61933,11 +61915,11 @@ - + - + @@ -61948,15 +61930,15 @@ - + - + - + - + @@ -61992,20 +61974,20 @@ - - - + + + - + - - + + @@ -62015,12 +61997,12 @@ - + - + @@ -62032,7 +62014,7 @@ - + @@ -62077,7 +62059,7 @@ - + @@ -62093,12 +62075,12 @@ - - + + - + @@ -62157,13 +62139,13 @@ - + - + - + @@ -62181,7 +62163,7 @@ - + @@ -62196,13 +62178,13 @@ - + - + @@ -62211,7 +62193,7 @@ - + @@ -62294,7 +62276,7 @@ - + @@ -62302,10 +62284,10 @@ - + - + @@ -62317,18 +62299,18 @@ - + - - - + + + + + - - - - - + + + @@ -62337,10 +62319,10 @@ - + - - + + @@ -62356,14 +62338,14 @@ - + - + - - + + @@ -62374,55 +62356,55 @@ - + - + - + - + - + - + - - + + - - - + + + - + - + @@ -62430,68 +62412,68 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -62511,10 +62493,10 @@ - + - + @@ -62523,30 +62505,30 @@ - + - + - + - + - + - + - + - - + + @@ -62554,7 +62536,7 @@ - + @@ -62589,7 +62571,7 @@ - + @@ -62778,7 +62760,7 @@ - + @@ -62790,7 +62772,7 @@ - + @@ -62802,7 +62784,7 @@ - + @@ -62810,7 +62792,7 @@ - + @@ -62819,18 +62801,18 @@ - + - + - + - + @@ -62866,16 +62848,16 @@ - + - + - + - + @@ -62883,12 +62865,12 @@ - + - + - + @@ -62896,10 +62878,10 @@ - + - + @@ -62914,12 +62896,12 @@ - + - + - + @@ -62927,50 +62909,50 @@ - + - - - - + + + + + + + - - - - - - - + + + + - + - + - - + + - - + + - + - + - + @@ -62978,23 +62960,23 @@ - - + + - - - + + + - - + + - + @@ -63005,7 +62987,7 @@ - + @@ -63023,7 +63005,7 @@ - + @@ -63035,15 +63017,15 @@ - + - + - + - + @@ -63060,7 +63042,7 @@ - + @@ -63083,12 +63065,12 @@ - + - + - + @@ -63109,7 +63091,7 @@ - + @@ -63121,20 +63103,20 @@ - + - + - + - + - + @@ -63143,10 +63125,10 @@ - + - + @@ -63160,7 +63142,7 @@ - + @@ -63201,25 +63183,25 @@ - - - - + + + + - + - - + + - + @@ -63239,18 +63221,18 @@ - + - + - + - + @@ -63264,7 +63246,7 @@ - + @@ -63323,50 +63305,50 @@ - - + + - + - + - + - - + + - + - + - + - - + + - - + + - + - + @@ -63375,8 +63357,8 @@ - - + + @@ -63415,7 +63397,7 @@ - + @@ -63443,14 +63425,14 @@ - + - + @@ -63458,7 +63440,7 @@ - + @@ -63466,9 +63448,9 @@ - + - + @@ -63477,11 +63459,11 @@ - - - - - + + + + + @@ -63519,7 +63501,7 @@ - + @@ -63554,7 +63536,7 @@ - + @@ -63610,7 +63592,7 @@ - + @@ -63623,7 +63605,7 @@ - + @@ -63633,7 +63615,7 @@ - + @@ -63645,7 +63627,7 @@ - + @@ -63671,30 +63653,30 @@ - + - + - + - + - + - + - + - + - + @@ -63724,7 +63706,7 @@ - + @@ -63737,49 +63719,49 @@ - - - - - - + + + + + + - + - + - + - + + + + + + + + + - - - - - - - - - + - - + + - - + + @@ -63787,8 +63769,8 @@ - - + + @@ -63835,17 +63817,17 @@ - + - + - + @@ -63856,7 +63838,7 @@ - + @@ -63869,7 +63851,7 @@ - + @@ -63890,14 +63872,14 @@ - + - + - + @@ -63925,15 +63907,15 @@ - + - + - + @@ -63942,7 +63924,7 @@ - + @@ -63983,16 +63965,16 @@ - + - + - + @@ -64004,28 +63986,28 @@ - + - + - - - - - + + + + + - - + + @@ -64036,7 +64018,7 @@ - + @@ -64048,11 +64030,11 @@ - + - + - + @@ -64065,7 +64047,7 @@ - + @@ -64076,7 +64058,7 @@ - + @@ -64087,7 +64069,7 @@ - + @@ -64095,13 +64077,13 @@ - + - + @@ -64109,7 +64091,7 @@ - + @@ -64117,7 +64099,7 @@ - + @@ -64142,23 +64124,23 @@ - - + + + + - + - + - - - - + + + + - - - + @@ -64192,7 +64174,7 @@ - + @@ -64225,7 +64207,7 @@ - + @@ -64263,7 +64245,7 @@ - + @@ -64277,18 +64259,18 @@ - + - + - + @@ -64351,28 +64333,28 @@ - - + + - - + + - + - - + + - + @@ -64382,24 +64364,24 @@ - + - + - - + + - + @@ -64437,8 +64419,8 @@ - - + + @@ -64449,30 +64431,30 @@ - + - + - + - + - - + + - + @@ -64481,7 +64463,7 @@ - + @@ -64492,19 +64474,19 @@ - + - + - + - + @@ -64518,19 +64500,19 @@ - + + + + - - - + + - - - - + + @@ -64546,7 +64528,7 @@ - + @@ -64614,41 +64596,41 @@ - - - + + + - - - + + + - + - + + + + + + + - - - - - - - + - + @@ -64663,7 +64645,7 @@ - + @@ -64671,7 +64653,7 @@ - + @@ -64680,7 +64662,7 @@ - + @@ -64688,7 +64670,7 @@ - + @@ -64702,9 +64684,9 @@ - - - + + + @@ -64739,69 +64721,69 @@ - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -64813,32 +64795,32 @@ - - + + - + - + - + - + - + @@ -64850,17 +64832,17 @@ - + - + - + @@ -64888,7 +64870,7 @@ - + @@ -64896,10 +64878,10 @@ - + - + @@ -64920,7 +64902,7 @@ - + @@ -64931,7 +64913,7 @@ - + @@ -64954,48 +64936,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -65010,140 +64992,140 @@ - + - + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + + + + + + + + + - - - - - - - - - + - - + + - - + + - - + + - + - + - + - + - + @@ -65164,7 +65146,7 @@ - + @@ -65172,40 +65154,40 @@ - + - + - + - + - + - + - + - + - + @@ -65235,15 +65217,15 @@ - + - + - + - + @@ -65251,7 +65233,7 @@ - + @@ -65259,54 +65241,54 @@ - + - + - + - + - + - - + + - + - + - + - + - + @@ -65342,15 +65324,15 @@ - + - + - + - + @@ -65358,31 +65340,31 @@ - + - + - + - + - + - + - + - + - + - + @@ -65403,92 +65385,92 @@ - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - + - + - - + + - + - - + + - - + + - - + + - - + + - + - + - + @@ -65498,13 +65480,13 @@ - + - + @@ -65513,49 +65495,49 @@ - + - + - + - + - - + + - - - - + + + + - - + + - - + + - - + + - + @@ -65581,7 +65563,7 @@ - + @@ -65601,36 +65583,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -65641,64 +65623,64 @@ - + - + - + - + - - - - - - + + + + + + + + - - - + - - + + - - + + - + - + - + - + - + @@ -65707,97 +65689,97 @@ - + - + - + - + - - + + - + - - - + + + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -65812,195 +65794,195 @@ - + - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - - + + - + - - - + + + - + - + - - + + + + + + + + + + + + - + + + + - - - + + - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -66009,7 +65991,7 @@ - + @@ -66029,35 +66011,35 @@ - + - + - + - + - + - + - - - - - - - - + + + + + + + + + + - - - + @@ -66067,72 +66049,72 @@ - + - + - + - - + + + + + + + + + + - - - - - - - - - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + @@ -66141,7 +66123,7 @@ - + @@ -66161,53 +66143,53 @@ - - - - - - - - + + + + + + + + - + - + - + - - + + - - + + - - + + - - + + - - + + - + @@ -66257,30 +66239,30 @@ - + - + - + - + - + - + - + @@ -66289,7 +66271,7 @@ - + @@ -66312,21 +66294,21 @@ - + - + - + - + - + - + @@ -66335,110 +66317,110 @@ - - - - - - - + + + + + + + - + - - + + - + - + - + - + - + + + + + + + + + - - - - - - - - - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - - + + @@ -66446,13 +66428,13 @@ - - + + - - + + @@ -66467,33 +66449,33 @@ - + - + - + - + - + - + - + @@ -66501,24 +66483,24 @@ - + - + - - + + - + - + @@ -66526,24 +66508,24 @@ - + - + - - + + - + - + @@ -66551,26 +66533,26 @@ - + - + - - + + - + - + - - - + + + @@ -66578,208 +66560,208 @@ - + - + - + - + - - + + + + - + - + - - - - - + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - - + + - + - + - + - - + + - - + + - + - + - + - - + + - + - + - + - - + + @@ -66788,62 +66770,62 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -66858,59 +66840,59 @@ - + + + - - - - - + + + - + - + - + - - + + - + - + - + - + @@ -66924,29 +66906,29 @@ - + - + - + - + - + - + - + @@ -66955,14 +66937,14 @@ - - + + + + - - - + - + @@ -66971,7 +66953,7 @@ - + @@ -66983,46 +66965,46 @@ - + - + - + - + - - + + - - + + - - + + - + @@ -67033,12 +67015,12 @@ - + - + @@ -67053,14 +67035,14 @@ - + + + - - - - + + - + @@ -67077,46 +67059,46 @@ - - + + - - + + - - - + + + - - + + - - - - - - + + + + + + - + @@ -67129,26 +67111,26 @@ - + - - + + - - + + - + @@ -67159,32 +67141,32 @@ - - - + + + - + - + - + - + - + @@ -67192,7 +67174,7 @@ - + @@ -67203,25 +67185,25 @@ - + - - - - - + + + + + - - + + - - + + @@ -67229,30 +67211,30 @@ - + - - + + - + - + - + - + - + @@ -67276,44 +67258,44 @@ - - - + + + - + - - + + - + - + - + - - + + - + @@ -67324,22 +67306,22 @@ - + - + - + - + - + @@ -67347,7 +67329,7 @@ - + @@ -67365,7 +67347,7 @@ - + @@ -67443,39 +67425,39 @@ - - - - - + + + + + - + - - + + - - - + + + - + - + - + - + - + @@ -67484,10 +67466,10 @@ - + - + @@ -67553,10 +67535,10 @@ - - + + - + @@ -67564,25 +67546,25 @@ - + - + - + - + - + - + @@ -67591,7 +67573,7 @@ - + @@ -67603,12 +67585,12 @@ - + - + - + @@ -67638,24 +67620,24 @@ - + - - - - + + + + - + - + - + @@ -67664,115 +67646,115 @@ - + - - + + - + - + - - + + - + - + - + - + - + + + - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -67801,180 +67783,180 @@ - - + + - - - + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - + + + - - - - - - - - + - + + + - - - + + + - - + + + - - - - - + + - - - - - + + + + + - - + + + + + - - - - - + + + + + + + + + - - - - + + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -67989,13 +67971,13 @@ - + - + @@ -68003,15 +67985,15 @@ - + - + - + @@ -68029,16 +68011,16 @@ - + - + - + @@ -68050,7 +68032,7 @@ - + @@ -68062,10 +68044,10 @@ - + - + @@ -68074,7 +68056,7 @@ - + @@ -68110,10 +68092,10 @@ - + - + @@ -68124,7 +68106,7 @@ - + @@ -68141,7 +68123,7 @@ - + @@ -68156,7 +68138,7 @@ - + @@ -68167,10 +68149,10 @@ - + - + @@ -68184,7 +68166,7 @@ - + @@ -68195,24 +68177,24 @@ - + - + - + - + - + - + @@ -68224,7 +68206,7 @@ - + @@ -68236,7 +68218,7 @@ - + @@ -68244,74 +68226,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -68319,23 +68301,23 @@ - - - - - + + + + + - - - - - - + + + + + + - + @@ -68368,7 +68350,7 @@ - + @@ -68377,7 +68359,7 @@ - + @@ -68388,52 +68370,52 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + @@ -68455,17 +68437,17 @@ - + - + - + @@ -68487,123 +68469,123 @@ - + - + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - - + + - + - + - - + + - - + + - - + + - + + + + + + + + + + - + + - + + - - - - - - - - - - - - - + + - + - - - - + + + + @@ -68686,7 +68668,7 @@ - + @@ -68711,11 +68693,11 @@ - + - + @@ -68742,7 +68724,7 @@ - + @@ -68766,23 +68748,23 @@ - + - + - + - - + + @@ -68802,7 +68784,7 @@ - + @@ -68810,11 +68792,11 @@ - + - + @@ -68888,7 +68870,7 @@ - + @@ -68898,7 +68880,7 @@ - + @@ -68913,13 +68895,13 @@ - - + + - + @@ -68981,13 +68963,13 @@ - + - + @@ -69007,27 +68989,27 @@ - - - - + + + + - + - - + + - + @@ -69066,7 +69048,7 @@ - + @@ -69089,7 +69071,7 @@ - + @@ -69113,7 +69095,7 @@ - + @@ -69128,7 +69110,7 @@ - + @@ -69170,19 +69152,19 @@ - + - + - + @@ -69231,7 +69213,7 @@ - + @@ -69240,17 +69222,17 @@ - + - + - + @@ -69259,7 +69241,7 @@ - + @@ -69267,7 +69249,7 @@ - + @@ -69275,7 +69257,7 @@ - + @@ -69285,28 +69267,28 @@ - + - + - + - + - + @@ -69322,23 +69304,23 @@ - - + + - - + + - + - + @@ -69352,9 +69334,9 @@ - + - + @@ -69365,14 +69347,14 @@ - + - + @@ -69393,7 +69375,7 @@ - + @@ -69402,11 +69384,11 @@ + - @@ -69429,33 +69411,33 @@ + + + + + + - + + - - - - - - - - + - + @@ -69464,7 +69446,7 @@ - + @@ -69493,7 +69475,7 @@ - + @@ -69507,10 +69489,10 @@ - - + + + - @@ -69522,17 +69504,17 @@ - + - + - + @@ -69554,8 +69536,8 @@ - - + + @@ -69625,12 +69607,12 @@ - + - + @@ -69638,13 +69620,13 @@ - - + + - + @@ -69663,12 +69645,12 @@ - + - + @@ -69684,7 +69666,7 @@ - + @@ -69692,61 +69674,61 @@ - + - + - + - + - + - + - + - + - - + + - + - + @@ -69757,9 +69739,9 @@ - + - + @@ -69783,17 +69765,17 @@ - - - - - - + + + + + + - + @@ -69822,7 +69804,7 @@ - + @@ -69838,12 +69820,12 @@ - + - + @@ -69854,51 +69836,51 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -69909,31 +69891,31 @@ - - - - - + + - - + - - - - - - - + + + + + + + + + + + + + - - - + - + @@ -69947,8 +69929,8 @@ - - + + @@ -69987,97 +69969,97 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + @@ -70086,7 +70068,7 @@ - + @@ -70137,7 +70119,7 @@ - + @@ -70146,7 +70128,7 @@ - + @@ -70206,7 +70188,7 @@ - + @@ -70215,7 +70197,7 @@ - + @@ -70227,7 +70209,7 @@ - + @@ -70341,7 +70323,7 @@ - + @@ -70359,16 +70341,16 @@ - + - + - + @@ -70383,12 +70365,12 @@ - + - + @@ -70397,13 +70379,13 @@ - + - + @@ -70412,10 +70394,10 @@ - + - + @@ -70445,7 +70427,7 @@ - + @@ -70463,33 +70445,33 @@ - + - + - + - + - + - + - - + + - + - + @@ -70498,7 +70480,7 @@ - + @@ -70506,34 +70488,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -70542,10 +70524,10 @@ - + - + @@ -70568,34 +70550,34 @@ - + - + - + - + - + - + - + - - + + - + @@ -70603,114 +70585,114 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - + + - - + + - - + + - - + + + + + + + + + + + - - - - - - - - - - + - - + + + + + + + + + + + - - + + - - - + + - - - - - - - - - + - + - - + + - + @@ -70730,13 +70712,13 @@ - + - + - + @@ -70748,7 +70730,7 @@ - + @@ -70756,59 +70738,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -70820,16 +70802,16 @@ - - + + - + - + - + @@ -70849,187 +70831,187 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - - - - - - + + - - + + - - + + + + + + + + + + + + + + + + - + + + + - - - - - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + @@ -71046,9 +71028,9 @@ - + - + @@ -71083,26 +71065,26 @@ - + - + - + - + - + - + - + @@ -71116,23 +71098,23 @@ - + + + - - - - - + + + - - + + - - + + @@ -71150,7 +71132,7 @@ - + @@ -71161,13 +71143,13 @@ - + - + @@ -71193,9 +71175,9 @@ - + - + @@ -71210,37 +71192,37 @@ - + - + - + - + - + - + - + - + - + @@ -71255,7 +71237,7 @@ - + @@ -71263,8 +71245,8 @@ - - + + @@ -71272,34 +71254,34 @@ + + - - - + - - + + - + - + - + - + @@ -71310,12 +71292,12 @@ - + - + @@ -71327,7 +71309,7 @@ - + @@ -71341,16 +71323,16 @@ - + - + - + @@ -71365,7 +71347,7 @@ - + @@ -71563,9 +71545,9 @@ - - - + + + @@ -71579,12 +71561,12 @@ - + - + - + @@ -71598,7 +71580,7 @@ - + @@ -71610,13 +71592,13 @@ - - - - - - - + + + + + + + @@ -71658,7 +71640,7 @@ - + @@ -71672,7 +71654,7 @@ - + @@ -71722,38 +71704,38 @@ - + - + - + - + - - + + - + - + @@ -71761,7 +71743,7 @@ - + @@ -71784,7 +71766,7 @@ - + @@ -71792,36 +71774,36 @@ - + - + - + - + - + - + - + @@ -71829,28 +71811,28 @@ - - + + - - - - - - + + + + + + - + - + @@ -71859,22 +71841,22 @@ - + - + - + + + - - - - + + @@ -71955,7 +71937,7 @@ - + @@ -71988,11 +71970,11 @@ - + - + @@ -72005,7 +71987,7 @@ - + @@ -72013,14 +71995,14 @@ - + - + @@ -72039,7 +72021,7 @@ - + @@ -72054,7 +72036,7 @@ - + @@ -72062,19 +72044,19 @@ - + - + - - + + @@ -72134,15 +72116,15 @@ - + - + - + @@ -72158,7 +72140,7 @@ - + @@ -72175,66 +72157,66 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -72246,38 +72228,38 @@ - + - + - + - + - + - + @@ -72285,7 +72267,7 @@ - + @@ -72293,7 +72275,7 @@ - + @@ -72301,13 +72283,13 @@ - + - + @@ -72315,7 +72297,7 @@ - + @@ -72360,7 +72342,7 @@ - + @@ -72368,10 +72350,10 @@ - + - + @@ -72383,15 +72365,15 @@ - + - + - + @@ -72399,33 +72381,33 @@ - + - + + + - - - - - - + + + + - + - + - + - + - + @@ -72435,32 +72417,32 @@ - + - + - + - + - + - + - - + + @@ -72477,11 +72459,11 @@ - + - + @@ -72489,64 +72471,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -72560,30 +72542,30 @@ - + - + - + - + - - + + - + @@ -72598,13 +72580,13 @@ - - + + - + - + @@ -72612,48 +72594,48 @@ - - - + + + - + - + - - + + - + - + - + - + - + @@ -72699,12 +72681,12 @@ - - + + - - + + @@ -72744,20 +72726,20 @@ - - - - + + + + - + - + @@ -72787,13 +72769,13 @@ - + - + @@ -72805,7 +72787,7 @@ - + @@ -72823,14 +72805,14 @@ - + - + @@ -72865,14 +72847,14 @@ - + - + @@ -72886,7 +72868,7 @@ - + @@ -72931,7 +72913,7 @@ - + @@ -72942,7 +72924,7 @@ - + @@ -72958,12 +72940,12 @@ - + - + @@ -72978,8 +72960,8 @@ - - + + @@ -72987,26 +72969,26 @@ - + - + - + - + - + @@ -73015,15 +72997,15 @@ - + - + - + @@ -73032,71 +73014,71 @@ - + - - + + - + - + - + - + - + + + - - - - + + - + - + - + - + - + - + - + - + @@ -73105,53 +73087,53 @@ - + - + - + - + - + - + - + - + - + @@ -73178,9 +73160,9 @@ - - - + + + @@ -73213,7 +73195,7 @@ - + @@ -73228,34 +73210,34 @@ - - + + - + - + - + - + - + @@ -73288,12 +73270,12 @@ - + - - + + @@ -73308,7 +73290,7 @@ - + @@ -73365,15 +73347,15 @@ - + - + - + @@ -73393,99 +73375,99 @@ - + - + - + - + - + - + - + - + - - - - + + + + + + - - - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - + - + - + - + - + - - + + - + @@ -73496,7 +73478,7 @@ - + @@ -73505,8 +73487,8 @@ - - + + @@ -73529,14 +73511,14 @@ - - - - + + + + - + @@ -73544,12 +73526,12 @@ - + - + @@ -73558,38 +73540,38 @@ - + - + - + - + - + - + - + - + @@ -73601,55 +73583,55 @@ - + - + - + - + - + - + - - + + - + - + - - + + @@ -73659,7 +73641,7 @@ - + @@ -73669,7 +73651,7 @@ - + @@ -73679,73 +73661,73 @@ - + - + - + - + - + - + - - - + + + - - - - + + + + - + - + - + - + - + - + - + @@ -73754,21 +73736,21 @@ - + - + - - - - - - - + + + + + + + - + @@ -73776,20 +73758,20 @@ - + - + - + - + @@ -73804,7 +73786,7 @@ - + @@ -73813,16 +73795,16 @@ - + - + - + @@ -73832,19 +73814,19 @@ - + - + - + - + - + @@ -73852,13 +73834,13 @@ - + - + - + @@ -73885,14 +73867,14 @@ - - - - + + + - + + - + @@ -73902,7 +73884,7 @@ - + @@ -73910,26 +73892,26 @@ - + - - + + - - + + - - - + + + - + - - + + @@ -73962,27 +73944,27 @@ - - + + - + - - + + - + - + - - + + - + @@ -73991,18 +73973,18 @@ - + - + - - - + + + @@ -74029,19 +74011,19 @@ - + - + - + @@ -74051,35 +74033,35 @@ - + - - + + - + - + - - + + - + - + - + @@ -74102,13 +74084,13 @@ - + - + @@ -74116,7 +74098,7 @@ - + @@ -74145,29 +74127,29 @@ - - + + - - + + - - + + - + - - - + + + - - + + @@ -74187,11 +74169,11 @@ - + - - + + @@ -74202,55 +74184,55 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -74262,69 +74244,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - + - + - - + + @@ -74335,165 +74317,165 @@ - - - + + + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - - + + + - + - + - + - + - + - - + + - + - + - - - + + + - - - + + + @@ -74504,19 +74486,19 @@ - + - - + + - + - + - + @@ -74549,37 +74531,37 @@ - + - + - + - + - + - + - + - - + + - - + + @@ -74590,8 +74572,8 @@ - - + + @@ -74602,55 +74584,55 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - + + - + @@ -74658,11 +74640,11 @@ - + - + @@ -74670,15 +74652,15 @@ - + - + - + @@ -74688,15 +74670,15 @@ - + - + - + @@ -74704,54 +74686,54 @@ - + - + - + - + - + - + - + - - + + - + - + - + @@ -74761,38 +74743,38 @@ - + - + - + - + - + - - - + + + - - + + - - + + @@ -74802,9 +74784,9 @@ - + - + @@ -74816,46 +74798,46 @@ - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - + - + @@ -74873,34 +74855,34 @@ - + - + - + - + - + - + - + - + - + @@ -74909,37 +74891,37 @@ - + - + - - - - + + + + - + - + - + - + - + - + - - + + @@ -74953,16 +74935,16 @@ - - + + - - + + @@ -74973,8 +74955,8 @@ - - + + @@ -74983,8 +74965,8 @@ - - + + @@ -74995,34 +74977,34 @@ - + - + - + - + - - + + - + - + - + - + - + @@ -75052,29 +75034,29 @@ - + - + - + - + - + - - + + @@ -75082,33 +75064,33 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - + + @@ -75117,7 +75099,7 @@ - + @@ -75138,7 +75120,7 @@ - + @@ -75146,13 +75128,13 @@ - + - + @@ -75162,7 +75144,7 @@ - + @@ -75170,15 +75152,15 @@ - + - - + + - + @@ -75186,7 +75168,7 @@ - + @@ -75199,7 +75181,7 @@ - + @@ -75207,7 +75189,7 @@ - + @@ -75216,12 +75198,12 @@ - + - + @@ -75232,14 +75214,14 @@ - + - + - + @@ -75248,24 +75230,24 @@ - + - - - + + + - - - + + + - + @@ -75277,15 +75259,15 @@ - + - + - + @@ -75297,37 +75279,37 @@ - + - + - + - + - + - + - + - + - + @@ -75340,77 +75322,77 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -75418,12 +75400,12 @@ - + - + - + @@ -75432,7 +75414,7 @@ - + @@ -75441,53 +75423,53 @@ - - - - + + + + - - - + + + - + - + - + - + - - + + - + - + - + - + - + - + @@ -75496,50 +75478,50 @@ - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - + - + - - + + @@ -75550,46 +75532,46 @@ - + - + - + - + + + + + + + + + + + + + - - - + + - - + - - + - - - - - - - - - - + @@ -75773,7 +75755,7 @@ - + @@ -75783,7 +75765,7 @@ - + @@ -75810,11 +75792,11 @@ - + - + @@ -75853,18 +75835,18 @@ - + - + - + - + @@ -75877,8 +75859,8 @@ - - + + @@ -75895,38 +75877,38 @@ - + - - - + + + - + - + - - + + - + - + @@ -75935,43 +75917,43 @@ - + - + - + - - + + - - - - + + + + - + - + @@ -76012,7 +75994,7 @@ - + @@ -76020,23 +76002,23 @@ - + - - - - - - + + + + + + - + - + @@ -76046,7 +76028,7 @@ - + @@ -76066,28 +76048,28 @@ - - + + - + - + - + - + @@ -76097,63 +76079,63 @@ - + - - - + + + - + - + - + - - + + - + - + - + - + - - - - - + + + + + - + @@ -76162,7 +76144,7 @@ - + @@ -76170,110 +76152,110 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - - - + + + - - - + + + - - + + - + - + @@ -76281,7 +76263,7 @@ - + @@ -76293,48 +76275,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -76355,7 +76337,7 @@ - + @@ -76432,15 +76414,15 @@ - + - + - + @@ -76454,235 +76436,235 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - + + - - - + + + - + @@ -76712,13 +76694,13 @@ - + - + - + @@ -76727,24 +76709,24 @@ - + - + - + - + - + @@ -76753,16 +76735,16 @@ - + - + - + @@ -76773,27 +76755,27 @@ - + - + - + - + - + - + - + - + @@ -76801,16 +76783,16 @@ - + - + - + @@ -76818,15 +76800,15 @@ - + - + - + - + @@ -76834,7 +76816,7 @@ - + @@ -76845,44 +76827,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -76910,21 +76892,21 @@ - + - + - + - + - + @@ -76935,7 +76917,7 @@ - + @@ -76944,7 +76926,7 @@ - + @@ -76955,7 +76937,7 @@ - + @@ -76972,21 +76954,21 @@ - + - + - + - + @@ -76995,43 +76977,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -77040,13 +77022,13 @@ - + - + @@ -77058,10 +77040,10 @@ - + - + @@ -77078,13 +77060,13 @@ - + - + - + @@ -77120,10 +77102,10 @@ - + - + @@ -77138,7 +77120,7 @@ - + @@ -77152,132 +77134,132 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -77285,7 +77267,7 @@ - + @@ -77316,41 +77298,41 @@ - + - + - + - + - - + + - + - + - + - + - + @@ -77366,217 +77348,217 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + - - - + + + + - + + + + - - - - + + + - - - - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + @@ -77584,33 +77566,33 @@ - - + + - + - - + + - - + + - - + + @@ -77624,39 +77606,39 @@ - - - + + + + - - - + + - + - + - + - - + + - + - + - + @@ -77664,58 +77646,58 @@ - + - + + - - + + - - - + + - - + + - + - - + + - + + - - - + + - + - + @@ -77724,38 +77706,38 @@ - + - + - + - + - + - + - + - - + + - - + + @@ -77778,42 +77760,42 @@ - + - + - + - + - + - - + + - + - + - + @@ -77825,44 +77807,44 @@ - + - + - + - + - + - + - + - + @@ -77949,7 +77931,7 @@ - + @@ -77957,7 +77939,7 @@ - + @@ -77965,21 +77947,21 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -77991,28 +77973,28 @@ - - + + - + - + + + + + - - - - - + - + @@ -78024,7 +78006,7 @@ - + @@ -78041,10 +78023,10 @@ - + - + @@ -78065,7 +78047,7 @@ - + @@ -78077,7 +78059,7 @@ - + @@ -78086,15 +78068,15 @@ - + - + - + @@ -78106,7 +78088,7 @@ - + @@ -78114,10 +78096,10 @@ - + - + @@ -78134,7 +78116,7 @@ - + @@ -78154,450 +78136,450 @@ - + - + - + - + + + - - - - - - - - - - - + + + + + + + + + - + - + - - + + - + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - + + + + + + + + + - - - + + + - - - + + + - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - + + + - - - - - - - + + + + + + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - + + - - - + + + - - - - - + + + + + - - - - - - + + + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + - - - - - - - + + + + + + + - - - - - + + + + + - - + + - - - - - + + + + + - - + + @@ -78606,72 +78588,72 @@ - - + + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - + - + - + @@ -78694,7 +78676,7 @@ - + @@ -78705,8 +78687,8 @@ - - + + @@ -78723,25 +78705,25 @@ - + - + - + - + @@ -78750,52 +78732,52 @@ - + - + - + - - - + + + - + - + - + - + - + - - + + - + @@ -78809,24 +78791,24 @@ - + - + - + - + - + @@ -78835,7 +78817,7 @@ - + @@ -78844,45 +78826,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -78890,7 +78872,7 @@ - + @@ -78898,196 +78880,196 @@ - + - + - + - + - + - + - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + - - - + + + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + + + + + + + + + + + + - - + + + - - - + + + + - - - - - - - - - - - - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - + + - + @@ -79095,49 +79077,49 @@ - + - + - + - + - + - + - + - + @@ -79145,7 +79127,7 @@ - + @@ -79153,7 +79135,7 @@ - + @@ -79161,137 +79143,137 @@ - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + - @@ -79308,7 +79290,7 @@ - + @@ -79318,7 +79300,7 @@ - + @@ -79329,35 +79311,35 @@ - + - + - - + + - - + + - + - + - + @@ -79372,19 +79354,19 @@ - + - + - + - + @@ -79411,42 +79393,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -79460,131 +79442,131 @@ - + - + - + - - - + + + + + - - - - - - - - - + + + + + + + + + - - - + - + - + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -79594,145 +79576,145 @@ - + + + + + + + + + + + - - - + + - - - - - - - - - - + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -79746,13 +79728,13 @@ - + - + @@ -79780,7 +79762,7 @@ - + @@ -79792,14 +79774,14 @@ - - - - - - + + + + + + - + @@ -79808,232 +79790,232 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -80064,151 +80046,151 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - - + + - + - + - - + + - - + + @@ -80216,7 +80198,7 @@ - + @@ -80227,30 +80209,30 @@ - - - + + + - + - + - - + + - - + + - + @@ -80258,97 +80240,97 @@ - + - - + + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -80356,11 +80338,11 @@ - - + + - + @@ -80370,44 +80352,44 @@ - + - + - + - + - + - - - - + + + + - + - + - + @@ -80425,13 +80407,13 @@ - - + + - - + + @@ -80440,41 +80422,41 @@ - + - + - + - + - + - + - + - - + + - + @@ -80505,11 +80487,11 @@ - + - + @@ -80520,7 +80502,7 @@ - + @@ -80532,42 +80514,42 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -80579,12 +80561,12 @@ - + - + @@ -80596,38 +80578,38 @@ - - - - + + + + - + - + - + - - + + - - + + - + - + @@ -80636,17 +80618,17 @@ - + - + - + @@ -80654,11 +80636,11 @@ - + - + @@ -80666,12 +80648,12 @@ - + - + @@ -80692,34 +80674,34 @@ - + - + - + - + - + - + - + - + - + - - + + @@ -80727,25 +80709,25 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -80761,63 +80743,63 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -80827,64 +80809,64 @@ - + - + - + + + + + + + + + + + + + - - - - - - - - - - - - - + - + - - - + + + - - + + + + + + + + + + + + + - - - - - - - - - - - - + - + @@ -80894,16 +80876,16 @@ - - + + - + - + @@ -80923,19 +80905,19 @@ - + - + - + - + @@ -80991,7 +80973,7 @@ - + @@ -81015,10 +80997,10 @@ - + - + @@ -81027,38 +81009,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -81070,7 +81052,7 @@ - + @@ -81100,7 +81082,7 @@ - + @@ -81108,66 +81090,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -81196,10 +81178,10 @@ - + - + @@ -81207,7 +81189,7 @@ - + @@ -81215,13 +81197,13 @@ - + - + @@ -81230,14 +81212,14 @@ - + - + @@ -81254,13 +81236,13 @@ - + - + @@ -81277,94 +81259,94 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + - + - + @@ -81381,201 +81363,201 @@ - + - + - + - - - + + + - - + + - + + + + + + + + + + + + - + - + - - - - - - - + - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + + + + + + + + + + + + - - - + + + + - + + + + - + + + - - - - - - - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + + + + + + + + + - + + + - - - - - - - - - - - + - - + + - + - + - + - + - + - + - + @@ -81584,40 +81566,40 @@ - + - + - + - + - + - + - + - + - + - + @@ -81635,7 +81617,7 @@ - + @@ -81643,7 +81625,7 @@ - + @@ -81654,21 +81636,21 @@ - + - + - + @@ -81677,7 +81659,7 @@ - + @@ -81690,7 +81672,7 @@ - + @@ -81701,35 +81683,35 @@ - + - + - + - + - + - + @@ -81744,10 +81726,10 @@ - + - + @@ -81764,9 +81746,9 @@ - + - + @@ -81778,16 +81760,16 @@ - + - + - + - + @@ -81799,7 +81781,7 @@ - + @@ -81818,14 +81800,14 @@ - + - + @@ -81836,7 +81818,7 @@ - + @@ -81849,9 +81831,9 @@ - + - + @@ -81866,13 +81848,13 @@ - + - + @@ -81884,9 +81866,9 @@ - + - + @@ -81895,16 +81877,16 @@ - + - + - + - + @@ -81919,18 +81901,18 @@ - + - + - + @@ -81938,29 +81920,29 @@ - + - + - + - + - + - + - + - + - + @@ -81969,17 +81951,17 @@ - + - + - + - + - + @@ -81991,138 +81973,138 @@ - + + + - + - + - + - + - - - - - - - - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -82130,32 +82112,32 @@ - + - + - + - + - + - + - + @@ -82164,7 +82146,7 @@ - + @@ -82176,13 +82158,13 @@ - + - + @@ -82196,43 +82178,43 @@ - + - + - + - + - + - + - + - + - + @@ -82252,34 +82234,34 @@ - + - + - + - + - + - + - + - + @@ -82291,7 +82273,7 @@ - + @@ -82309,13 +82291,13 @@ - + - + @@ -82341,16 +82323,16 @@ - + - + - + - + @@ -82404,7 +82386,7 @@ - + @@ -82415,7 +82397,7 @@ - + @@ -82462,24 +82444,24 @@ - + - + - + - + - + - + - + @@ -82545,7 +82527,7 @@ - + @@ -82571,7 +82553,7 @@ - + @@ -82615,7 +82597,7 @@ - + @@ -82644,13 +82626,13 @@ - + - + - + @@ -82658,90 +82640,90 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -82761,7 +82743,7 @@ - + @@ -82781,7 +82763,7 @@ - + @@ -82807,10 +82789,10 @@ - + - + @@ -82824,13 +82806,13 @@ - + - + - + @@ -82838,7 +82820,7 @@ - + @@ -82852,15 +82834,15 @@ - + - + - + @@ -82868,74 +82850,74 @@ - + - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + - - - + + + - + - - + + - - + + - + @@ -82951,132 +82933,132 @@ - - - + + + - + - + - + - + + + + + + + + + + - + + - - + - + - - - - - - - - - - + - - + + - - + + + + + + + + + + + + - - + + + + + + - - - - - - - - - - - - - - - + - - + + - - + + - - + + + + + + + - - + + + + + + + + - - - - - - - - - - - - + - + @@ -83094,7 +83076,7 @@ - + @@ -83102,42 +83084,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83148,7 +83130,7 @@ - + @@ -83164,16 +83146,16 @@ - - - + + + - + - + @@ -83202,70 +83184,70 @@ - + - + + + - - - + - - + + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + @@ -83273,7 +83255,7 @@ - + @@ -83282,16 +83264,16 @@ - + - + - + @@ -83305,7 +83287,7 @@ - + @@ -83316,25 +83298,25 @@ - - - - - - - - + + + + + + + + - + - + - + @@ -83347,7 +83329,7 @@ - + @@ -83358,7 +83340,7 @@ - + @@ -83370,7 +83352,7 @@ - + @@ -83382,25 +83364,25 @@ - + - + - + - + - + @@ -83408,135 +83390,135 @@ - + - + - + + + + + + + + + + - - - - - - - - - - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + @@ -83547,236 +83529,236 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -83786,17 +83768,17 @@ - + - + - + @@ -83809,80 +83791,80 @@ - + - - + + - - + + + + + + + - - - - - - - + + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - + - - + + - - + + - - + + - - - + + + - + - + - + @@ -83894,392 +83876,396 @@ + - - - - - - + + + + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - - + + + + + + + - - - + + + - - + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - - - + + + + + + + + + - - - - - - + - - + + - + - + - - - - - + + + + + - + - + - - + + - + - - + + - + @@ -84288,13 +84274,13 @@ - + - + @@ -84303,10 +84289,10 @@ - + - + @@ -84315,10 +84301,10 @@ - + - + @@ -84326,12 +84312,12 @@ - + - + - + @@ -84339,21 +84325,21 @@ - + - + - + - + - + @@ -84361,7 +84347,7 @@ - + @@ -84370,19 +84356,19 @@ - + - + - + - + @@ -84390,7 +84376,7 @@ - + @@ -84399,7 +84385,7 @@ - + @@ -84407,7 +84393,7 @@ - + @@ -84415,25 +84401,25 @@ - + - + - + - + - + - + @@ -84441,10 +84427,10 @@ - + - + @@ -84452,25 +84438,25 @@ - + - + - + - + - - + + - + @@ -84483,9 +84469,9 @@ - + - + @@ -84494,12 +84480,12 @@ - + - + - + @@ -84508,12 +84494,12 @@ - + - + - + @@ -84521,12 +84507,12 @@ - + - + - + @@ -84534,19 +84520,19 @@ - + - + - + - + @@ -84559,7 +84545,7 @@ - + @@ -84573,47 +84559,47 @@ - + - - - - + + + + - + - + - + - + - + - + - + - + - + - + @@ -84624,23 +84610,23 @@ - + - + - + - + - + - + @@ -84657,7 +84643,7 @@ - + @@ -84677,7 +84663,7 @@ - + @@ -84685,7 +84671,7 @@ - + @@ -84712,7 +84698,7 @@ - + @@ -84744,7 +84730,7 @@ - + @@ -84770,13 +84756,13 @@ - + - + @@ -84802,86 +84788,86 @@ - - - + + + + + - + - + - + - + - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -84889,12 +84875,12 @@ - + - + - + @@ -84915,81 +84901,81 @@ - + - + - + - + - + - + - - - - - - + + + + + + - - + + - + - - - + + + - - + + - + - + - + - + - + - + - + - + @@ -84998,7 +84984,7 @@ - + @@ -85007,7 +84993,7 @@ - + @@ -85021,10 +85007,10 @@ - + - + @@ -85033,16 +85019,16 @@ - + - + - + - + @@ -85066,85 +85052,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -85155,13 +85141,13 @@ - - + + - + @@ -85171,46 +85157,46 @@ - + - + - + - + - + - + - + - + - + - + - - + + @@ -85221,24 +85207,24 @@ - - - + + + - + - + - + @@ -85261,15 +85247,15 @@ - + - + - + @@ -85277,7 +85263,7 @@ - + @@ -85285,7 +85271,7 @@ - + @@ -85306,10 +85292,10 @@ - + - + @@ -85323,9 +85309,9 @@ - + - + @@ -85334,10 +85320,10 @@ - + - + @@ -85358,7 +85344,7 @@ - + @@ -85370,27 +85356,27 @@ - + - + - + - + - + - + @@ -85402,7 +85388,7 @@ - + @@ -85410,15 +85396,15 @@ - + - + - + @@ -85435,7 +85421,7 @@ - + @@ -85458,104 +85444,104 @@ - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + @@ -85564,180 +85550,180 @@ - + - + - + - + - - + + - - + + - + - - + + - + - + + + + + + + + + + + + + + + + + + + + - - - - - - + + - + - - - - - - - - - - - - - - - - + - + - + - - + + - + - - + + - + - - + + - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + - + - - + + - + - - - - - + + + + + - - + + - - + + + + + + + - - - - - - + - - - + + + - + - - + + - + - + - + @@ -85745,29 +85731,29 @@ - + - + - + - - - + + + - + - + @@ -85777,33 +85763,33 @@ - - + + - - + + - - + + + + + + + - - - - - - + - + @@ -85827,20 +85813,20 @@ - + - + - + @@ -85851,55 +85837,55 @@ - - + + - + - - - + + + - - - + + + - - - + + + - - + + - + - + - + - + @@ -85916,20 +85902,20 @@ - + - + - + - - - - + + + + - + @@ -85938,23 +85924,23 @@ - + - + - + - + - + - + @@ -85962,14 +85948,14 @@ - - + + - + - + @@ -85990,7 +85976,7 @@ - + @@ -86011,16 +85997,16 @@ - + - + - + @@ -86032,7 +86018,7 @@ - + @@ -86044,7 +86030,7 @@ - + @@ -86058,7 +86044,7 @@ - + @@ -86073,13 +86059,13 @@ - + - + @@ -86103,19 +86089,19 @@ - + - + - + - + @@ -86208,15 +86194,15 @@ - + - + - + @@ -86225,24 +86211,24 @@ - + - + - + - + - + @@ -86251,7 +86237,7 @@ - + @@ -86292,13 +86278,13 @@ - + - + - + @@ -86346,7 +86332,7 @@ - + @@ -86366,7 +86352,7 @@ - + @@ -86374,113 +86360,113 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -86494,12 +86480,12 @@ - + - + - + @@ -86508,21 +86494,21 @@ - + - + - + - + - + @@ -86548,22 +86534,22 @@ - + - + - + - + @@ -86571,12 +86557,12 @@ - + - + @@ -86585,83 +86571,82 @@ - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - + @@ -86678,184 +86663,184 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -86865,283 +86850,284 @@ - + - + - + - + - + - + - - + + - + - + - - + + - - - + + + - - - + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + - - - + + - - - + - - - - - - - - - - - - - - - - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + + - + - + - + - + - + - - - + + + - + @@ -87158,31 +87144,31 @@ - + - + - + - + - + - + @@ -87190,32 +87176,32 @@ - + - + - + - - + + - + - + @@ -87232,9 +87218,9 @@ - + - + @@ -87261,48 +87247,48 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -87312,7 +87298,7 @@ - + @@ -87321,10 +87307,10 @@ - + - + @@ -87334,7 +87320,7 @@ - + @@ -87346,13 +87332,13 @@ - + - + @@ -87360,16 +87346,16 @@ - - + + - + - + @@ -87498,8 +87484,8 @@ - - + + @@ -87531,8 +87517,8 @@ - - + + @@ -87597,7 +87583,7 @@ - + @@ -87641,7 +87627,7 @@ - + @@ -87843,9 +87829,9 @@ - + - + @@ -87857,54 +87843,54 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -87930,7 +87916,7 @@ - + @@ -87951,97 +87937,97 @@ - - - - - - + + + + + + + + - - - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - - + + - + - + - + - + @@ -88052,55 +88038,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88133,10 +88119,10 @@ - + - + @@ -88148,10 +88134,10 @@ - + - + @@ -88166,7 +88152,7 @@ - + @@ -88193,28 +88179,28 @@ - + - + - + - + - + @@ -88225,10 +88211,10 @@ - + - + @@ -88245,18 +88231,18 @@ - + - + - + - + @@ -88265,16 +88251,16 @@ - + - + - + @@ -88285,7 +88271,7 @@ - + @@ -88320,80 +88306,80 @@ - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88416,40 +88402,40 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - - - + @@ -88458,22 +88444,22 @@ - - + + - + - + - + @@ -88481,21 +88467,21 @@ - + - + - + - + @@ -88508,21 +88494,21 @@ - - + + - - + + - + - + @@ -88531,27 +88517,27 @@ - - + + - - + + - + - + - + @@ -88560,97 +88546,97 @@ - + - - + + + + + + + + + + + - + + - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + - - - + + + - - + + - - - + + + - - - - - - - - - - - - + @@ -88658,10 +88644,10 @@ - - + + - + @@ -88715,7 +88701,7 @@ - + @@ -88724,19 +88710,19 @@ - + - + - + - + - + @@ -88745,15 +88731,15 @@ - + - + - + - + @@ -88762,16 +88748,16 @@ - + - + - + - + @@ -88786,10 +88772,10 @@ - + - + @@ -88810,15 +88796,15 @@ - + - + - + - + @@ -88829,25 +88815,25 @@ - + - - - - - - - - - - + + + + + + + + + + - + - + @@ -88859,168 +88845,168 @@ - + - - + + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -89034,19 +89020,19 @@ - + - + - + - + - + @@ -89066,52 +89052,52 @@ - - - - - + + + + + - - - + + + - + - + - + - - - - + + + + - + - + - + - + @@ -89123,51 +89109,51 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + @@ -89175,10 +89161,10 @@ - + - + @@ -89187,7 +89173,7 @@ - + @@ -89195,166 +89181,166 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + + + - - - - - - - - - + + + + + + + + + - - - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -89362,91 +89348,91 @@ - + - + - + - + + + + + + + + + + + - + + - - - + + + - - + - - - - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + @@ -89485,11 +89471,11 @@ - + - + @@ -89508,13 +89494,13 @@ - - + + - + @@ -89543,35 +89529,35 @@ - + - + - + - + - + - + - + - + - + @@ -89589,58 +89575,58 @@ - - + + + + - - - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + @@ -89654,8 +89640,8 @@ - - + + @@ -89671,11 +89657,11 @@ - + - + @@ -89721,7 +89707,7 @@ - + @@ -89974,7 +89960,7 @@ - + @@ -89991,7 +89977,7 @@ - + @@ -89999,16 +89985,16 @@ - + - + - + @@ -90034,22 +90020,22 @@ - + - + - + - + - + - + @@ -90059,7 +90045,7 @@ - + @@ -90076,44 +90062,44 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -90124,7 +90110,7 @@ - + @@ -90132,9 +90118,9 @@ - + - + @@ -90146,7 +90132,7 @@ - + @@ -90154,53 +90140,53 @@ - - - - - - - - - + + + + + + + + + - - + + - + - + - - + + - - + + - - + + - + - + @@ -90209,23 +90195,23 @@ - + - + - + - + - + @@ -90251,7 +90237,7 @@ - + @@ -90260,16 +90246,16 @@ - + - + - + - + @@ -90278,9 +90264,9 @@ - + - + @@ -90292,7 +90278,7 @@ - + @@ -90306,7 +90292,7 @@ - + @@ -90317,7 +90303,7 @@ - + @@ -90325,56 +90311,56 @@ - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - - - + + + - + - + @@ -90384,64 +90370,64 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - - + + @@ -90457,7 +90443,7 @@ - + @@ -90468,84 +90454,84 @@ - - + + - + - + - + - - + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + @@ -90563,19 +90549,19 @@ - + - + - + - + - + @@ -90589,22 +90575,22 @@ - + - + - + - + @@ -90652,7 +90638,7 @@ - + @@ -90670,16 +90656,16 @@ - + - + - + @@ -90688,19 +90674,19 @@ - + - + - + - + - + @@ -90708,129 +90694,129 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -90857,7 +90843,7 @@ - + @@ -90869,25 +90855,25 @@ - + - + - + - + - + - + @@ -90910,19 +90896,19 @@ - + - + - + @@ -90967,11 +90953,11 @@ - + - - + + @@ -90982,7 +90968,7 @@ - + @@ -90994,7 +90980,7 @@ - + @@ -91005,7 +90991,7 @@ - + @@ -91013,7 +90999,7 @@ - + @@ -91115,13 +91101,13 @@ - + - + @@ -91164,12 +91150,12 @@ - + - + - + @@ -91178,15 +91164,15 @@ - + - + - + @@ -91209,9 +91195,9 @@ - + - + @@ -91250,21 +91236,21 @@ - + - + - + - + @@ -91339,7 +91325,7 @@ - + @@ -91363,169 +91349,169 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91552,7 +91538,7 @@ - + @@ -91561,13 +91547,13 @@ - + - + - + @@ -91575,12 +91561,12 @@ - + - + @@ -91592,62 +91578,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91668,10 +91654,10 @@ - + - + @@ -91679,7 +91665,7 @@ - + @@ -91688,23 +91674,23 @@ - + - + - + - + - + @@ -91716,16 +91702,16 @@ - + - + - + @@ -91736,7 +91722,7 @@ - + @@ -91757,7 +91743,7 @@ - + @@ -91765,18 +91751,18 @@ - + - + - + - + - + @@ -91790,7 +91776,7 @@ - + @@ -91816,15 +91802,15 @@ - + - + - + @@ -91839,50 +91825,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91891,16 +91877,16 @@ - + - + - + @@ -91909,60 +91895,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91974,16 +91960,16 @@ - + - + - + - + @@ -91998,10 +91984,10 @@ - + - + @@ -92010,22 +91996,22 @@ - + - + - + - + - + @@ -92037,7 +92023,7 @@ - + @@ -92052,89 +92038,89 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -92143,27 +92129,27 @@ - + - + - + - + - + @@ -92193,73 +92179,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -92268,7 +92254,7 @@ - + @@ -92331,61 +92317,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -92396,7 +92382,7 @@ - + @@ -92432,13 +92418,13 @@ - + - + @@ -92447,9 +92433,9 @@ - + - + @@ -92464,7 +92450,7 @@ - + @@ -92472,10 +92458,10 @@ - + - + @@ -92483,77 +92469,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -92571,7 +92557,7 @@ - + @@ -92580,17 +92566,17 @@ - + - + - + - + @@ -92608,15 +92594,15 @@ - + - + - + @@ -92625,24 +92611,24 @@ - + - + - + - + - + - + @@ -92651,7 +92637,7 @@ - + @@ -92659,9 +92645,9 @@ - + - + @@ -92679,9 +92665,9 @@ - + - + @@ -92693,12 +92679,12 @@ - + - + - + @@ -92722,7 +92708,7 @@ - + @@ -92733,7 +92719,7 @@ - + @@ -92747,12 +92733,12 @@ - + - + - + @@ -92767,36 +92753,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -92834,23 +92820,23 @@ - + - + - + - + @@ -92858,13 +92844,13 @@ - + - + @@ -92900,33 +92886,33 @@ - + - + - + - + - + - + - + - + - + @@ -92937,53 +92923,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93003,12 +92989,12 @@ - + - + @@ -93017,20 +93003,20 @@ - + - + - + - + - + @@ -93047,9 +93033,9 @@ - + - + @@ -93088,22 +93074,22 @@ - + - + - + - + - + - + @@ -93118,68 +93104,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93193,7 +93179,7 @@ - + @@ -93208,7 +93194,7 @@ - + @@ -93216,62 +93202,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93301,7 +93287,7 @@ - + @@ -93313,44 +93299,44 @@ - + - + - + - + - + - + - + - + - + - + @@ -93364,50 +93350,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93416,100 +93402,100 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93536,9 +93522,9 @@ - + - + @@ -93547,35 +93533,35 @@ - + - + - + - + - + - + - + - + - + @@ -93584,21 +93570,21 @@ - + - + - + - + - + @@ -93618,7 +93604,7 @@ - + @@ -93626,15 +93612,15 @@ - + - + - + - + @@ -93643,16 +93629,16 @@ - + - + - + @@ -93666,1154 +93652,1154 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - - + + - + - + - + - - + + - + - - - + + + + + + + + - - - + + - - + + + + + + - - + + - - + + - - - - - - + + + - - - + + + + + + + + + - - - - + + + + - - - - - - - - - + + + - - - + + - - + + - - + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + - - - - + + + - + - + + + + - + + - - - - + + + + - - - - - - - - - - - - - - + + - - - - + + + + - - + + + + + + + + + + + + - - - - - - - - - - - + - - + + + + + + + + + + + + + + - - - - + + + + - - + + + + + + - - - - + + + + + - - - - - - + + + + + + + - - - - + + + + - - + + + - - - + - - - - - + + + + + - - - - - - + + + - - + - - - - + + + + - - - + + + + + + - - - - + - - - - - + - + + + - - + + - - - + + + + - - - - - - - - - - - - - - + + - - - + + + + + + + + + + + + + - - + + - - - - - - - - - - - + - - + + - + + + + + + + + + + + - + + - - - + + + - - + + + - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + - - - - - - - - - - + + + + + + + + + + - + - - + + + + - + + + + + + + + + + + + - - - - + + - - - - - - - - - - - - + + - - + + + + - - + + + - - - - + + - - - + - - - - - - - - - - - + + - - + + - + - - + + - - + + + + + + + + + + + + + + - - - + + + + + - - - + + + + + + + + - - - - - + + + - - - - - - - - + + + - - - - - - - - - - - - - + - - + + + + + + - - - - + + + + + + + + - + + + - + + - - - + - - + - + + - + - - + + - - - - - - - - - - + + + + + + + + + + - + + - - - - - - - - - - - + + + + + + + + + + + + - - + + + - - - - - - - - - - - - - + + + + + + + + + - + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + - - + + - - + + + - - + + - - - + + - + - - + - - - - - - - - - - + - - + + - - + + - + - + - + - + - - - - - - + + + + + + - + - + @@ -94825,7 +94811,7 @@ - + @@ -94834,13 +94820,13 @@ - + - + @@ -94857,12 +94843,12 @@ - + - + @@ -94874,7 +94860,7 @@ - + @@ -94888,20 +94874,20 @@ - + - + - + - + @@ -94913,18 +94899,18 @@ - - - - + + + + + + - - - - - + + + - + @@ -94968,42 +94954,42 @@ - + - + - + - - + + - - + + - - + + - - + + @@ -95017,7 +95003,7 @@ - + @@ -95025,29 +95011,29 @@ - + - + - + - - + + - + - - + + @@ -95065,30 +95051,30 @@ - - - + + + - + - + - + - + - + @@ -95102,7 +95088,7 @@ - + @@ -95200,10 +95186,10 @@ - + - + @@ -95245,7 +95231,7 @@ - + @@ -95307,10 +95293,10 @@ - + - + @@ -95373,7 +95359,7 @@ - + @@ -95384,141 +95370,141 @@ - - - - - + + + + + - + - - + + - + - - - - + + + + + + - - - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -95527,10 +95513,10 @@ - + - + @@ -95539,10 +95525,10 @@ - + - + @@ -95551,7 +95537,7 @@ - + @@ -95563,10 +95549,10 @@ - + - + @@ -95593,18 +95579,18 @@ - + - + - + - + - + @@ -95639,37 +95625,37 @@ - + - + - + - + - + - + - + - + - + @@ -95692,13 +95678,13 @@ - + - + - + @@ -95710,9 +95696,9 @@ - + - + @@ -95724,7 +95710,7 @@ - + @@ -95739,10 +95725,10 @@ - + - + @@ -95750,48 +95736,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -95802,7 +95788,7 @@ - + @@ -95810,10 +95796,10 @@ - + - + @@ -95845,12 +95831,12 @@ - + - + @@ -95861,7 +95847,7 @@ - + @@ -95872,7 +95858,7 @@ - + @@ -95880,7 +95866,7 @@ - + @@ -95888,15 +95874,15 @@ - + - + - + @@ -95907,7 +95893,7 @@ - + @@ -95915,10 +95901,10 @@ - + - + @@ -95929,12 +95915,12 @@ - + - + @@ -95948,15 +95934,15 @@ - + - + - + @@ -96019,13 +96005,13 @@ - + - + - + @@ -96034,7 +96020,7 @@ - + @@ -96045,7 +96031,7 @@ - + @@ -96053,23 +96039,23 @@ - + - + - + - + - + - + @@ -96119,7 +96105,7 @@ - + @@ -96130,32 +96116,32 @@ - + - + - + - + - + - + - + - + - + - + @@ -96175,18 +96161,18 @@ - + - + - + - + - + @@ -96206,7 +96192,7 @@ - + @@ -96229,7 +96215,7 @@ - + @@ -96243,17 +96229,17 @@ - + - + - + @@ -96274,10 +96260,10 @@ - + - + @@ -96306,7 +96292,7 @@ - + @@ -96320,155 +96306,155 @@ - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - - - - + + + + - - + + - - - - + + + + - + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - + @@ -96478,60 +96464,60 @@ - + - + - + - - - + + + - + - - - + + + - + - + - + - + - + - + - + - + - + - + @@ -96542,9 +96528,9 @@ - + - + @@ -96556,24 +96542,24 @@ - + - + - + - + - + - + @@ -96594,23 +96580,23 @@ - - - - - - - - - + + + + + + + + + - - + + - - + + @@ -96618,125 +96604,125 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - - + + - + - - + + - - + + - - + + - + - + - + - + - + - + - - - + + + @@ -96745,100 +96731,100 @@ - + - - + + - - + + - - + + - + - - - + + + - - + + - - + + - - + + - - - + + + - + - - - + + + - + - - - - + + + + - + - - + + - - + + - - + + - - + + - - + + - + @@ -96848,229 +96834,229 @@ - + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + + + - - - - + + - - - - + + + + - - + + + + + + + + + + + - + + + - - - + + - - - - + + + + - - - - - - - - - - - - + + - + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - + @@ -97078,13 +97064,13 @@ - + - + @@ -97093,30 +97079,30 @@ - + - + - + - + - + - + - + - + @@ -97131,7 +97117,7 @@ - + @@ -97142,7 +97128,7 @@ - + @@ -97172,12 +97158,12 @@ - + - + @@ -97186,7 +97172,7 @@ - + @@ -97197,7 +97183,7 @@ - + @@ -97224,71 +97210,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -97309,7 +97295,7 @@ - + @@ -97317,13 +97303,13 @@ - + - + - + @@ -97334,12 +97320,12 @@ - + - + - + @@ -97348,303 +97334,303 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + - + - + - + - - + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - + + - - + + + + + + + + + + + + - - + + + + - - - - - - - - - - - - - + - - + + - - + + - - + + + + + + + + + + + - - - - - - - - - - + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - + + - - + + - + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - + - + @@ -97656,75 +97642,75 @@ - - - - + + + + - + - - + + - - + + - + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - + - - + + - - + + @@ -97732,8 +97718,8 @@ - - + + @@ -97741,56 +97727,56 @@ - - + + - - + + - + - + - + - + - + - + - + - + - + @@ -97799,62 +97785,62 @@ - + - + - + - + - + - + - + - + + + - - - + - + - + - + - + - + - - + + - - + + - + - - + + - + @@ -97866,28 +97852,28 @@ - - + + - + - + - - + + - - + + - + @@ -97902,7 +97888,7 @@ - + @@ -97920,7 +97906,7 @@ - + @@ -97928,29 +97914,29 @@ - - - - - + + + + + - + - - + + - + - + - + @@ -97971,7 +97957,7 @@ - + @@ -97995,124 +97981,124 @@ - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - + - - + + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + @@ -98120,7 +98106,7 @@ - + @@ -98132,7 +98118,7 @@ - + @@ -98143,40 +98129,40 @@ - + - + - - + + - - + + - - + + - + - + - + @@ -98203,7 +98189,7 @@ - + @@ -98211,32 +98197,32 @@ - + - + - + - + - + - + - + - + @@ -98255,17 +98241,17 @@ - + - + - + @@ -98273,10 +98259,10 @@ - + - + @@ -98285,7 +98271,7 @@ - + @@ -98294,7 +98280,7 @@ - + @@ -98305,20 +98291,20 @@ - + - - + + - - + + - - + + @@ -98329,29 +98315,29 @@ - - + + - + - + - + - + - + @@ -98360,37 +98346,37 @@ - + - + - - + + - + - + - + - + - + @@ -98401,47 +98387,47 @@ - - - + + + - + - + - - + + - - - + + + - - + + - - + + - - + + - + - - + + @@ -98454,7 +98440,7 @@ - + @@ -98462,7 +98448,7 @@ - + @@ -98470,22 +98456,22 @@ - - - + + + - + - - + + - - + + @@ -98493,23 +98479,23 @@ - + - + - - + + - + - + @@ -98519,9 +98505,9 @@ - + - + @@ -98548,179 +98534,179 @@ - + - - - - - - + + + + + + - + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - + + - + - + - - + + - + + + - - - + - + - + - - - - - + + + + + - + - + - - + + - - - + + + - - - + + + - + - + - + - - - + + + - + - + - + - + - + @@ -98767,49 +98753,49 @@ - + + + - + - + - - - + - + - - + + - - + + - - + + - + - + - + - + @@ -98819,107 +98805,107 @@ - + - + - + - - + + - - + + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - + + - - - + + + - + - + - - - + + + - + @@ -98929,44 +98915,44 @@ - + - - + + - - - + + + - - - + + + - - + + - - + + - - + + - + @@ -98980,11 +98966,11 @@ - + + + - - @@ -98997,133 +98983,133 @@ - + - + - - + + - - + + - + - + - - - + + + - - - + + + - - + + - + - + - + - + - + - - + + - - + + - - + + - + - + - - + + - + - + - - + + - - - + + + - - + + - - - - + + + + - - - + + + - + @@ -99132,12 +99118,12 @@ - + - + - + @@ -99146,47 +99132,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -99207,7 +99193,7 @@ - + @@ -99219,7 +99205,7 @@ - + @@ -99230,13 +99216,13 @@ - + - + - + @@ -99245,32 +99231,32 @@ - + - + - + - + - + - + - + - + @@ -99287,92 +99273,92 @@ - - + + + + - - - - - - - - - + + + + + + + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - - - + + + - + - + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - + - + @@ -99380,7 +99366,7 @@ - + @@ -99389,15 +99375,15 @@ - + - + - + @@ -99408,7 +99394,7 @@ - + @@ -99416,87 +99402,87 @@ - + - + - + - + - - - + + + - + - - + + - + - - - + + + - - + + - - + + - - + + - + - + - + - + - + - + @@ -99506,15 +99492,15 @@ - + - + - - + + - + @@ -99524,52 +99510,52 @@ - + - - + + - - - + + + - - + + - - + + - + - + - + @@ -99577,52 +99563,52 @@ - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - + @@ -99630,12 +99616,12 @@ - + - + @@ -99650,96 +99636,96 @@ - - - - + + + + - + - - + + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - - + + - + @@ -99749,24 +99735,24 @@ - + - - + + - - + + - + - + @@ -99774,410 +99760,410 @@ - - - + + + - - - + + + - - - - + + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - + - + - + - - + + - - + + - - + + - + - + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - - + + - - + + - - + + - - + + - + - - + + - + - - - + + + - + - + - + - + - + - + - + - + - - + + - - - + + + - + - - - + + + - + - - + + - - + + - + - + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -100186,76 +100172,76 @@ - + - + - - + + - - - + + + - + - + - - + + - + - + - + - - - + + + - - - + + + - - - + + + - + @@ -100263,243 +100249,243 @@ - - - - + + + + - + - + - + - + - + - - + + - - + + - + - + - - + + - + - - - + + + - + - - - + + + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - - - + + + - + - - + + - + - + - + - - + + - + - + - - + + - + - - + + - - + + - - + + - + - + - + - + @@ -100517,51 +100503,51 @@ - - + + - + - + - + - + - + - + - + - - + + - + @@ -100569,79 +100555,79 @@ - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -100653,56 +100639,56 @@ - + - + - + - + - + - - - - + + + + - + - + - - - - + + + + - - + + - + - + @@ -100710,185 +100696,185 @@ - + - + - - + + - + - + - - - - + + + + - + - - + + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + @@ -100904,24 +100890,24 @@ - + - + - + - - - + + + - - - + + + @@ -100930,113 +100916,113 @@ - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - - + + @@ -101044,7 +101030,7 @@ - + @@ -101052,56 +101038,56 @@ - + - + + + - - - - - + + + - + - + - - + + - - + + - - + + - + - - + + - + @@ -101115,45 +101101,45 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -101162,7 +101148,7 @@ - + @@ -101174,29 +101160,29 @@ - + - + - + - + - + - + - + @@ -101225,16 +101211,16 @@ - + - + - + @@ -101243,12 +101229,12 @@ - + - + @@ -101257,70 +101243,70 @@ - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - + + + - + - + - + - + - + - + @@ -101332,31 +101318,31 @@ - - + + - + - + - + - + - + @@ -101364,125 +101350,125 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - - + + - - - + + + - - - + + + - - + + @@ -101494,38 +101480,38 @@ - + - + - + - + - + - + - + - + @@ -101534,7 +101520,7 @@ - + @@ -101542,58 +101528,58 @@ - + - + - + - + - + - - - - - - - - + + + + + + + + - - - + + + - - + + - - + + - + @@ -101608,33 +101594,33 @@ - + - + - + - + - + - + @@ -101642,21 +101628,21 @@ - + - + - + - + - + - + @@ -101671,7 +101657,7 @@ - + @@ -101679,13 +101665,13 @@ - + - + - + @@ -101696,7 +101682,7 @@ - + @@ -101713,10 +101699,10 @@ - + - + @@ -101734,15 +101720,15 @@ - + - + - + @@ -101751,7 +101737,7 @@ - + @@ -101765,7 +101751,7 @@ - + @@ -101783,7 +101769,7 @@ - + @@ -101792,21 +101778,21 @@ - + - - - + + + + + - - - - + + @@ -101815,14 +101801,14 @@ - + - + @@ -101835,45 +101821,45 @@ - + - + - + - + - + - + - + @@ -101909,27 +101895,27 @@ - + - + - + - + - + @@ -101961,19 +101947,19 @@ - + - + - + @@ -102031,68 +102017,68 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -102104,7 +102090,7 @@ - + @@ -102137,40 +102123,40 @@ - - + + - + - + - + - + - + - + - + - + - + @@ -102181,48 +102167,48 @@ - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + - + @@ -102235,7 +102221,7 @@ - + @@ -102266,34 +102252,34 @@ - + - + - + - + - + - + - + @@ -102306,35 +102292,35 @@ + + + + + - - - - - - + - + - + - + - + - + @@ -102360,7 +102346,7 @@ - + @@ -102374,7 +102360,7 @@ - + @@ -102382,52 +102368,52 @@ - + - + - + - + - + - - - - + + + + - + - + - + - + @@ -102443,12 +102429,12 @@ - + - + @@ -102456,26 +102442,26 @@ - + - + - + - + - + - + @@ -102483,36 +102469,36 @@ - + - + - + - - - - - - - - - - + + + + + + + + + + - + - + @@ -102536,94 +102522,94 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -102655,193 +102641,193 @@ - + - + - + - + - + - + - + - + - + + + - - - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - - + + - - + + - + - + - + - + - - + + - - + + - - + + @@ -102868,12 +102854,12 @@ - - - - + + + + - + @@ -102882,10 +102868,10 @@ - - + + - + @@ -102900,36 +102886,36 @@ - - + + - + - - + + - - + + - - + + @@ -103038,13 +103024,13 @@ - + - + @@ -103052,12 +103038,12 @@ - + - + @@ -103066,90 +103052,90 @@ - + - + - - - + + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + @@ -103172,15 +103158,15 @@ - - + + - + @@ -103217,14 +103203,14 @@ - + - + @@ -103300,7 +103286,7 @@ - + @@ -103315,7 +103301,7 @@ - + @@ -103373,7 +103359,7 @@ - + @@ -103429,7 +103415,7 @@ - + @@ -103445,17 +103431,17 @@ - + - - + + - + @@ -103464,20 +103450,20 @@ - - + + - + - + @@ -103486,36 +103472,36 @@ - + - + - - + + - + - + - + - + - + @@ -103523,12 +103509,12 @@ - + - + - + @@ -103537,47 +103523,47 @@ - - - - - - + + + + + + - + - + - - + + - + - + - + - + - + - + @@ -103585,17 +103571,17 @@ - + - + - + @@ -103715,7 +103701,7 @@ - + @@ -103725,7 +103711,7 @@ - + @@ -103939,7 +103925,7 @@ - + @@ -104033,9 +104019,9 @@ - - - + + + @@ -104055,7 +104041,7 @@ - + @@ -104073,7 +104059,7 @@ - + @@ -104088,25 +104074,25 @@ - + - + - + - + - + - + - + @@ -104121,19 +104107,19 @@ - + - + - + - + @@ -104148,26 +104134,26 @@ - + - + - + - + - + - + - + @@ -104175,7 +104161,7 @@ - + @@ -104195,29 +104181,29 @@ - + - + - + - + - + - + - + - + @@ -104225,39 +104211,39 @@ - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - @@ -104272,7 +104258,7 @@ - + @@ -104281,33 +104267,33 @@ - - + + - - + + - - + + - + - + - + @@ -104326,7 +104312,7 @@ - + @@ -104339,73 +104325,73 @@ - + - + - + - + - - + + - - + + - - + + - + - + - - - + + + - - + + - - + + - - + + - - + + - + - + @@ -104413,10 +104399,10 @@ - + - + @@ -104424,7 +104410,7 @@ - + @@ -104438,7 +104424,7 @@ - + @@ -104476,16 +104462,16 @@ - + - + - + @@ -104499,11 +104485,11 @@ - - + + - + @@ -104517,24 +104503,24 @@ - - + + + - - + - + - + @@ -104545,7 +104531,7 @@ - + @@ -104553,7 +104539,7 @@ - + @@ -104563,11 +104549,11 @@ - + - - + + @@ -104594,16 +104580,16 @@ - - + + - + - + - + @@ -104618,10 +104604,10 @@ - + - + @@ -104675,49 +104661,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -104738,10 +104724,10 @@ - + - + @@ -104765,7 +104751,7 @@ - + @@ -104780,7 +104766,7 @@ - + @@ -104807,12 +104793,12 @@ - + - - - + + + @@ -104826,60 +104812,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -104888,48 +104874,48 @@ - - - - + + + + - + - - - - - - - + + + + + + + - + - + - + - + @@ -104937,43 +104923,43 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -104981,7 +104967,7 @@ - + @@ -104992,7 +104978,7 @@ - + @@ -105009,40 +104995,40 @@ - + - + - + - + - + - + - + - + - + - + @@ -105051,31 +105037,31 @@ - + - + - + - + - + - + - + - + @@ -105102,13 +105088,13 @@ - + - + - + @@ -105123,7 +105109,7 @@ - + @@ -105149,9 +105135,9 @@ - + - + @@ -105169,7 +105155,7 @@ - + @@ -105186,169 +105172,169 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - + + - + - + - + - - + + - - - + + + - + - + - + - - - + + + - + - - - + + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -105357,7 +105343,7 @@ - + @@ -105367,7 +105353,7 @@ - + @@ -105377,108 +105363,120 @@ - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + - + + + - + - + @@ -105487,115 +105485,103 @@ + - - + + - - - + + + + - - - - - - + - - - - - - - + - - - - + + + + + + + + + + + - - - - - - - - - - - + - + - + - + - + - + - + - + - + @@ -105603,10 +105589,10 @@ - + - + @@ -105621,38 +105607,38 @@ - + - - + + - + - - + + - + - - - - + + + + - + - + - + @@ -105688,16 +105674,16 @@ - + - + - + - + @@ -105732,10 +105718,10 @@ - + - + @@ -105750,19 +105736,19 @@ - + - + - + - + - + @@ -105783,7 +105769,7 @@ - + @@ -105813,52 +105799,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -105867,15 +105853,15 @@ - + - + - + @@ -105905,7 +105891,7 @@ - + @@ -105964,7 +105950,7 @@ - + @@ -105999,101 +105985,101 @@ - + - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - + + + + + - - + + - + - - + + - + + + + + + + + + + + - + + - - - - - - - - - - - - + - - + + + + + + + - - - - - - - - + + + - - + + + + + + + + + + + - - - - - - - - - - + - - + + @@ -106105,32 +106091,32 @@ - + - + - + - + - - + + - + - + @@ -106141,7 +106127,7 @@ - + @@ -106201,7 +106187,7 @@ - + @@ -106222,7 +106208,7 @@ - + @@ -106230,7 +106216,7 @@ - + @@ -106238,10 +106224,10 @@ - + - + @@ -106264,7 +106250,7 @@ - + @@ -106272,10 +106258,10 @@ - + - + @@ -106323,59 +106309,59 @@ - - - - - - - + + + + + + + - + - - + + - + - + - - + + - + - + - + - + - + @@ -106383,30 +106369,30 @@ - - + + - + - + - + - + @@ -106429,7 +106415,7 @@ - + @@ -106443,31 +106429,31 @@ - + - + - + - + - + - + - + @@ -106484,7 +106470,7 @@ - + @@ -106499,7 +106485,7 @@ - + @@ -106508,7 +106494,7 @@ - + @@ -106544,13 +106530,13 @@ - + - + @@ -106579,10 +106565,10 @@ - + - + @@ -106591,33 +106577,33 @@ - - - + + + + + - - - - + + - + + + + + + + + + + - - - - - - - - - - + @@ -106627,39 +106613,39 @@ - - + + - + - + - - + + + + - - - + - + - + @@ -106673,7 +106659,7 @@ - + @@ -106690,115 +106676,115 @@ - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -106808,18 +106794,18 @@ - + - - + + - + @@ -106827,17 +106813,17 @@ - + - + - + @@ -106847,41 +106833,41 @@ - + - + - - - + + + - + - - + + - + - + - + - + @@ -106893,54 +106879,54 @@ - + - - + + - + - + - + - + - - + + - - + + - - - - + + + + - - + + - + @@ -106960,63 +106946,63 @@ - - - + + + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + @@ -107033,29 +107019,29 @@ - + - + - + - - + + - + - - - - + + + + - + @@ -107148,19 +107134,19 @@ - + - + - + - + @@ -107346,7 +107332,7 @@ - + @@ -107358,7 +107344,7 @@ - + @@ -107367,7 +107353,7 @@ - + @@ -107399,13 +107385,13 @@ - + - + - + @@ -107507,7 +107493,7 @@ - + @@ -107540,7 +107526,7 @@ - + @@ -107558,7 +107544,7 @@ - + @@ -107566,79 +107552,79 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -107704,10 +107690,10 @@ - + - + @@ -107719,18 +107705,18 @@ - + - + - + - + @@ -107775,10 +107761,10 @@ - + - + @@ -107793,10 +107779,10 @@ - + - + @@ -107814,7 +107800,7 @@ - + @@ -107822,7 +107808,7 @@ - + @@ -107839,24 +107825,24 @@ - + - + - + - + - + - + - + @@ -107907,7 +107893,7 @@ - + @@ -107916,7 +107902,7 @@ - + @@ -107924,7 +107910,7 @@ - + @@ -107934,7 +107920,7 @@ - + @@ -107945,8 +107931,8 @@ - - + + @@ -107958,220 +107944,220 @@ - - - - - - + + + + + + + + - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + - - - + + + - - + + + + + + + + + + - - - - - - - - - + - - + + - - + + - - + + + + + + + - - - - - - + - - + + + + + + + + + + - - - - - - - - - + - - + + - - + + - + - + - + - + @@ -108192,58 +108178,58 @@ - + - - - + + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + @@ -108252,18 +108238,18 @@ - + - + - + @@ -108290,7 +108276,7 @@ - + @@ -108301,28 +108287,28 @@ - + - + - + - + - + - + - + - + @@ -108348,8 +108334,8 @@ - - + + @@ -108375,57 +108361,57 @@ - + - + - - - - - - - - - - + + + + + + + + + + - + - + - + - - + + - - + + - - + + - + @@ -108435,7 +108421,7 @@ - + @@ -108445,12 +108431,12 @@ - + - + @@ -108461,35 +108447,43 @@ - - + + - - - + + + - - - + + + - - + + - + - + + + + + + + + + @@ -108509,7 +108503,7 @@ - + @@ -108523,24 +108517,24 @@ - + - + - - + + - + - + @@ -108549,28 +108543,28 @@ - + - + - + - + - + - + @@ -108578,73 +108572,73 @@ - - + + - + - - + + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + @@ -108653,7 +108647,7 @@ - + @@ -108668,44 +108662,44 @@ - + - + - + - + - + - + - + - + @@ -108714,15 +108708,15 @@ - + - + - + @@ -108737,26 +108731,26 @@ - + - + - - + + - + - + @@ -108768,62 +108762,62 @@ - + - + - - + + - + - - + + - + - + - - + + - + - + - - - - + + + + - + @@ -108831,7 +108825,7 @@ - + @@ -108844,28 +108838,28 @@ - + - + - + - + - + - + @@ -108873,38 +108867,38 @@ - + - + - + - + - + - + - + - + @@ -108937,47 +108931,47 @@ - + - + - - + + - - + + - + - + - + - + - + - + - + @@ -108989,31 +108983,31 @@ - + - + - + - + - + - + - + - + @@ -109022,7 +109016,7 @@ - + @@ -109046,13 +109040,13 @@ - + - + @@ -109061,7 +109055,7 @@ - + @@ -109082,7 +109076,7 @@ - + @@ -109124,25 +109118,25 @@ - + - + - + - + @@ -109157,28 +109151,28 @@ - + - + - + - + - + - + @@ -109187,7 +109181,7 @@ - + @@ -109199,10 +109193,10 @@ - + - + @@ -109211,18 +109205,18 @@ - + - + - + - + - + @@ -109236,9 +109230,9 @@ - + - + @@ -109259,7 +109253,7 @@ - + @@ -109273,12 +109267,12 @@ - + - + - + @@ -109293,7 +109287,7 @@ - + @@ -109302,10 +109296,10 @@ - + - + @@ -109316,35 +109310,35 @@ - + - + - + - + - + - + - + @@ -109354,18 +109348,18 @@ - + - + - + - + - + @@ -109380,7 +109374,7 @@ - + @@ -109422,29 +109416,29 @@ - + - + - + - + - + - + - + - + - + @@ -109452,7 +109446,7 @@ - + @@ -109478,23 +109472,23 @@ - + - + - + - + - + - + - + @@ -109505,77 +109499,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -109598,7 +109592,7 @@ - + @@ -109614,21 +109608,21 @@ - + - + - + - + - + @@ -109651,48 +109645,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -109700,7 +109694,7 @@ - + @@ -109723,7 +109717,7 @@ - + @@ -109731,59 +109725,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -109795,42 +109789,42 @@ - + - + - + - + - + - + - + - + - + - + @@ -109844,23 +109838,23 @@ - + - + - + - + - + - + - + @@ -109878,15 +109872,15 @@ - + - + - + @@ -109894,7 +109888,7 @@ - + @@ -109903,10 +109897,10 @@ - + - + @@ -109918,14 +109912,14 @@ - + - + @@ -109936,10 +109930,10 @@ - + - + @@ -109954,7 +109948,7 @@ - + @@ -109999,7 +109993,7 @@ - + @@ -110007,13 +110001,13 @@ - + - + - + @@ -110025,7 +110019,7 @@ - + @@ -110039,7 +110033,7 @@ - + @@ -110053,10 +110047,10 @@ - + - + @@ -110077,15 +110071,15 @@ - + - + - + @@ -110093,7 +110087,7 @@ - + @@ -110116,7 +110110,7 @@ - + @@ -110130,7 +110124,7 @@ - + @@ -110144,7 +110138,7 @@ - + @@ -110156,7 +110150,7 @@ - + @@ -110170,7 +110164,7 @@ - + @@ -110197,7 +110191,7 @@ - + @@ -110211,50 +110205,50 @@ - - - - - - - - - - - + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - - + - + @@ -110262,58 +110256,58 @@ - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + @@ -110321,199 +110315,199 @@ - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + + + + + + - + - - - - - + + + + - + + - - + + + - - - + + - - + + + + - - - - + + - - + + + - - - + + - + + - - - - - - - + + + + + - + + + - - - - - - - + - - + + - - + + - - + + - + - + - + - - + + - + - + - - - + + + - + @@ -110551,7 +110545,7 @@ - + @@ -110573,29 +110567,29 @@ - + - - - + + + - - + + - + - + - + @@ -110604,21 +110598,21 @@ - + - + - + - + - + - + @@ -110626,7 +110620,7 @@ - + @@ -110637,7 +110631,7 @@ - + @@ -110645,27 +110639,27 @@ - + - + - + - + - + @@ -110673,12 +110667,12 @@ - + - + - + @@ -110687,9 +110681,9 @@ - + - + @@ -110698,7 +110692,7 @@ - + @@ -110706,24 +110700,24 @@ - + - + - + - + - + - + @@ -110731,7 +110725,7 @@ - + @@ -110752,10 +110746,10 @@ - - + + - + @@ -110770,45 +110764,45 @@ - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + @@ -110816,79 +110810,79 @@ - - - + + + - - + + - + - - + + - + - - - + + + - + - + - - + + - + - + - + - + - + - + - + - - + + @@ -110898,131 +110892,131 @@ - + - - + + - - + + - + - + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - - + + - - - + + + - - - - - - + + - - - + + + + + + + - - + + - - - - + + + + - - - + + + - - + + - + - + - + @@ -111030,133 +111024,133 @@ - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - - + + @@ -111164,8 +111158,8 @@ - - + + @@ -111173,19 +111167,19 @@ - - + + - - + + - - - + + + @@ -111214,10 +111208,10 @@ - + - + @@ -111270,7 +111264,7 @@ - + @@ -111284,62 +111278,62 @@ - - - - - - + + + + + + - - + + - + - - + + - + - + - + - + - + - + - - + + - + @@ -111352,19 +111346,19 @@ - - + + - + - + - + @@ -111372,19 +111366,19 @@ - + - + - + - + @@ -111393,13 +111387,13 @@ - + - + @@ -111408,28 +111402,28 @@ - + - + - + - + - + @@ -111438,10 +111432,10 @@ - + - + @@ -111450,10 +111444,10 @@ - + - + @@ -111462,7 +111456,7 @@ - + @@ -111476,67 +111470,67 @@ - - - + + + + - - - - - - + + + + + - - + + - + + + + + - + + + - - - - - - - + - - - + + + - - + + - - + + - + - + - + @@ -111575,13 +111569,13 @@ - + - + @@ -111623,7 +111617,7 @@ - + @@ -111635,15 +111629,15 @@ - + - + - + @@ -111655,7 +111649,7 @@ - + @@ -111664,109 +111658,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -111774,15 +111768,15 @@ - + - + - + @@ -111791,8 +111785,8 @@ - - + + @@ -111820,130 +111814,130 @@ - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -111961,165 +111955,165 @@ - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + + + + + + + + - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -112130,8 +112124,8 @@ - - + + @@ -112145,77 +112139,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -112223,7 +112217,7 @@ - + @@ -112231,7 +112225,7 @@ - + @@ -112239,7 +112233,7 @@ - + @@ -112247,35 +112241,35 @@ - + - + - + - + - + - + @@ -112283,7 +112277,7 @@ - + @@ -112292,38 +112286,38 @@ - + - + - + - + - - - - - - - - - + + + + + + + + + - + - - + + @@ -112334,25 +112328,25 @@ - + - + - + - + @@ -112371,227 +112365,227 @@ - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -112600,88 +112594,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -112692,56 +112686,56 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - + @@ -112758,83 +112752,84 @@ - - + + - + - + - + - - + + - - + + - + - + - + - - - + + + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -112847,7 +112842,7 @@ - + @@ -112858,7 +112853,7 @@ - + @@ -112866,7 +112861,7 @@ - + @@ -112877,7 +112872,7 @@ - + @@ -113335,7 +113330,7 @@ - + @@ -113391,7 +113386,7 @@ - + @@ -113414,7 +113409,7 @@ - + @@ -113810,7 +113805,7 @@ - + @@ -115410,7 +115405,7 @@ - + @@ -115533,7 +115528,7 @@ - + @@ -115797,7 +115792,7 @@ - + @@ -116083,7 +116078,7 @@ - + @@ -117046,7 +117041,7 @@ - + @@ -117090,18 +117085,18 @@ - + - - + + - + - + @@ -117127,7 +117122,7 @@ - + @@ -117143,7 +117138,7 @@ - + @@ -117158,21 +117153,21 @@ - + - + - + - + @@ -117384,7 +117379,7 @@ - + @@ -117838,7 +117833,7 @@ - + @@ -117846,7 +117841,7 @@ - + @@ -118319,15 +118314,15 @@ - + - + - + @@ -118721,7 +118716,7 @@ - + @@ -118776,14 +118771,6 @@ - - - - - - - - @@ -118795,7 +118782,7 @@ - + @@ -118809,7 +118796,7 @@ - + @@ -118824,7 +118811,7 @@ - + @@ -118835,12 +118822,12 @@ - + - + @@ -118849,42 +118836,42 @@ - - + + - + - + - + - - - + + + - + - + - + - + + + + + - - - - - + @@ -118899,7 +118886,7 @@ - + @@ -118916,28 +118903,28 @@ - + - + - + - + - + - + - + @@ -118949,7 +118936,7 @@ - + @@ -118964,7 +118951,7 @@ - + @@ -118978,126 +118965,126 @@ - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - + - - + + - + - + + + + + + - - - - - - + - - + + - - + + - + - + @@ -119118,103 +119105,103 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -119225,7 +119212,7 @@ - + @@ -119270,16 +119257,16 @@ - + - + - + - + @@ -119291,10 +119278,10 @@ - + - + @@ -119309,19 +119296,19 @@ - + - + - + - + - + @@ -119351,16 +119338,16 @@ - + - + - + @@ -119374,7 +119361,7 @@ - + @@ -119391,24 +119378,24 @@ - + - + - + - + - + - + - + @@ -119423,13 +119410,13 @@ - + - + - + @@ -119440,16 +119427,16 @@ - + - + - + - + @@ -119457,7 +119444,7 @@ - + @@ -119465,32 +119452,32 @@ - + - + - + - + - + - + - + - + - + @@ -119504,7 +119491,7 @@ - + @@ -119512,10 +119499,10 @@ - + - + @@ -119532,16 +119519,16 @@ - + - + - + @@ -119561,7 +119548,7 @@ - + @@ -119569,7 +119556,7 @@ - + @@ -119589,12 +119576,12 @@ - + - + - + @@ -119603,7 +119590,7 @@ - + @@ -119623,7 +119610,7 @@ - + @@ -119634,10 +119621,10 @@ - + - + @@ -119646,30 +119633,30 @@ - + - + - + - + - + - + - + - + @@ -119681,7 +119668,7 @@ - + @@ -119690,7 +119677,7 @@ - + @@ -119701,7 +119688,7 @@ - + @@ -119718,100 +119705,100 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + - - - - + + + + - - - - - - - + + + + + + - + - + - + - + - + @@ -119820,107 +119807,107 @@ - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -119933,98 +119920,98 @@ - - + + - - - + + + - - - - + + + + - - + + + + + + + - - + + - + + - - + + + - - - - - - - - + - - + - + + - - + + - - + + + + + + - + - - - - - + - - + + - - - + + + - - + + @@ -120032,7 +120019,7 @@ - + @@ -120049,28 +120036,28 @@ - - - + + + - + - + - + - + @@ -120078,110 +120065,110 @@ - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + @@ -120201,17 +120188,17 @@ - + - + - + - - + + - + @@ -120319,7 +120306,7 @@ - + @@ -120333,13 +120320,13 @@ - + - + @@ -120351,10 +120338,10 @@ - + - + @@ -120375,7 +120362,7 @@ - + @@ -120392,25 +120379,25 @@ - + - - - - - - + + + + + + - + - + @@ -120436,15 +120423,15 @@ - + - + - + @@ -120464,39 +120451,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -120505,12 +120492,12 @@ - + - + @@ -120521,379 +120508,379 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + - - - + + + - + - + - + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - + - - + + - + - - - - - + + + + + - + - + - + - + - - + + + + + + - + + - - + + - - - - - - + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -120902,7 +120889,7 @@ - + @@ -120941,19 +120928,19 @@ - + - + - + - + @@ -120962,12 +120949,12 @@ - + - + - + @@ -120985,10 +120972,10 @@ - + - + @@ -121014,34 +121001,34 @@ - + - + - + - + - + - + - + - + @@ -121062,13 +121049,13 @@ - + - + @@ -121077,15 +121064,15 @@ - + - + - + - + @@ -121094,73 +121081,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -121169,20 +121156,20 @@ - + - + - + - + - + - + @@ -121194,15 +121181,15 @@ - + - + - + @@ -121210,7 +121197,7 @@ - + @@ -121218,35 +121205,35 @@ - + - + - + - + - + - + - + - + - + - + @@ -121267,7 +121254,7 @@ - + @@ -121277,7 +121264,7 @@ - + @@ -121285,159 +121272,159 @@ - + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - - + + - - + + - + - - + + - + - - + + - - - - + + + + + + + + + - - + - - - - - + - - + + + + + + - - + + - + - - - - - + - - + + - + - + - + - + - + - + - + - + @@ -121446,166 +121433,166 @@ - - - - - + + + + + - + - + - + - + - - + + - + - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -121617,73 +121604,73 @@ - + - + - + - + - + - + - - - - - + + + + + - + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - - + + @@ -121692,10 +121679,10 @@ - + - + @@ -121703,104 +121690,104 @@ - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + @@ -121812,28 +121799,28 @@ - + - + - + - + - + - + @@ -121857,13 +121844,13 @@ - + - + - + @@ -121872,7 +121859,7 @@ - + @@ -121904,12 +121891,12 @@ - + - + @@ -121918,27 +121905,27 @@ - + - + - + - + - + - + - + @@ -121953,16 +121940,16 @@ - + - + - + - + @@ -121977,7 +121964,7 @@ - + @@ -121989,83 +121976,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122082,18 +122069,18 @@ - + - + - + - + @@ -122114,7 +122101,7 @@ - + @@ -122122,7 +122109,7 @@ - + @@ -122133,45 +122120,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122185,7 +122172,7 @@ - + @@ -122208,10 +122195,10 @@ - + - + @@ -122246,7 +122233,7 @@ - + @@ -122272,7 +122259,7 @@ - + @@ -122280,84 +122267,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -122365,34 +122352,34 @@ - + - + - + - + - + - + - + - + - + @@ -122442,7 +122429,7 @@ - + @@ -122451,18 +122438,18 @@ - + - + - + - + @@ -122472,30 +122459,30 @@ - + - + - + - + - + - + - + - + - + @@ -122509,7 +122496,7 @@ - + @@ -122523,15 +122510,15 @@ - + - + - + @@ -122540,7 +122527,7 @@ - + @@ -122554,7 +122541,7 @@ - + @@ -122566,12 +122553,12 @@ - + - + @@ -122580,32 +122567,32 @@ - + - + - + - + - + - + - + - + - + @@ -122647,77 +122634,77 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122743,10 +122730,10 @@ - + - + @@ -122760,7 +122747,7 @@ - + @@ -122777,7 +122764,7 @@ - + @@ -122806,7 +122793,7 @@ - + @@ -122823,7 +122810,7 @@ - + @@ -122832,7 +122819,7 @@ - + @@ -122840,13 +122827,13 @@ - + - + @@ -122860,13 +122847,13 @@ - + - + @@ -122877,13 +122864,13 @@ - + - + - + @@ -122894,18 +122881,18 @@ - + - + - + - + - + @@ -122931,10 +122918,10 @@ - + - + @@ -122945,20 +122932,20 @@ - + - + - + - + - + @@ -122967,42 +122954,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -123011,14 +122998,14 @@ - + - + @@ -123026,13 +123013,13 @@ - + - + - + @@ -123040,26 +123027,26 @@ - + - + - + - + - + - + - + @@ -123074,20 +123061,20 @@ - + - + - + - + - + - + @@ -123096,12 +123083,12 @@ - + - + - + @@ -123111,372 +123098,372 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -123499,7 +123486,7 @@ - + @@ -123519,41 +123506,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -123582,7 +123569,7 @@ - + @@ -123591,7 +123578,7 @@ - + @@ -123599,7 +123586,7 @@ - + @@ -123616,7 +123603,7 @@ - + @@ -123625,7 +123612,7 @@ - + @@ -123634,10 +123621,10 @@ - + - + @@ -123645,10 +123632,10 @@ - + - + @@ -123656,9 +123643,9 @@ - + - + @@ -123667,7 +123654,7 @@ - + @@ -123679,15 +123666,15 @@ - + - + - + - + @@ -123695,10 +123682,10 @@ - + - + @@ -123706,7 +123693,7 @@ - + @@ -123720,10 +123707,10 @@ - + - + @@ -123743,7 +123730,7 @@ - + @@ -123752,7 +123739,7 @@ - + @@ -123761,10 +123748,10 @@ - + - + @@ -123784,10 +123771,10 @@ - + - + @@ -123795,13 +123782,13 @@ - + - + @@ -123809,16 +123796,16 @@ - + - + - + @@ -123829,7 +123816,7 @@ - + @@ -123837,7 +123824,7 @@ - + @@ -123854,10 +123841,10 @@ - + - + @@ -123868,7 +123855,7 @@ - + @@ -123877,7 +123864,7 @@ - + @@ -123888,10 +123875,10 @@ - + - + @@ -123917,7 +123904,7 @@ - + @@ -123935,7 +123922,7 @@ - + @@ -123952,7 +123939,7 @@ - + @@ -123964,7 +123951,7 @@ - + @@ -123981,7 +123968,7 @@ - + @@ -123990,7 +123977,7 @@ - + @@ -124019,7 +124006,7 @@ - + @@ -124057,10 +124044,10 @@ - + - + @@ -124068,9 +124055,9 @@ - + - + @@ -124082,18 +124069,18 @@ - + - + - + - + @@ -124101,13 +124088,13 @@ - + - + - + @@ -124118,10 +124105,10 @@ - + - + @@ -124130,7 +124117,7 @@ - + @@ -124138,13 +124125,13 @@ - + - + @@ -124152,7 +124139,7 @@ - + @@ -124169,7 +124156,7 @@ - + @@ -124186,7 +124173,7 @@ - + @@ -124197,13 +124184,13 @@ - + - + - + @@ -124214,19 +124201,19 @@ - + - + - + @@ -124237,10 +124224,10 @@ - + - + @@ -124257,7 +124244,7 @@ - + @@ -124265,20 +124252,20 @@ - + - + - + - + - + @@ -124286,26 +124273,26 @@ - + - + - + - + - + - + - + @@ -124313,31 +124300,31 @@ - + - + - + - + - + - + - + - + - + @@ -124345,7 +124332,7 @@ - + @@ -124357,7 +124344,7 @@ - + @@ -124365,7 +124352,7 @@ - + @@ -124377,7 +124364,7 @@ - + @@ -124400,10 +124387,10 @@ - + - + @@ -124414,21 +124401,21 @@ - + - + - + - + - + @@ -124436,7 +124423,7 @@ - + @@ -124456,7 +124443,7 @@ - + @@ -124473,396 +124460,402 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - + + + + + + + - + - + - + - + - + - + - + - + - + + - - + - + - + - + @@ -124898,7 +124891,7 @@ - + @@ -124940,7 +124933,7 @@ - + @@ -124952,7 +124945,7 @@ - + @@ -124964,7 +124957,7 @@ - + @@ -125006,7 +124999,7 @@ - + @@ -125018,7 +125011,7 @@ - + @@ -125054,7 +125047,7 @@ - + @@ -125066,277 +125059,271 @@ - + - - - - - - - - - - - - + + + + + + + + + + + - - + - + + - - + + - - + + - - + + - - + + - - + + - - - - - - + + + + + + + + - - - - + + - - + + + - - - - - - - + - - + + + + + + + + - + + - - - - + + - - - - - - + - - + + - + + + + + + + - - - + + - - + + - + - + - - + + - + + - - - + + - - + + - + - - + + - - + + - - + + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - + + - - + - + - - - - - - + - + @@ -125344,69 +125331,69 @@ - - + + - - + + - + - + - - - + + + + + + + - + - - - - - + - - + + - + - + - + - + - + - + @@ -125415,20 +125402,20 @@ - - - + + + - + - + - + @@ -125446,37 +125433,37 @@ - + - + - - + + - + - + - + - + @@ -125486,28 +125473,28 @@ - + - + - - + + - + - + @@ -125521,13 +125508,13 @@ - + - + - + @@ -125548,21 +125535,21 @@ - + - + - + - + - + @@ -125571,21 +125558,21 @@ - + - + - + - + - + - + @@ -125596,10 +125583,10 @@ - + - + @@ -125641,10 +125628,10 @@ - + - + @@ -125653,7 +125640,7 @@ - + @@ -125677,7 +125664,7 @@ - + @@ -125689,52 +125676,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -125743,37 +125730,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -125787,16 +125774,16 @@ - + - + - + @@ -125816,12 +125803,12 @@ - + - + @@ -125854,7 +125841,7 @@ - + @@ -125868,19 +125855,19 @@ - + - + - + - + - + @@ -125909,7 +125896,7 @@ - + @@ -125947,7 +125934,7 @@ - + @@ -125965,7 +125952,7 @@ - + @@ -126000,15 +125987,15 @@ - + - + - + - + @@ -126052,7 +126039,7 @@ - + @@ -126097,7 +126084,7 @@ - + @@ -126105,26 +126092,26 @@ - + - + - + - + - + - + - + - + @@ -126142,7 +126129,7 @@ - + @@ -126162,21 +126149,21 @@ - + - + - + - + - + - + @@ -126230,12 +126217,12 @@ - + - + - + @@ -126247,12 +126234,12 @@ - + - + - + @@ -126267,7 +126254,7 @@ - + @@ -126290,24 +126277,24 @@ - + - + - + - + - + @@ -126321,7 +126308,7 @@ - + @@ -126337,7 +126324,7 @@ - + @@ -126345,120 +126332,120 @@ - + - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - + - - + + - + - - + + - + + + + + - - - - - + - - + + + + + + - + + + - - - - - - - + - - + + - - + + - + @@ -126466,11 +126453,11 @@ - + - + @@ -126478,23 +126465,23 @@ - + - - - + + + - + - + @@ -126512,32 +126499,32 @@ - + - + - + - + - + - + - + - + - + @@ -126545,7 +126532,7 @@ - + @@ -126563,7 +126550,7 @@ - + @@ -126571,17 +126558,17 @@ - + - + - + @@ -126592,21 +126579,21 @@ - + - + - + - + - + - + @@ -126620,13 +126607,13 @@ - + - + @@ -126638,115 +126625,115 @@ - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - + + - - + + - + - - + + - + - + - - + + - - - + + + - - + + - - - + + + - - + + + + + + + - - + + - - - - - - + - + - + - + @@ -126755,7 +126742,7 @@ - + @@ -126782,36 +126769,36 @@ - + - + - - - - + + + + - + - + - + - + @@ -126819,216 +126806,216 @@ - - - + + + - + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - - + + - - + + - - + + - - - + + + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - - + + + - + - + - - - - + + + + - - + + - + - + - - - - + + + + - - - - - + + + + + - - - + + + - + - + - + - - + + - - + + - - + + - + @@ -127036,13 +127023,13 @@ - - + + - - + + @@ -127051,14 +127038,14 @@ - - + + - - - + + + @@ -127066,50 +127053,50 @@ - - + + - + - - - - + + + + - + - - + + - + - - + + - - + + - + - + @@ -127124,164 +127111,164 @@ - + - + - + - + - + - + - - - - - - - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -127292,7 +127279,7 @@ - + @@ -127301,24 +127288,24 @@ - + - + - - - - + + + + + - - + - + @@ -127348,32 +127335,32 @@ - - - + + + - - - + + + - + - + - + @@ -127395,22 +127382,22 @@ - - - - + + + + - + - + - + @@ -127457,13 +127444,13 @@ - + - + - + @@ -127481,7 +127468,7 @@ - + @@ -127493,7 +127480,7 @@ - + @@ -127544,53 +127531,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -127608,13 +127595,13 @@ - + - + - + @@ -127626,7 +127613,7 @@ - + @@ -127635,7 +127622,7 @@ - + @@ -127645,12 +127632,12 @@ - + - + @@ -127665,13 +127652,13 @@ - + - + @@ -127682,18 +127669,18 @@ - + - + - + - + @@ -127705,7 +127692,7 @@ - + @@ -127723,158 +127710,158 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + - + - + - + - + - + - + - + - + + + + + - + + - - - - - - + - - + + - - + + - + - + - - + + - - + + - - + + + + + + + + + - + - - - - - - - @@ -127885,20 +127872,20 @@ - - - + + + - - - - + + + + - + @@ -127906,64 +127893,64 @@ - - + + - - + + - - - + + + - - - - - + + + + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + @@ -127979,7 +127966,7 @@ - + @@ -127990,13 +127977,13 @@ - + - + @@ -128007,60 +127994,60 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - + + - + - - + + - + - + - - + + - - + + @@ -128069,7 +128056,7 @@ - + @@ -128078,20 +128065,20 @@ - - + + - + - - + + - + @@ -128112,22 +128099,22 @@ - - + + - - + + - + - + @@ -128141,8 +128128,8 @@ - - + + @@ -128150,107 +128137,107 @@ - + - - + + - + - - + + - - + + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128259,22 +128246,22 @@ - + - + - + - + @@ -128282,7 +128269,7 @@ - + @@ -128290,14 +128277,14 @@ - - + + - + @@ -128308,72 +128295,72 @@ - - + + - + - - + + - - + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - + - + - + @@ -128381,55 +128368,55 @@ - + - + - + - + - + - + - + - + - + @@ -128466,34 +128453,34 @@ - + - + - + - + - + - + - + - + @@ -128538,75 +128525,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128615,7 +128602,7 @@ - + @@ -128630,7 +128617,7 @@ - + @@ -128643,7 +128630,7 @@ - + @@ -128717,7 +128704,7 @@ - + @@ -128725,12 +128712,12 @@ - + - + @@ -128739,13 +128726,13 @@ - + - + - + @@ -128787,13 +128774,13 @@ - + - + - + @@ -128814,70 +128801,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128892,7 +128879,7 @@ - + @@ -128907,39 +128894,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -128947,9 +128934,9 @@ - + - + @@ -128958,7 +128945,7 @@ - + @@ -128985,9 +128972,9 @@ - + - + @@ -128999,27 +128986,27 @@ - + - + - + - + - + - + - + @@ -129030,15 +129017,15 @@ - + - + - + @@ -129053,15 +129040,15 @@ - + - + - + @@ -129070,22 +129057,22 @@ - + - + - + - + - + - + @@ -129115,7 +129102,7 @@ - + @@ -129127,7 +129114,7 @@ - + @@ -129142,14 +129129,14 @@ - + - + @@ -129157,7 +129144,7 @@ - + @@ -129186,16 +129173,16 @@ - + - + - + - + @@ -129203,7 +129190,7 @@ - + @@ -129223,151 +129210,151 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - - - + + + - - - + + + - - + + - + - + @@ -129381,188 +129368,188 @@ - - - + + + - - - + + + - - - + + + - - - + + + - + - + + + + + - - + + - + + + - - - - - - + + + + + + - - - + + - - + + + - - - + + + - - - - - - - + - - + + + + + + + + + - - - - - - - - + + + + + - + + - - + + - - + + - - + + + - + + - - - - - - - - + + + + + + + - + + - - - - + + - - - - + + + - + + - - + - - - - - + - + @@ -129574,89 +129561,89 @@ - - + + - + - - + + - - + + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + @@ -129674,16 +129661,16 @@ - + - + - + - + @@ -129695,42 +129682,42 @@ - + - + - - + + - + - + - + - + - + - + - + @@ -129741,100 +129728,100 @@ - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + - + - + - - + + - - + + - + - - + + - + - + + + + + + + - - - - - - - + - - + + - + - + - + @@ -129843,10 +129830,10 @@ - + - + @@ -129870,7 +129857,7 @@ - + @@ -129891,10 +129878,10 @@ - + - + @@ -129939,13 +129926,13 @@ - + - + @@ -129954,7 +129941,7 @@ - + @@ -129965,30 +129952,30 @@ - + - + - + - + - + - + - + - + @@ -130000,7 +129987,7 @@ - + @@ -130011,121 +129998,121 @@ - + - - - - - - - - + + + + + + + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + + - - - - + + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + @@ -130170,9 +130157,9 @@ - + - + @@ -130184,107 +130171,107 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - + @@ -130293,150 +130280,150 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + - + + - + + - - + - + + + + - - - - + + + - + - - + + - - - - - - - - - + + - - + + - - + + - - + + - + - - + + + + + + - + + - - - - - - - + + - + - + - - - + + + @@ -130456,7 +130443,7 @@ - + @@ -130471,10 +130458,10 @@ - + - + @@ -130483,7 +130470,7 @@ - + @@ -130534,16 +130521,16 @@ - + - + - + @@ -130552,7 +130539,7 @@ - + @@ -130560,7 +130547,7 @@ - + @@ -130568,7 +130555,7 @@ - + @@ -130576,7 +130563,7 @@ - + @@ -130585,11 +130572,11 @@ - - - - - + + + + + @@ -130601,30 +130588,30 @@ - + - + - + - - + + - - + + - + @@ -130634,68 +130621,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + @@ -130706,7 +130693,7 @@ - + @@ -130714,20 +130701,20 @@ - + - + - - - - - - + + + + + + @@ -130738,92 +130725,92 @@ - + - + - - + + - - + + - - + + - + - + - - + + - + - + - + - - + + - - + + - + - + - - + + - + - + - + @@ -130831,7 +130818,7 @@ - + @@ -130839,36 +130826,36 @@ - + - + - + - + - + - + - + - + - + @@ -130880,24 +130867,24 @@ - + - + - + - + - - + + @@ -130908,35 +130895,35 @@ - - - - - + + + + + - + - + - + - + - + - + - + @@ -130948,7 +130935,7 @@ - + @@ -130963,7 +130950,7 @@ - + @@ -130984,7 +130971,7 @@ - + @@ -131001,36 +130988,36 @@ - - - - + + + + - - + + - + - + - - + + - + - + - + - - + + @@ -131041,10 +131028,10 @@ - + - + @@ -131056,7 +131043,7 @@ - + @@ -131067,12 +131054,12 @@ - + - + @@ -131087,10 +131074,10 @@ - + - + @@ -131099,7 +131086,7 @@ - + @@ -131129,7 +131116,7 @@ - + @@ -131182,150 +131169,150 @@ - + - + - - - - - + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - - + + - + - + - + - + @@ -131358,10 +131345,10 @@ - + - + @@ -131373,7 +131360,7 @@ - + @@ -131382,13 +131369,13 @@ - + - + @@ -131406,7 +131393,7 @@ - + @@ -131414,15 +131401,15 @@ - + - + - + - + @@ -131440,7 +131427,7 @@ - + @@ -131448,128 +131435,128 @@ - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - + + - - + + + + + + + + - - + - - + + + - - - - - - - + - + - - + + - - - + + + - - + + - - - + + + - + - - + + @@ -131577,49 +131564,49 @@ - + - + - + - + - + - + - + - - + + - - + + - + - + - + @@ -131645,25 +131632,25 @@ - + - + - + - + - + - + @@ -131675,7 +131662,7 @@ - + @@ -131684,7 +131671,7 @@ - + @@ -131717,22 +131704,22 @@ - + - + - + - + @@ -131750,7 +131737,7 @@ - + @@ -131763,7 +131750,7 @@ - + @@ -131786,30 +131773,30 @@ - + - + - + - + - + - + @@ -131820,19 +131807,19 @@ - + - + - + - + @@ -131847,7 +131834,7 @@ - + @@ -131858,7 +131845,7 @@ - + @@ -131883,7 +131870,7 @@ - + @@ -131896,9 +131883,9 @@ - + - + @@ -131907,7 +131894,7 @@ - + @@ -131915,12 +131902,12 @@ - + - + @@ -131956,7 +131943,7 @@ - + @@ -131964,25 +131951,25 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + @@ -131993,12 +131980,12 @@ - + - + - + @@ -132006,38 +131993,38 @@ - + - + - + - + - + - - - + + + - - + + @@ -132049,32 +132036,32 @@ - - + + - - + + - - + + - - + + - - + + - + @@ -132100,7 +132087,7 @@ - + @@ -132112,7 +132099,7 @@ - + @@ -132142,47 +132129,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -132190,27 +132177,27 @@ - + - + - + - + - + @@ -132221,20 +132208,20 @@ - + - - - - - + + + + + + - - + @@ -132245,50 +132232,50 @@ - + - + - + - + - + - + - + - - + + - - + + - - + + @@ -132314,7 +132301,7 @@ - + @@ -132331,7 +132318,7 @@ - + @@ -132358,13 +132345,13 @@ - + - + @@ -132372,61 +132359,61 @@ - - + + - + - + - + - + - + - + - - + + - + - + - - + + - + @@ -132440,61 +132427,61 @@ - + - + - + - + - + - + - + - + - - - - - - - + + + + + + + - + - + - + - + @@ -132502,7 +132489,7 @@ - + @@ -132525,27 +132512,27 @@ - + - + - + - + - + @@ -132553,12 +132540,12 @@ - + - + @@ -132573,57 +132560,57 @@ - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + @@ -132656,21 +132643,21 @@ - - + + - + - + - + @@ -132725,7 +132712,7 @@ - + @@ -132734,9 +132721,9 @@ - + - + @@ -132748,7 +132735,7 @@ - + @@ -132759,64 +132746,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -132825,31 +132812,31 @@ - + - + - + - - - - - - - - + + + + + + + + - + @@ -132859,14 +132846,14 @@ - - + + - + @@ -132874,38 +132861,38 @@ - + - + - - + + - - + + - + - + - + - + @@ -132914,7 +132901,7 @@ - + @@ -132930,11 +132917,11 @@ - + - + @@ -132956,26 +132943,26 @@ - + - + - + - + - + @@ -132994,73 +132981,73 @@ - + - + - - + + - + - - + + - - + + - - + + - - - - + + + + - + - - + + - + - + - + - + @@ -133074,9 +133061,9 @@ - + - + @@ -133097,63 +133084,63 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -133182,7 +133169,7 @@ - + @@ -133212,11 +133199,11 @@ - + - + @@ -133230,71 +133217,71 @@ - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + @@ -133302,93 +133289,93 @@ - - + + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + @@ -133396,36 +133383,36 @@ - + - + - + - + - + - + - + - + - + - + @@ -133437,22 +133424,22 @@ - + - + - + - + - + - + @@ -133460,10 +133447,10 @@ - + - + @@ -133471,7 +133458,7 @@ - + @@ -133482,101 +133469,101 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + - + - + - + - + + - - - + + - - + - - - - - + - + - + - + - + - + - + - + - + - + @@ -133587,30 +133574,30 @@ - + - + - + - + - + - + - + - + @@ -133628,7 +133615,7 @@ - + @@ -133651,59 +133638,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -133711,26 +133698,26 @@ - + - + - + - + - + - + - + @@ -133741,38 +133728,38 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -133792,222 +133779,222 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + - - + + + + + - + - + - + - - + + - - + + - + + + + + + - - - - - - + - - + + - - + + + + + + + + - + + - - - - - - - - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + - + - - - - - - + + - + - + @@ -134067,61 +134054,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -134148,10 +134135,10 @@ - + - + @@ -134160,8 +134147,8 @@ - - + + @@ -134178,58 +134165,58 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + @@ -134264,8 +134251,8 @@ - - + + @@ -134276,13 +134263,13 @@ - - - - - - - + + + + + + + @@ -134302,18 +134289,18 @@ - - - - - - - - - - + + + + + + + + + + - + @@ -134325,12 +134312,12 @@ - - - - + + + + - + @@ -134339,19 +134326,19 @@ - + - + - + - + - + @@ -134381,7 +134368,7 @@ - + @@ -134390,13 +134377,13 @@ - + - + @@ -134411,7 +134398,7 @@ - + @@ -134444,7 +134431,7 @@ - + @@ -134465,9 +134452,9 @@ - - - + + + @@ -134490,196 +134477,196 @@ - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - + + - + - + + + + + + + - - - - - - - + - + + - - + + + + + + - - - - - - + - + - - - - - - + - + + + + + + + + + + + + + + - - - - - + + + + - - - + + + + + + + - - + + - - - - - - + - - - - - - - - - - - - + - + + + + + + - + - + - + - + + - - + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - - - - - + - + - + - + - + - + - + @@ -134694,27 +134681,27 @@ - + - + - + - + - + - + @@ -134722,75 +134709,75 @@ - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - - + + - + - + - + - + - + - + - + @@ -134798,15 +134785,15 @@ - - + + - + - - + + @@ -134814,26 +134801,26 @@ - + - + - + - + @@ -134847,14 +134834,14 @@ - + - + - + @@ -134866,32 +134853,32 @@ - - + + - + - - - + + + - - + + - + - + @@ -134899,22 +134886,22 @@ - + - + - + - + @@ -134923,10 +134910,10 @@ - + - + @@ -134941,45 +134928,45 @@ - + - - + + - + - + - + - + - + - + - + - + @@ -135006,13 +134993,13 @@ - + - + @@ -135024,10 +135011,10 @@ - + - + @@ -135069,19 +135056,19 @@ - + - + - + - + - + @@ -135105,7 +135092,7 @@ - + @@ -135119,13 +135106,13 @@ - + - + @@ -135133,10 +135120,10 @@ - + - + @@ -135153,7 +135140,7 @@ - + @@ -135162,10 +135149,10 @@ - + - + @@ -135176,7 +135163,7 @@ - + @@ -135197,7 +135184,7 @@ - + @@ -135218,19 +135205,19 @@ - + - + - + @@ -135265,15 +135252,15 @@ - + - + - + @@ -135288,12 +135275,12 @@ - + - + @@ -135302,58 +135289,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -135370,12 +135357,12 @@ - + - + @@ -135386,125 +135373,125 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - + - + - + - + - + - - + + - + - + - + @@ -135513,29 +135500,29 @@ - - + + - + - + - - + + - + @@ -135543,7 +135530,7 @@ - + @@ -135551,211 +135538,211 @@ - + - + - + - + - + - - - + + + - - + + - + - + - + - + - - - + + + - + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - - - + + + + + + - - - + + + + + + + + - + + + - - - - - - - - + - - + + - + - - + + - - + + + + + + - + + + - - - - - - - - - + + + - - - + + + - - - + + + - - - + + + - + - - + + - + - + - - + + - + - + - + - + @@ -135769,19 +135756,19 @@ - + - + - + @@ -135791,57 +135778,57 @@ - + - + - - + + - + - + - + - + - + - - - + + + - + @@ -135849,16 +135836,16 @@ - + - + - + - + @@ -135870,13 +135857,13 @@ - - - - - + + + + + - + @@ -135885,12 +135872,12 @@ - + - + @@ -135903,7 +135890,7 @@ - + @@ -135913,7 +135900,7 @@ - + @@ -135932,7 +135919,7 @@ - + @@ -135941,15 +135928,15 @@ - + - + - + @@ -135957,22 +135944,22 @@ - + - + - + - + @@ -136004,13 +135991,13 @@ - + - + @@ -136024,25 +136011,25 @@ - - + + - + - + - + @@ -136050,7 +136037,7 @@ - + @@ -136058,7 +136045,7 @@ - + @@ -136090,7 +136077,7 @@ - + @@ -136098,15 +136085,15 @@ - + - - + + - + @@ -136116,15 +136103,15 @@ - + - + - + @@ -136144,7 +136131,7 @@ - + @@ -136158,23 +136145,23 @@ - - + + - + - + - + @@ -136185,13 +136172,13 @@ - + - + @@ -136215,38 +136202,38 @@ - - + + - + - + - + - + - + - + @@ -136254,15 +136241,15 @@ - + - + - + @@ -136270,13 +136257,13 @@ - + - + @@ -136284,19 +136271,19 @@ - + - + - + @@ -136305,9 +136292,9 @@ - + - + @@ -136320,13 +136307,13 @@ - + - + @@ -136334,19 +136321,19 @@ - + - + - + - + @@ -136356,20 +136343,20 @@ - + - + - + - + @@ -136378,7 +136365,7 @@ - + @@ -136395,14 +136382,14 @@ - - + + - + @@ -136411,34 +136398,34 @@ - + - + - - - + + + - + - + - + @@ -136446,7 +136433,7 @@ - + @@ -136494,7 +136481,7 @@ - + @@ -136538,27 +136525,27 @@ - + - + - - + + - + @@ -136572,8 +136559,8 @@ - - + + @@ -136581,7 +136568,7 @@ - + @@ -136592,7 +136579,7 @@ - + @@ -136604,19 +136591,19 @@ - + - + - + - - - - - + + + + + @@ -136629,26 +136616,26 @@ - + - - + + - - + + - + - + @@ -136678,18 +136665,18 @@ - + - + - + - + @@ -136737,7 +136724,7 @@ - + @@ -136747,18 +136734,18 @@ - + - + - + - + - + @@ -136766,91 +136753,91 @@ - - - - - - + + + + + + - + - + - + - + - - - + + + - - + + - - + + - + - + - - + + - - + + - - + + - + - + - + - + @@ -136865,7 +136852,7 @@ - + @@ -136874,15 +136861,15 @@ - + - + - + @@ -136897,7 +136884,7 @@ - + @@ -136906,27 +136893,27 @@ - + - + - + - + - + - + - + - + @@ -136940,139 +136927,139 @@ - + - + - + - - - - - - - - - - - + + + + + + + + + + + + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - + - + - + @@ -137081,40 +137068,40 @@ - + - + - + - + - + - - - + + + + - - + - + - + @@ -137130,233 +137117,233 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - - + + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + @@ -137386,7 +137373,7 @@ - + @@ -137395,12 +137382,12 @@ - + - + - + @@ -137409,25 +137396,25 @@ - + - + - + - + - + - + - + @@ -137442,179 +137429,179 @@ - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - + + + + + - + - + @@ -137631,10 +137618,10 @@ - + - + @@ -137661,19 +137648,19 @@ - + - + - + - + @@ -137688,7 +137675,7 @@ - + @@ -137697,13 +137684,13 @@ - + - + @@ -137718,9 +137705,9 @@ - + - + @@ -137735,7 +137722,7 @@ - + @@ -137762,13 +137749,13 @@ - + - + @@ -137789,7 +137776,7 @@ - + @@ -137827,7 +137814,7 @@ - + @@ -137844,21 +137831,21 @@ - + - + - + - + - + @@ -137873,7 +137860,7 @@ - + @@ -137882,39 +137869,39 @@ - + - + - + - + - + - + - + - - + + @@ -137922,52 +137909,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -137976,117 +137963,117 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - - + + + + + + + - - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - + @@ -138104,7 +138091,7 @@ - + @@ -138116,202 +138103,202 @@ - + - + - + - + - + - + - + - + - - + + - - - + + + - - - + + + + - + + + + + + + + + + - - + + + - - - - + + + - - + + + - - - - - - - - + + + + + - - + + + - - + + + - - - - - - + + - - - + + - - - - - - + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138319,20 +138306,20 @@ - - - - + + + + - + - - + + @@ -138346,18 +138333,18 @@ - + - + - + - + @@ -138385,145 +138372,145 @@ - - - - - + + + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + @@ -138549,18 +138536,18 @@ - + - + - + - + - + @@ -138578,10 +138565,10 @@ - + - + @@ -138589,10 +138576,10 @@ - + - + @@ -138603,10 +138590,10 @@ - + - + @@ -138615,82 +138602,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138698,56 +138685,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -138759,7 +138746,7 @@ - + @@ -138767,102 +138754,102 @@ - + - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - - + + - + - + + + + + - + + + - - - - - - - + - - + + + + + + + - - - - - - - + + - - + + - - + + - - + + @@ -138877,21 +138864,21 @@ - + - - + + - + - + @@ -138909,22 +138896,22 @@ - + - + - + - + - + - + @@ -138932,7 +138919,7 @@ - + @@ -138944,7 +138931,7 @@ - + @@ -138956,19 +138943,19 @@ - + - + - + - + @@ -138976,25 +138963,25 @@ - + - + - + - + - + @@ -139011,7 +138998,7 @@ - + @@ -139019,12 +139006,12 @@ - + - + @@ -139033,67 +139020,67 @@ - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -139102,65 +139089,65 @@ - + - + - + - + + + + + + + - - - + - + + - - - - - - + - - + + - - - + + + - - + + @@ -139169,29 +139156,29 @@ + + + + + + - - - + - - - - - + - + - + @@ -139220,7 +139207,7 @@ - + @@ -139232,16 +139219,16 @@ - + - + - + @@ -139261,18 +139248,18 @@ - + - + - + @@ -139281,7 +139268,7 @@ - + @@ -139298,13 +139285,13 @@ - - - - - - - + + + + + + + @@ -139314,78 +139301,78 @@ - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -139393,7 +139380,7 @@ - + @@ -139403,56 +139390,56 @@ - - + + - - + + - + - + - + - + - + - + - + - + @@ -139463,7 +139450,7 @@ - + @@ -139472,7 +139459,7 @@ - + @@ -139484,7 +139471,7 @@ - + @@ -139496,7 +139483,7 @@ - + @@ -139504,28 +139491,28 @@ - + - + - + - + - + - + - + - + @@ -139534,7 +139521,7 @@ - + @@ -139543,55 +139530,55 @@ - - - - - - + + + + + + - + - + - + - + - + - - + + - - + + - - + + - + - + @@ -139599,13 +139586,13 @@ - + - + @@ -139614,7 +139601,7 @@ - + @@ -139632,7 +139619,7 @@ - + @@ -139640,16 +139627,16 @@ - + - + - + - + @@ -139661,20 +139648,20 @@ - + - + - + - + @@ -139689,31 +139676,31 @@ - - + + + + - - + - - + - + - + - + @@ -139722,68 +139709,68 @@ - + - + - + - + - - + + - - + + - + - + - + - + - + + + + + + - - + + + + + + - - - - - - - - - - + @@ -139792,12 +139779,12 @@ - - + + - - + + @@ -139811,13 +139798,13 @@ - + - + @@ -139829,7 +139816,7 @@ - + @@ -139859,7 +139846,7 @@ - + @@ -139868,7 +139855,7 @@ - + @@ -139901,7 +139888,7 @@ - + @@ -139915,10 +139902,10 @@ - + - + @@ -139927,7 +139914,7 @@ - + @@ -139942,15 +139929,15 @@ - + - + - + - + @@ -139970,48 +139957,48 @@ - + - + - + - + - + - + - + - + - + - - + + + - - + + + - - - - - + + + + - - - - + + + @@ -140025,7 +140012,7 @@ - + @@ -140036,51 +140023,51 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -140088,8 +140075,8 @@ - - + + @@ -140097,95 +140084,95 @@ + + + + - + - + + - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -140207,64 +140194,64 @@ - + - + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + @@ -140273,34 +140260,34 @@ - + - - + + - + - + - + - + - + @@ -140309,19 +140296,19 @@ - + - + - - + + - + - + @@ -140333,31 +140320,31 @@ - + - + - + - - + + - + - + - + - + - + @@ -140368,7 +140355,7 @@ - + @@ -140379,7 +140366,7 @@ - + @@ -140396,119 +140383,119 @@ - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + @@ -140532,9 +140519,9 @@ - + - + @@ -140555,170 +140542,170 @@ - + - + - + - + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - + - + - - + + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - + - + - + - + - + - + - + - - + + - - + + - + - + - - - + + + - - + + - - + + + + + + + - - + - - - - - + @@ -140732,8 +140719,8 @@ - - + + @@ -140741,18 +140728,18 @@ - - + + - - - + + + - - + + @@ -140767,86 +140754,86 @@ - + - + - + - + - + - + - + - + - + - + - - - - + + + + - - + + - + - + - + - + - - + + - + - + - + - + @@ -140860,78 +140847,78 @@ - - + + - + - - + + - + - - + + - + - - + + - - + + - - + + - + - - + + - - - + + + - + - + - + - + @@ -140940,7 +140927,7 @@ - + @@ -140949,10 +140936,10 @@ - + - + @@ -140969,49 +140956,49 @@ - - - + + + - + - + - + - + - - + + - + - - + + - + - + @@ -141023,13 +141010,13 @@ - + - + @@ -141038,7 +141025,7 @@ - + @@ -141056,42 +141043,42 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -141108,10 +141095,10 @@ - + - + @@ -141128,89 +141115,89 @@ - + + - - - + + + - - - - - - - - + + + + + + + - + - + - - + + - - + + - - + + + + + + + - + - - - - - - + - - + + - - + + - - + + - - + + - + @@ -141227,12 +141214,12 @@ - + - + @@ -141247,7 +141234,7 @@ - + @@ -141262,10 +141249,10 @@ - + - + @@ -141295,7 +141282,7 @@ - + @@ -141312,30 +141299,30 @@ - + - + - + - + - + - + - + - + - + @@ -141347,16 +141334,16 @@ - + - + - + - + @@ -141398,68 +141385,68 @@ - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - + - + - + - + - + - + - + - + - + - + @@ -141467,88 +141454,88 @@ - + - + - + + + + + - + + + - - - - - - - + - - + + + + + + - + - - - - - + - - + + - + - + - + - + - + - + - - + + - + @@ -141569,10 +141556,10 @@ - + - + @@ -141584,7 +141571,7 @@ - + @@ -141596,12 +141583,12 @@ - + - + @@ -141610,21 +141597,21 @@ - + - + - + - + - + @@ -141645,19 +141632,19 @@ - + - + - + - + @@ -141666,16 +141653,16 @@ - + - + - + @@ -141687,7 +141674,7 @@ - + @@ -141699,9 +141686,9 @@ - + - + @@ -141716,7 +141703,7 @@ - + @@ -141724,68 +141711,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -141806,18 +141793,18 @@ - + - + - + @@ -141837,8 +141824,8 @@ - - + + @@ -141846,7 +141833,7 @@ - + @@ -141860,9 +141847,9 @@ - + - + @@ -141874,13 +141861,13 @@ - + - + - + @@ -141889,19 +141876,19 @@ - + - + - + - + @@ -141910,16 +141897,16 @@ - + - + - + @@ -141949,37 +141936,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -141994,13 +141981,13 @@ - + - + - + @@ -142018,62 +142005,62 @@ - + - + - + - - - - + + + + - + - + - + - + - + - + - + - - + + - + - + - + @@ -142114,12 +142101,12 @@ - + - + - + @@ -142128,10 +142115,10 @@ - + - + @@ -142142,14 +142129,14 @@ - + - - + + @@ -142163,230 +142150,230 @@ - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - + + + + + + - - + - + + - + + + - + + - - - - - - - - - - - - - - - - - + - - + + + + + + + + + + - - + + - - + + + + + + - - + + - + - - - - - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + - - - - + + + + - + - + - + - + - + @@ -142400,11 +142387,11 @@ - - - + + + - + @@ -142413,34 +142400,34 @@ - + - + - + - + - + - + - + @@ -142454,18 +142441,18 @@ - + - + - + - + @@ -142477,252 +142464,252 @@ - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - - - + + + - - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - - + + - - + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -142746,11 +142733,11 @@ - + - + @@ -142758,7 +142745,7 @@ - + @@ -142766,26 +142753,26 @@ - + - + - + - + - + @@ -142795,51 +142782,51 @@ - + - + - + - - + + - + - + - + - + - + @@ -142860,77 +142847,77 @@ - - - - + + + + - - + + - - - + + + - - - + + + - + - - + + - - + + - + - + - - + + - - + + - + - + - - + + - - + + - + - + @@ -142945,19 +142932,19 @@ - + - + - + - + @@ -142969,21 +142956,21 @@ - + - + - + - + - + - + @@ -142994,7 +142981,7 @@ - + @@ -143020,27 +143007,27 @@ - + - + - + - + - + - + @@ -143076,7 +143063,7 @@ - + @@ -143085,35 +143072,35 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -143133,7 +143120,7 @@ - + @@ -143148,7 +143135,7 @@ - + @@ -143162,178 +143149,178 @@ - + - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + + + + + - + + + - - - + - - - - - + - + - + - + - + @@ -143341,13 +143328,13 @@ - + - + @@ -143359,65 +143346,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -143429,15 +143416,15 @@ - + - + - + - + @@ -143464,23 +143451,23 @@ - + - + - + - + - + @@ -143488,7 +143475,7 @@ - + @@ -143523,59 +143510,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -143592,7 +143579,7 @@ - + @@ -143603,7 +143590,7 @@ - + @@ -143611,15 +143598,15 @@ - + - + - + @@ -143627,7 +143614,7 @@ - + @@ -143644,7 +143631,7 @@ - + @@ -143682,7 +143669,7 @@ - + @@ -143714,7 +143701,7 @@ - + @@ -143737,7 +143724,7 @@ - + @@ -143748,17 +143735,17 @@ - + - + - + @@ -143766,7 +143753,7 @@ - + @@ -143783,7 +143770,7 @@ - + @@ -143803,13 +143790,13 @@ - + - + - + @@ -143817,21 +143804,21 @@ - + - + - + - + @@ -143852,172 +143839,172 @@ - + - - - - + + + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + - + - + - + - - + + - + - - + + - - + + - - + + + + + + + - + - + - + - + - + - - - - - - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144050,7 +144037,7 @@ - + @@ -144065,13 +144052,13 @@ - + - + @@ -144083,47 +144070,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144144,24 +144131,24 @@ - + - + - + - + - + - + @@ -144185,27 +144172,27 @@ - + - + - + - + - + - + @@ -144213,21 +144200,21 @@ - + - + - + - + - + - + @@ -144236,15 +144223,15 @@ - + - + - + @@ -144256,10 +144243,10 @@ - + - + @@ -144279,113 +144266,113 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + + + + + - + + + - - - + - - - - - + - + @@ -144393,7 +144380,7 @@ - + @@ -144402,66 +144389,66 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144473,13 +144460,13 @@ - + - + - + @@ -144530,10 +144517,10 @@ - + - + @@ -144541,61 +144528,64 @@ + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -144603,7 +144593,7 @@ - + @@ -144635,6 +144625,9 @@ + + + @@ -144675,10 +144668,10 @@ - + - + @@ -144687,10 +144680,10 @@ - + - + @@ -144755,7 +144748,7 @@ - + @@ -144767,7 +144760,7 @@ - + @@ -144778,9 +144771,9 @@ - + - + @@ -144795,25 +144788,25 @@ - + - + - + - + - + - + - + @@ -144909,7 +144902,7 @@ - + @@ -144917,10 +144910,10 @@ - + - + @@ -144929,125 +144922,125 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + - - - - + + + + + - - - + + + - - + + - - + + - + - + - - - - + + + + - + - + - + - + - + - + - + - + - - - + + + - + - + @@ -145073,60 +145066,60 @@ - + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + @@ -145137,7 +145130,7 @@ - + @@ -145146,7 +145139,7 @@ - + @@ -145161,7 +145154,7 @@ - + @@ -145173,43 +145166,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -145224,13 +145217,13 @@ - + - + @@ -145239,31 +145232,31 @@ - + - + - + - + - + @@ -145293,13 +145286,13 @@ - + - + - + @@ -145314,14 +145307,14 @@ - + - + - + @@ -145333,35 +145326,35 @@ - + - + - + - + - + - + - + @@ -145375,7 +145368,7 @@ - + @@ -145393,7 +145386,7 @@ - + @@ -145402,7 +145395,7 @@ - + @@ -145414,10 +145407,10 @@ - + - + @@ -145426,81 +145419,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -145533,7 +145526,7 @@ - + @@ -145542,9 +145535,9 @@ - + - + @@ -145556,16 +145549,16 @@ - + - + - + @@ -145616,28 +145609,28 @@ - + - + - + - + - + - + @@ -145652,13 +145645,13 @@ - + - + @@ -145700,9 +145693,9 @@ - + - + @@ -145711,16 +145704,16 @@ - + - + - + @@ -145733,66 +145726,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -145800,19 +145793,19 @@ - + - + - + - + @@ -145823,7 +145816,7 @@ - + @@ -145831,18 +145824,18 @@ - + - + - + - + - + @@ -145853,7 +145846,7 @@ - + @@ -145864,13 +145857,13 @@ - + - + - + @@ -145878,10 +145871,10 @@ - + - + @@ -145911,26 +145904,26 @@ - + - + - + - + - + - + @@ -145941,21 +145934,21 @@ - + - + - + - + - + - + @@ -145963,7 +145956,7 @@ - + @@ -145971,15 +145964,15 @@ - + - + - + @@ -145990,37 +145983,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -146041,7 +146034,7 @@ - + @@ -146052,7 +146045,7 @@ - + @@ -146067,10 +146060,10 @@ - + - + @@ -146088,7 +146081,7 @@ - + @@ -146100,42 +146093,42 @@ - + - + - + - + - + - + - + - + - + - + @@ -146165,7 +146158,7 @@ - + @@ -146173,19 +146166,19 @@ - + - + - + @@ -146194,7 +146187,7 @@ - + @@ -146203,19 +146196,19 @@ - + - + - + - + - + @@ -146272,10 +146265,10 @@ - + - + @@ -146286,7 +146279,7 @@ - + @@ -146315,47 +146308,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146366,28 +146359,28 @@ - + - + - + - + - + - + @@ -146400,109 +146393,109 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146520,13 +146513,13 @@ - + - + @@ -146535,18 +146528,18 @@ - + - + - + - + @@ -146561,15 +146554,15 @@ - + - + - + @@ -146608,7 +146601,7 @@ - + @@ -146616,19 +146609,19 @@ - + - + - + - + @@ -146643,10 +146636,10 @@ - + - + @@ -146702,16 +146695,16 @@ - + - + - + @@ -146740,7 +146733,7 @@ - + @@ -146763,48 +146756,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146813,20 +146806,20 @@ - + - + - + - + @@ -146841,12 +146834,12 @@ - + - + - + @@ -146857,15 +146850,15 @@ - + - + - + - + @@ -146876,9 +146869,9 @@ - + - + @@ -146902,138 +146895,138 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + @@ -147044,15 +147037,15 @@ - - + + - + - + @@ -147061,20 +147054,20 @@ - + - - + + - - + + - + @@ -147083,65 +147076,65 @@ - + - + - + - + - - + + - - + + - - + + - + - - + + - - + + - + - - - + + + - - + + @@ -147150,12 +147143,12 @@ - + - + @@ -147175,21 +147168,21 @@ - + - + - - + + @@ -147197,8 +147190,8 @@ - - + + @@ -147212,353 +147205,353 @@ - + - + - - + + - + + + + + + + - - - + + + - + - + - - + + - - - + + - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + - - + - + + - - + + + - - - - - - - + - - + + + + + + + - + + + + - + - + - + - - - + + - + - - + + + - + - - - + + - + - - + - + - + + - + - - + - + - - - - - - - + - - - + + + - - - + + + + + + + + - - + + + - - - + - + + - + + - + + + - - + - + - - + - - - + + + + + - - - + + + - + - - + + - - - - - - - - - + + + + + - + + + - - - + + - - + - - - - - + + + + + + - - + + - - - - - - - - - + + + + - - + + + + + + - + + - - + + - - + - - - - - - + + - - + + @@ -147575,229 +147568,229 @@ - + - + - + - - + + + - - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + @@ -147811,7 +147804,7 @@ - + @@ -147828,7 +147821,7 @@ - + @@ -147854,7 +147847,7 @@ - + @@ -147863,7 +147856,7 @@ - + @@ -147872,68 +147865,68 @@ - + + - - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -147945,7 +147938,7 @@ - + @@ -147956,26 +147949,26 @@ - + - + - + - + @@ -147983,17 +147976,17 @@ - + - + - + @@ -148001,7 +147994,7 @@ - + @@ -148009,7 +148002,7 @@ - + @@ -148017,12 +148010,12 @@ - + - + @@ -148030,7 +148023,7 @@ - + @@ -148038,7 +148031,7 @@ - + @@ -148046,149 +148039,149 @@ - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -148196,196 +148189,196 @@ - + - + - + - + - + - + - + - - - - + + + + - - + + - + - + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - + @@ -148396,15 +148389,15 @@ - + - + - + @@ -148412,7 +148405,7 @@ - + @@ -148420,27 +148413,27 @@ - - + + - + - + - + - - + + @@ -148448,7 +148441,7 @@ - + @@ -148459,7 +148452,7 @@ - + @@ -148473,7 +148466,7 @@ - + @@ -148487,7 +148480,7 @@ - + @@ -148501,7 +148494,7 @@ - + @@ -148515,48 +148508,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -148565,27 +148558,27 @@ - + - + - + - + - + - + - + @@ -148602,47 +148595,47 @@ - + - + - + - + - + - + - + - - + + - + - - + + - + @@ -148660,51 +148653,51 @@ - - + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -148733,7 +148726,7 @@ - + @@ -148744,7 +148737,7 @@ - + @@ -148752,7 +148745,7 @@ - + @@ -148784,22 +148777,22 @@ - + - + - + - + @@ -148810,7 +148803,7 @@ - + @@ -148823,7 +148816,7 @@ - + @@ -148831,11 +148824,11 @@ - + - + @@ -148855,7 +148848,7 @@ - + @@ -148910,88 +148903,88 @@ - + - + - + - + - + - - + + - + - + - + - + - + - - - + + + - + - + - + - + - - + + - + - + @@ -148999,7 +148992,7 @@ - + @@ -149007,10 +149000,10 @@ - + - + @@ -149018,7 +149011,7 @@ - + @@ -149026,12 +149019,12 @@ - + - + - + @@ -149064,8 +149057,8 @@ - - + + @@ -149076,7 +149069,7 @@ - + @@ -149102,7 +149095,7 @@ - + @@ -149116,7 +149109,7 @@ - + @@ -149124,7 +149117,7 @@ - + @@ -149135,7 +149128,7 @@ - + @@ -149152,12 +149145,12 @@ - + - + - + @@ -149187,9 +149180,9 @@ - + - + @@ -149198,12 +149191,12 @@ - + - + @@ -149218,13 +149211,13 @@ - + - + - + @@ -149236,55 +149229,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -149299,16 +149292,16 @@ - + - + - + @@ -149320,28 +149313,28 @@ - + - + - + - + - + - + - + @@ -149358,15 +149351,15 @@ - + - + - + - + @@ -149378,7 +149371,7 @@ - + @@ -149404,7 +149397,7 @@ - + @@ -149416,10 +149409,10 @@ - + - + @@ -149433,7 +149426,7 @@ - + @@ -149444,7 +149437,7 @@ - + @@ -149458,7 +149451,7 @@ - + @@ -149469,10 +149462,10 @@ - + - + @@ -149483,7 +149476,7 @@ - + @@ -149506,24 +149499,24 @@ - + - + - + - + - + - + - + @@ -149534,7 +149527,7 @@ - + @@ -149548,7 +149541,7 @@ - + @@ -149562,25 +149555,25 @@ - + - + - + - + - + - + - + @@ -149591,7 +149584,7 @@ - + @@ -149602,16 +149595,16 @@ - + - + - + - + @@ -149628,37 +149621,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -149667,7 +149660,7 @@ - + @@ -149676,7 +149669,7 @@ - + @@ -149687,7 +149680,7 @@ - + @@ -149728,18 +149721,18 @@ - + - + - + - + - + @@ -149751,19 +149744,19 @@ - + - + - + - + @@ -149796,13 +149789,13 @@ - + - + - + @@ -149813,7 +149806,7 @@ - + @@ -149825,18 +149818,18 @@ - + - + - + - + - + @@ -149848,21 +149841,21 @@ - + - + - + - + @@ -149870,21 +149863,21 @@ - + - + - + - + - + @@ -149907,7 +149900,7 @@ - + @@ -149916,16 +149909,16 @@ - + - + - + - + @@ -149951,7 +149944,7 @@ - + @@ -149963,17 +149956,17 @@ - + - + - + - + - + @@ -149994,10 +149987,10 @@ - + - + @@ -150006,24 +149999,24 @@ - + - + - + - + - + @@ -150032,13 +150025,13 @@ - + - + @@ -150046,7 +150039,7 @@ - + @@ -150057,7 +150050,7 @@ - + @@ -150068,68 +150061,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + - - - - + + + + + + @@ -150221,7 +150214,7 @@ - + @@ -150306,25 +150299,25 @@ - - + + - + - + - + @@ -150586,101 +150579,101 @@ + + + + - + + - + + - - - - - - - + - - + + - - + + - + - + - + - + + + + + + - + - + - + + - - - - - - - - + + - - + + - - + + - - + + - + @@ -150688,7 +150681,7 @@ - + @@ -150696,7 +150689,7 @@ - + @@ -150704,7 +150697,7 @@ - + @@ -150714,19 +150707,19 @@ - + - + - + - + - + @@ -150740,13 +150733,13 @@ - + - + @@ -150770,7 +150763,7 @@ - + @@ -150778,15 +150771,7 @@ - - - - - - - - - + @@ -150794,23 +150779,23 @@ - + - + - + - + - + - + @@ -150826,10 +150811,10 @@ - + - + @@ -150837,7 +150822,7 @@ - + @@ -150857,32 +150842,32 @@ - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -150890,10 +150875,10 @@ - + - + @@ -150935,7 +150920,7 @@ - + @@ -150991,36 +150976,36 @@ - + - + - + - + - - + + - + - + @@ -151035,7 +151020,7 @@ - + @@ -151178,7 +151163,7 @@ - + @@ -151192,11 +151177,11 @@ - + - + @@ -151215,36 +151200,36 @@ - + - + - + - + - + - + - + @@ -151257,24 +151242,24 @@ - + - - + + - + - + @@ -151334,19 +151319,19 @@ - + - + - + @@ -151368,7 +151353,7 @@ - + @@ -151456,48 +151441,48 @@ - + - + - - + + - + - + - + - + - - + + - + @@ -151511,7 +151496,7 @@ - + @@ -151525,7 +151510,7 @@ - + @@ -151536,7 +151521,7 @@ - + @@ -151545,7 +151530,7 @@ - + @@ -151570,10 +151555,10 @@ - + - + @@ -151587,7 +151572,7 @@ - + @@ -151628,7 +151613,7 @@ - + @@ -151663,29 +151648,29 @@ - - + + - + - + - + - + - + @@ -151696,10 +151681,10 @@ - + - + @@ -151710,22 +151695,22 @@ - + - + - - - + + + - + - + @@ -151738,31 +151723,31 @@ - + - + - + - - + + - + + + - - - - + + @@ -151782,35 +151767,35 @@ - - + + - + - + - + - + - + - + - - + + @@ -151833,7 +151818,7 @@ - + @@ -151841,56 +151826,56 @@ - - + + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -151899,10 +151884,10 @@ + + - - - + @@ -151927,53 +151912,53 @@ - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + @@ -151992,60 +151977,60 @@ - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -152076,7 +152061,7 @@ - + @@ -152087,36 +152072,36 @@ - + - + - + - + - + - + - + - + - + @@ -152127,22 +152112,22 @@ - + - + - + - + @@ -152177,23 +152162,23 @@ - + - + - + - + - + - + @@ -152202,29 +152187,29 @@ - + - + - + - + - + - + - + - + @@ -152233,7 +152218,7 @@ - + @@ -152277,7 +152262,7 @@ - + @@ -152289,16 +152274,16 @@ - + - + - + @@ -152309,12 +152294,12 @@ - + - + - + @@ -152326,12 +152311,12 @@ - + - + - + @@ -152340,9 +152325,9 @@ - + - + @@ -152351,7 +152336,7 @@ - + @@ -152369,166 +152354,166 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -152537,52 +152522,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -152596,67 +152581,67 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -152664,9 +152649,9 @@ - + - + @@ -152675,7 +152660,7 @@ - + @@ -152683,19 +152668,19 @@ - + - + - + - + - + @@ -152710,64 +152695,64 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -152778,7 +152763,7 @@ - + @@ -152789,12 +152774,12 @@ - + - + @@ -152808,25 +152793,25 @@ - + - + - + - + - + - + @@ -152834,23 +152819,23 @@ - + - + - + - + - + - + - + @@ -152858,7 +152843,7 @@ - + @@ -152866,47 +152851,47 @@ - + - + - + + + - + - + - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + @@ -152920,28 +152905,28 @@ - + - + - + - + - + - + @@ -152951,20 +152936,20 @@ - + - + - + - - + + @@ -152977,27 +152962,27 @@ - + - - + + + + + + + - + - - - - - - - - + + + @@ -153006,12 +152991,12 @@ - - + + - + @@ -153022,13 +153007,13 @@ - + - + - + @@ -153037,7 +153022,7 @@ - + @@ -153079,15 +153064,15 @@ - + - + - + @@ -153132,7 +153117,7 @@ - + @@ -153143,7 +153128,7 @@ - + @@ -153154,7 +153139,7 @@ - + @@ -153162,7 +153147,7 @@ - + @@ -153179,10 +153164,10 @@ - + - + @@ -153194,7 +153179,7 @@ - + @@ -153203,7 +153188,7 @@ - + @@ -153218,10 +153203,10 @@ - + - + @@ -153232,13 +153217,13 @@ - + - + @@ -153246,7 +153231,7 @@ - + @@ -153254,7 +153239,7 @@ - + @@ -153265,13 +153250,13 @@ - + - + - + @@ -153280,7 +153265,7 @@ - + @@ -153288,24 +153273,24 @@ - + - + - + - + - + - + @@ -153342,13 +153327,13 @@ - + - - + + @@ -153357,16 +153342,16 @@ - + - + - + - - + + @@ -153383,8 +153368,8 @@ - - + + @@ -153395,28 +153380,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -153450,8 +153435,8 @@ - - + + @@ -153493,34 +153478,34 @@ - + - + - + - + - + - + - + @@ -153649,11 +153634,11 @@ - + - + @@ -153775,12 +153760,12 @@ - + - + @@ -153827,7 +153812,7 @@ - + @@ -153918,60 +153903,60 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -153982,11 +153967,11 @@ - + - + @@ -154006,17 +153991,17 @@ - + - + - + @@ -154074,7 +154059,7 @@ - + @@ -154203,7 +154188,7 @@ - + @@ -154269,71 +154254,71 @@ - + - + - + - + - + - - + + - + - + - + - - - + + + - + - + - + - + - + - + - + @@ -154342,29 +154327,29 @@ - + - + - + - + - + - + - + @@ -154394,8 +154379,8 @@ - - + + @@ -154403,13 +154388,13 @@ - + - + - + @@ -154421,28 +154406,28 @@ - + - + - + - + - + - + - + - + @@ -154453,9 +154438,9 @@ - + - + @@ -154467,7 +154452,7 @@ - + @@ -154476,7 +154461,7 @@ - + @@ -154487,9 +154472,9 @@ - + - + @@ -154501,7 +154486,7 @@ - + @@ -154509,7 +154494,7 @@ - + @@ -154517,7 +154502,7 @@ - + @@ -154534,12 +154519,12 @@ - + - + @@ -154553,22 +154538,22 @@ - + - + - - - - - - - - + + + + + + + + @@ -154580,8 +154565,8 @@ - - + + @@ -154608,14 +154593,14 @@ - + + - - + @@ -154629,45 +154614,45 @@ - - + + - - + + - + - - + + - + - - + + - + - + - + - + - + @@ -154764,12 +154749,12 @@ - + - + @@ -154777,29 +154762,29 @@ - - + + - + - + - + - + - + @@ -154820,15 +154805,15 @@ - + - + - + - + @@ -154836,7 +154821,7 @@ - + @@ -154844,15 +154829,15 @@ - + - + - + @@ -154860,10 +154845,10 @@ - - - - + + + + @@ -154900,7 +154885,7 @@ - + @@ -154919,26 +154904,26 @@ - + - + - + - + - + - + - + - + @@ -154958,7 +154943,7 @@ - + @@ -154966,7 +154951,7 @@ - + @@ -155091,7 +155076,7 @@ - + @@ -155163,16 +155148,16 @@ - + - - - + + + @@ -155180,16 +155165,16 @@ - + - + - + - + @@ -155198,7 +155183,7 @@ - + @@ -155218,16 +155203,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -155258,15 +155243,15 @@ - + - - + + @@ -155280,27 +155265,27 @@ - + - + - + - + - + - + @@ -155360,7 +155345,7 @@ - + @@ -155398,45 +155383,45 @@ - + - + - + - + + + + + + + - - - - - - - + - + @@ -155473,7 +155458,7 @@ - + @@ -155481,15 +155466,15 @@ - + - - + + - + @@ -155503,7 +155488,7 @@ - + @@ -155523,34 +155508,34 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -155558,8 +155543,8 @@ - - + + @@ -155576,25 +155561,25 @@ - + - + + + - - - - - - - - + + + + + + - - + + @@ -155608,8 +155593,8 @@ - - + + @@ -155618,7 +155603,7 @@ - + @@ -155627,14 +155612,14 @@ - + - + @@ -155642,7 +155627,7 @@ - + @@ -155650,16 +155635,16 @@ - + - + - + - + @@ -155669,29 +155654,29 @@ - + - + - + - + - + + + - - - - + + - + @@ -155713,19 +155698,19 @@ - + - + - + - + @@ -155733,23 +155718,23 @@ - + - + - - + + - + @@ -155757,7 +155742,7 @@ - + @@ -155766,7 +155751,7 @@ - + @@ -155786,7 +155771,7 @@ - + @@ -155794,20 +155779,20 @@ - + - + - + @@ -155845,7 +155830,7 @@ - + @@ -155858,7 +155843,7 @@ - + @@ -155869,26 +155854,26 @@ - - - - + + + + - - + + - - + + - + @@ -155896,7 +155881,7 @@ - + @@ -155904,13 +155889,13 @@ - + - + @@ -155918,7 +155903,7 @@ - + @@ -155926,38 +155911,38 @@ - - + + - + - + - + - + - + - + - - + + @@ -155970,68 +155955,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -156039,39 +156024,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -156079,57 +156064,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -156143,25 +156128,25 @@ - + - + - + - + - + - + - + - + @@ -156170,7 +156155,7 @@ - + @@ -156193,12 +156178,12 @@ - + - + - + @@ -156210,7 +156195,7 @@ - + @@ -156222,165 +156207,165 @@ - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -156388,28 +156373,28 @@ - + - + - + - + - + - + - + @@ -156419,7 +156404,7 @@ - + @@ -156430,55 +156415,55 @@ - + - + - + - + - - + + - + - + - + - + - + - + @@ -156489,40 +156474,40 @@ - + - + - + - + - + - + - + - + - + - + + + - - @@ -156541,7 +156526,7 @@ - + @@ -156552,7 +156537,7 @@ - + @@ -156590,87 +156575,87 @@ - + - + - - + + - + - - - + + + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + @@ -156692,11 +156677,11 @@ - + - + @@ -156710,10 +156695,10 @@ - + - + @@ -156725,7 +156710,7 @@ - + @@ -156734,7 +156719,7 @@ - + @@ -156742,27 +156727,27 @@ - + - + - - + + - + - + - + @@ -156773,8 +156758,8 @@ - - + + @@ -156787,7 +156772,7 @@ - + @@ -156826,118 +156811,118 @@ - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - - + + - - + + - + - - + + @@ -156946,46 +156931,46 @@ - - + + - + - + - + - - - + + + - + - + - - + + - + @@ -157002,7 +156987,7 @@ - + @@ -157022,7 +157007,7 @@ - + @@ -157030,10 +157015,10 @@ - + - + @@ -157041,7 +157026,7 @@ - + @@ -157049,11 +157034,11 @@ - - - - - + + + + + @@ -157102,39 +157087,39 @@ - - + + - + - + - + - + - + - + - + - + @@ -157145,7 +157130,7 @@ - + @@ -157159,7 +157144,7 @@ - + @@ -157167,13 +157152,13 @@ - - - - - - - + + + + + + + @@ -157184,10 +157169,10 @@ - + - + @@ -157208,7 +157193,7 @@ - + @@ -157217,7 +157202,7 @@ - + @@ -157226,46 +157211,46 @@ - + - + - + - + - + - + - + - - + + - - + + @@ -157282,7 +157267,7 @@ - + @@ -157290,7 +157275,7 @@ - + @@ -157298,12 +157283,12 @@ - + - + - + @@ -157312,8 +157297,8 @@ - - + + @@ -157321,7 +157306,7 @@ - + @@ -157333,9 +157318,9 @@ - + - + @@ -157344,7 +157329,7 @@ - + @@ -157359,7 +157344,7 @@ - + @@ -157386,13 +157371,13 @@ - + - + @@ -157400,7 +157385,7 @@ - + @@ -157409,37 +157394,37 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -157464,8 +157449,8 @@ - - + + @@ -157476,7 +157461,7 @@ - + @@ -157490,7 +157475,7 @@ - + @@ -157501,41 +157486,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -157568,15 +157553,15 @@ - + - + - - + + @@ -157584,7 +157569,7 @@ - + @@ -157599,7 +157584,7 @@ - + @@ -157607,25 +157592,25 @@ - + - - + + - + - + @@ -157684,24 +157669,24 @@ - + - - + + - + - + - + @@ -157709,60 +157694,60 @@ - + - + - + - + - + - + - + - + - + - - - + + + - - - - + + + + - - + + - - + + - - + + @@ -157771,103 +157756,103 @@ - + - + - + - - - + + + - + - + - + - + - + - - + + - + - - + + - - + + - + - + - + - - + + - - + + - - + + - + - + @@ -157890,7 +157875,7 @@ - + @@ -157898,16 +157883,16 @@ - + - + - + - + @@ -157916,9 +157901,9 @@ - + - + @@ -157936,7 +157921,7 @@ - + @@ -157944,7 +157929,7 @@ - + @@ -157952,15 +157937,15 @@ - + - + - + - + @@ -157968,69 +157953,69 @@ - - - - - - - - + + + + + + + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - - + + - + @@ -158038,7 +158023,7 @@ - + @@ -158053,19 +158038,19 @@ - + - + - + - + @@ -158073,7 +158058,7 @@ - + @@ -158084,9 +158069,9 @@ - + - + @@ -158107,7 +158092,7 @@ - + @@ -158121,16 +158106,16 @@ - + - + - + - + @@ -158150,31 +158135,31 @@ - + + + - - - - - - - - - - - + + + + + + + + + - + - + - + - + @@ -158217,7 +158202,7 @@ - + @@ -158240,7 +158225,7 @@ - + @@ -158260,19 +158245,19 @@ - + - + - + @@ -158292,30 +158277,30 @@ - + - + - + - + - + @@ -158341,25 +158326,25 @@ - + - + - + - + - + - + @@ -158374,9 +158359,9 @@ - + - + @@ -158400,7 +158385,7 @@ - + @@ -158411,7 +158396,7 @@ - + @@ -158429,7 +158414,7 @@ - + @@ -158440,7 +158425,7 @@ - + @@ -158448,23 +158433,23 @@ - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -158472,28 +158457,28 @@ - + - + - + - + - + @@ -158501,37 +158486,37 @@ - + - + + + + + + + + + + + + - + - - - - - - - - - - - - + - - + + - - + + @@ -158542,18 +158527,18 @@ - + - + - + - + @@ -158567,33 +158552,33 @@ - + - + - + - + - + - + - + - + - + @@ -158604,31 +158589,31 @@ - + - + - + - + - + - + - + - + - + - + @@ -158637,7 +158622,7 @@ - + @@ -158646,85 +158631,85 @@ - - - - + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - + - - + + - + - + - + - - + + @@ -158734,171 +158719,171 @@ - + - + + + + + + + + + + + + + - - - - - - - - - - - - - + - - - + + + - - + + - + - + + + + + + + + + - - - - - - - - - - + + - - + + - - + + + + + + + + + + + + + - - - - - - - + - - - - - - + - - + + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + @@ -158906,7 +158891,7 @@ - + @@ -158916,79 +158901,79 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -159004,11 +158989,11 @@ - + - + @@ -159017,24 +159002,24 @@ - + - + - + - + @@ -159043,10 +159028,10 @@ - + - + @@ -159055,29 +159040,29 @@ - + - + - - - + + + - + - + - + @@ -159085,7 +159070,7 @@ - + @@ -159093,7 +159078,7 @@ - + @@ -159101,20 +159086,20 @@ - + - + - + @@ -159123,20 +159108,20 @@ - + - + - + @@ -159144,7 +159129,7 @@ - + @@ -159153,11 +159138,11 @@ - + - + @@ -159165,7 +159150,7 @@ - + @@ -159176,50 +159161,50 @@ - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + @@ -159229,11 +159214,11 @@ - + - + @@ -159264,66 +159249,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + - + - + - - + + @@ -159333,40 +159318,40 @@ - + - + - - + + - + - + - + - + - - - + + + - + @@ -159374,25 +159359,25 @@ - - + + - - - + + + - + - + - - + + @@ -159400,28 +159385,28 @@ - + - - + + - - + + - + - + @@ -159430,14 +159415,14 @@ - + - + @@ -159451,16 +159436,16 @@ - - + + - + - + @@ -159469,39 +159454,39 @@ - + - + - + - + - + - + - + - + - + - + @@ -159513,66 +159498,66 @@ - - - - - - - - - - + + + + + + + + + + - - + + - + - + - + + + + + + + + + + + - - + + + - - - - - - - - - - - - - + + - + - + - + @@ -159583,131 +159568,131 @@ - + + + - + - - - + - + - + - - - + + + - - - + + + - + - + - - + + - + - - - - - - + + + + + + - + - + - + - + - + + + + + + - + + + - - - - - - - - + - - + + - + - + - + - + @@ -159715,10 +159700,10 @@ - + - + @@ -159729,25 +159714,25 @@ - - - + + + - + - + - + @@ -159757,89 +159742,89 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + @@ -159848,8 +159833,8 @@ - - + + @@ -159861,20 +159846,20 @@ - + - + - - + + @@ -159884,20 +159869,20 @@ - + - + - + - + @@ -159906,12 +159891,12 @@ - + - + - + @@ -159920,58 +159905,58 @@ - - + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + @@ -159979,13 +159964,13 @@ - + - + @@ -160011,80 +159996,80 @@ - - - + + + - + - - - + + + - + - + - + - - - + + + - - + + - + - - + + - + - + - + - + - + - - + + - + - + - + @@ -160094,16 +160079,16 @@ - + - + - + - - + + @@ -160111,8 +160096,8 @@ - - + + @@ -160120,16 +160105,16 @@ - - + + - + - + - + @@ -160139,16 +160124,16 @@ - + - + - + - - + + @@ -160156,8 +160141,8 @@ - - + + @@ -160165,133 +160150,133 @@ - - - + + + + - - - - - - - - - - - + + + + + + + + + + - + - - - + + + + + + + + + + + + + - - + + - - + + + + - - + + - - + + - + - - + + - + - + - + + + - - + + - + - + - - - + - - - + - + + - - + - - - - - - - - - - - - + + - + - - + + - + - + @@ -160299,48 +160284,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -160360,13 +160345,13 @@ - + - + - + @@ -160389,13 +160374,13 @@ - + - + - + @@ -160406,7 +160391,7 @@ - + @@ -160417,7 +160402,7 @@ - + @@ -160449,13 +160434,13 @@ - + - + - + @@ -160484,7 +160469,7 @@ - + @@ -160504,16 +160489,16 @@ - + - + - + - + @@ -160536,7 +160521,7 @@ - + @@ -160556,7 +160541,7 @@ - + @@ -160564,7 +160549,7 @@ - + @@ -160581,10 +160566,10 @@ - + - + @@ -160610,7 +160595,7 @@ - + @@ -160624,54 +160609,54 @@ - - - - - - - - - + + + + + + + + + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + @@ -160679,34 +160664,34 @@ - + - + - + - + - + - + - + - - - + + + @@ -160714,23 +160699,23 @@ - - + + - - - + + + - + - - + + @@ -160738,52 +160723,52 @@ - + - - + + - + - + - - + + - + - + - - + + @@ -160794,8 +160779,8 @@ - - + + @@ -160804,25 +160789,25 @@ - - + + - + - + - + - + @@ -160833,23 +160818,23 @@ - + - + - - + + - + - + @@ -160858,13 +160843,13 @@ - + - + @@ -160876,16 +160861,16 @@ - + - + - + @@ -160900,7 +160885,7 @@ - + @@ -160911,63 +160896,63 @@ - - + + - + - - - + + + - + - + - + - - + + - + - + - + - + - + - + @@ -160978,7 +160963,7 @@ - + @@ -160987,30 +160972,30 @@ - + - + - + - + - + - + - + @@ -161043,10 +161028,10 @@ - + - + @@ -161056,10 +161041,10 @@ - + - + @@ -161071,32 +161056,32 @@ - + - + - + - + - + - + - + - + - + @@ -161129,7 +161114,7 @@ - + @@ -161140,7 +161125,7 @@ - + @@ -161149,117 +161134,117 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -161267,10 +161252,10 @@ - + - + @@ -161278,7 +161263,7 @@ - + @@ -161286,58 +161271,58 @@ - + + + - + - - - - - + + + + + - + - + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - + + + + + + + + + + - + - + - + @@ -161346,38 +161331,38 @@ - + - + - + - + - + - + - + - + @@ -161385,19 +161370,19 @@ - + - + - - + + - + @@ -161408,13 +161393,13 @@ - - + + - - + + @@ -161431,17 +161416,17 @@ - + - + - + @@ -161451,17 +161436,17 @@ - + - + - + @@ -161485,7 +161470,7 @@ - + @@ -161493,43 +161478,43 @@ - + - + - + - + - + - + - + - + @@ -161538,29 +161523,29 @@ - + - + - + - + - + - - - + + + @@ -161568,65 +161553,65 @@ - - - + + + - + - + - - + + - + + + + + + + + + - - - - - - - - - + - + - + - - + + - - + + - + - - - - + + + + @@ -161634,7 +161619,7 @@ - + @@ -161654,9 +161639,9 @@ - + - + @@ -161677,12 +161662,12 @@ - + - - + + @@ -161694,21 +161679,21 @@ - + - + - + - + - + @@ -161720,7 +161705,7 @@ - + @@ -161729,17 +161714,17 @@ - + - + - + - + @@ -161748,7 +161733,7 @@ - + @@ -161756,38 +161741,38 @@ - + - + - + - - - + + + - + - + - + - + @@ -161797,15 +161782,15 @@ + + + + - - - - - + @@ -161816,7 +161801,7 @@ - + @@ -161828,43 +161813,43 @@ - + - + - - - - - - - - + + + + + + + + - + - + - + - + - + @@ -161885,7 +161870,7 @@ - + @@ -161935,17 +161920,17 @@ - + - + - + - + @@ -161956,20 +161941,20 @@ - + - + - + - + @@ -161978,7 +161963,7 @@ - + @@ -162004,11 +161989,11 @@ - - - + + + - + @@ -162022,7 +162007,7 @@ - + @@ -162034,14 +162019,14 @@ - + - + - + @@ -162050,12 +162035,12 @@ - + - + @@ -162132,10 +162117,10 @@ - + - - + + @@ -162151,9 +162136,9 @@ - - - + + + @@ -162196,7 +162181,7 @@ - + @@ -162237,10 +162222,10 @@ - + - + @@ -162278,14 +162263,14 @@ - - + + - + - + @@ -162294,14 +162279,14 @@ - + - + - + @@ -162359,41 +162344,41 @@ - - + + - + - + - + - + - + - - + + @@ -162411,14 +162396,14 @@ - + - + @@ -162454,7 +162439,7 @@ - + @@ -162621,7 +162606,7 @@ - + @@ -162632,7 +162617,7 @@ - + @@ -162727,87 +162712,79 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + - - + + - - - + + + - + - - - - - - - - - + @@ -162854,9 +162831,9 @@ - + - + @@ -162865,42 +162842,42 @@ - + - + - + - + - + - + - + - - - - - - - - - - + + + + + + + + + + @@ -162919,11 +162896,11 @@ - + - + - + @@ -162937,51 +162914,51 @@ - + - + - + - + - + - + - - + + - + - + - - - + + + - - + + - + - - + + @@ -162995,7 +162972,7 @@ - + @@ -163020,9 +162997,9 @@ - - - + + + @@ -163036,13 +163013,13 @@ - + - + @@ -163052,24 +163029,24 @@ - + - + - + - + - + @@ -163093,18 +163070,18 @@ - + - + + + + - - - - + @@ -163142,9 +163119,9 @@ - + - + @@ -163188,49 +163165,49 @@ - + - + - + - + - + - + - + - - - - + + + + - + - - + + @@ -163243,26 +163220,26 @@ - + - + - + - + - + @@ -163275,34 +163252,34 @@ - - + + - + - + - + - + - + - + - + @@ -163395,7 +163372,7 @@ - + @@ -163407,7 +163384,7 @@ - + @@ -163500,7 +163477,7 @@ - + @@ -163533,7 +163510,7 @@ - + @@ -163623,13 +163600,13 @@ - + - + - + @@ -163680,36 +163657,36 @@ - + - + - + - + - + - + - + - + - + @@ -163727,25 +163704,25 @@ - + - + - + - + - + @@ -163775,24 +163752,24 @@ - + - + - + - + - + @@ -163810,7 +163787,7 @@ - + @@ -163873,21 +163850,21 @@ - + - + - + - + - + @@ -163917,7 +163894,7 @@ - + @@ -163968,16 +163945,16 @@ - + - + - + - + @@ -163986,10 +163963,10 @@ - + - + @@ -163997,7 +163974,7 @@ - + @@ -164044,7 +164021,7 @@ - + @@ -164055,19 +164032,19 @@ - + - + - + @@ -164075,10 +164052,10 @@ - + - + @@ -164086,23 +164063,23 @@ - + - + - + - + - + - + @@ -164114,7 +164091,7 @@ - + @@ -164126,7 +164103,7 @@ - + @@ -164138,7 +164115,7 @@ - + @@ -164152,22 +164129,22 @@ - + - + - + - + - + @@ -164175,7 +164152,7 @@ - + @@ -164189,9 +164166,9 @@ - + - + @@ -164200,15 +164177,15 @@ - + - + - + @@ -164216,7 +164193,7 @@ - + @@ -164249,7 +164226,7 @@ - + @@ -164266,21 +164243,21 @@ - + - + - + - + - + - + @@ -164295,7 +164272,7 @@ - + @@ -164303,16 +164280,16 @@ - + - + - + @@ -164321,7 +164298,7 @@ - + @@ -164350,7 +164327,7 @@ - + @@ -164367,7 +164344,7 @@ - + @@ -164393,12 +164370,12 @@ - + - + - + @@ -164406,7 +164383,7 @@ - + @@ -164414,7 +164391,7 @@ - + @@ -164425,7 +164402,7 @@ - + @@ -164436,7 +164413,7 @@ - + @@ -164444,9 +164421,9 @@ - + - + @@ -164458,35 +164435,35 @@ - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + @@ -164501,12 +164478,12 @@ - + - + @@ -164525,26 +164502,26 @@ - + - + - + - + - + @@ -164552,9 +164529,9 @@ - + - + @@ -164575,13 +164552,13 @@ - + - + - + @@ -164721,7 +164698,7 @@ - + @@ -164844,7 +164821,7 @@ - + @@ -164862,7 +164839,7 @@ - + @@ -164873,12 +164850,12 @@ - + - - - + + + @@ -164893,17 +164870,17 @@ - - + + - + - + @@ -164940,11 +164917,11 @@ - + - + @@ -164952,10 +164929,10 @@ - - - - + + + + @@ -164964,7 +164941,7 @@ - + @@ -164976,13 +164953,13 @@ - + - + @@ -164992,7 +164969,7 @@ - + @@ -165016,7 +164993,7 @@ - + @@ -165024,7 +165001,7 @@ - + @@ -165044,7 +165021,7 @@ - + @@ -165138,11 +165115,11 @@ - + - + @@ -165193,9 +165170,9 @@ - + - + @@ -165213,46 +165190,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -165262,12 +165239,12 @@ - + - + @@ -165296,11 +165273,11 @@ - + - + @@ -165333,36 +165310,36 @@ - + - + - + - + - + - + - + - + - - - + + + - + @@ -165371,16 +165348,16 @@ - + - + - + @@ -165388,14 +165365,14 @@ - + - + @@ -165415,10 +165392,10 @@ - + - + @@ -165427,19 +165404,19 @@ - - - + + + - - + + - + @@ -165447,8 +165424,8 @@ - - + + @@ -165458,7 +165435,7 @@ - + @@ -165472,7 +165449,7 @@ - + @@ -165510,33 +165487,33 @@ - + - + - + - + - + - + - + - + + + + - - - - + @@ -165623,33 +165600,33 @@ - + - + - + - + - + - + @@ -165660,26 +165637,26 @@ - + - + - + - + - + - + - + @@ -165693,18 +165670,18 @@ - + - + - + - + - + @@ -165736,31 +165713,31 @@ - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - + @@ -165780,9 +165757,9 @@ - + - + @@ -165800,31 +165777,31 @@ - + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + @@ -165834,7 +165811,7 @@ - + @@ -165847,7 +165824,7 @@ - + @@ -165912,7 +165889,7 @@ - + @@ -165921,7 +165898,7 @@ - + @@ -165938,12 +165915,12 @@ - - - + + + - - + + @@ -165954,29 +165931,29 @@ - + - + - + - - + + - - + + - + - + @@ -166015,10 +165992,10 @@ - + - + @@ -166030,10 +166007,10 @@ - + - + @@ -166042,7 +166019,7 @@ - + @@ -166054,7 +166031,7 @@ - + @@ -166077,9 +166054,9 @@ - + - + @@ -166091,24 +166068,24 @@ - + - + - + - + @@ -166125,52 +166102,52 @@ - + - + - + - - - - - - - - + + + + + + + + - + - + - + - - + + - + - + - - + + @@ -166183,13 +166160,13 @@ - + - + @@ -166220,27 +166197,27 @@ - + - + - + - + @@ -166260,61 +166237,61 @@ - + - - + + - + - + - - - - + + + + - + - + - + - + - + - + - + @@ -166325,7 +166302,7 @@ - + @@ -166349,15 +166326,15 @@ - + - + - + @@ -166365,48 +166342,48 @@ - + - + - + - + - + - - - - - - + + + + + + - + - + - - - - + + + + - - + + - + @@ -166432,7 +166409,7 @@ - + @@ -166456,15 +166433,15 @@ - + - + - + @@ -166472,9 +166449,9 @@ - + - + @@ -166504,7 +166481,7 @@ - + @@ -166515,18 +166492,18 @@ - - + + - + - + - + - + @@ -166536,28 +166513,28 @@ - + - + - + - + - + - + @@ -166571,7 +166548,7 @@ - + @@ -166584,25 +166561,6 @@ - - - - - - - - - - - - - - - - - - - @@ -166611,12 +166569,12 @@ - + - + @@ -166629,12 +166587,12 @@ - - - - + + + + - + @@ -166647,21 +166605,21 @@ - + - + - + - + @@ -166678,11 +166636,11 @@ - + - + @@ -166696,24 +166654,24 @@ - + - + - + - + - + - + @@ -166728,24 +166686,24 @@ - + - + - + - + - + - + @@ -166754,10 +166712,10 @@ - + - + @@ -166769,40 +166727,40 @@ - - - + + + - + - + - - - - + + + + - + - + - + @@ -166825,15 +166783,15 @@ - + - + - + - + @@ -166845,24 +166803,24 @@ - + - + - + - + - + - + @@ -166871,10 +166829,10 @@ - + - + @@ -166901,10 +166859,10 @@ - + - + @@ -166913,7 +166871,7 @@ - + @@ -166921,35 +166879,35 @@ - - + + - + - + - - - - + + + + - + - + @@ -166963,7 +166921,7 @@ - + @@ -166981,7 +166939,7 @@ - + @@ -167001,15 +166959,15 @@ - + - + - + @@ -167026,27 +166984,27 @@ - + - + - + - + - + - + - + - + @@ -167055,27 +167013,27 @@ - - - - - - - - - - - - + + + + + + + + + + + + - + - + @@ -167083,9 +167041,9 @@ - + - + @@ -167097,14 +167055,14 @@ - + - + @@ -167116,50 +167074,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -167171,28 +167129,28 @@ - + - + - + - + - + - - + + @@ -167201,19 +167159,19 @@ - + - + - + @@ -167222,7 +167180,7 @@ - + @@ -167248,9 +167206,9 @@ - + - + @@ -167259,26 +167217,26 @@ - + - + - + - + - + - + - + @@ -167317,25 +167275,25 @@ - + - + - + - + - + - + - + @@ -167344,13 +167302,13 @@ - + - + - + @@ -167358,23 +167316,23 @@ - - - - - - - - - - - - + + + - - - - + + + + + + + + + + + + + @@ -167386,8 +167344,8 @@ - - + + @@ -167403,7 +167361,7 @@ - + @@ -167422,8 +167380,8 @@ - - + + @@ -167453,18 +167411,18 @@ - - + + - + - + @@ -167476,8 +167434,8 @@ - - + + @@ -167485,16 +167443,16 @@ - - + + - - + + @@ -167516,16 +167474,16 @@ - + - + - + @@ -167537,51 +167495,51 @@ - + - + - - + + - + - - + + - - + + - + - + - + - + - + - + @@ -167596,7 +167554,7 @@ - + @@ -167613,7 +167571,7 @@ - + @@ -167624,47 +167582,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -167685,12 +167643,12 @@ - + - + - + @@ -167699,7 +167657,7 @@ - + @@ -167707,28 +167665,28 @@ - + - + - + - + - + - + - + - + @@ -167737,91 +167695,91 @@ - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - - + + - + - + - + @@ -167832,7 +167790,7 @@ - + @@ -167845,12 +167803,12 @@ - + - - + + @@ -167858,38 +167816,38 @@ - - + + - + - + - + - + - + - + - + @@ -167897,39 +167855,39 @@ - + - + - - + + - + - + - - + + - + - + @@ -167938,38 +167896,38 @@ - + - - + + - + - + - + - + - - + + @@ -167983,8 +167941,8 @@ - - + + @@ -167995,60 +167953,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -168066,62 +168024,62 @@ - + - - + + - + - - + + - + - - + + - + - + - - - + + + - - + + - - - + + + - - - + + + - - + + - + @@ -168131,23 +168089,23 @@ - + - + - + - + - + @@ -168155,15 +168113,15 @@ - + - + - + - + @@ -168175,7 +168133,7 @@ - + @@ -168183,27 +168141,27 @@ - - - - + + + + - + - + - + - - + + @@ -168223,7 +168181,7 @@ - + @@ -168249,17 +168207,17 @@ - + - + - + @@ -168273,27 +168231,27 @@ - + - + - + - + - + - + - + - + @@ -168301,7 +168259,7 @@ - + @@ -168309,7 +168267,7 @@ - + @@ -168320,12 +168278,12 @@ - + - + @@ -168342,47 +168300,47 @@ - + - + - + - + - + - + - + - + - + - + @@ -168396,31 +168354,31 @@ - + - + - + - + - + - + @@ -168443,12 +168401,12 @@ - + - + @@ -168458,8 +168416,8 @@ - - + + @@ -168490,11 +168448,11 @@ - + - + @@ -168504,14 +168462,14 @@ - + - + - + @@ -168529,7 +168487,7 @@ - + @@ -168555,7 +168513,7 @@ - + @@ -168587,9 +168545,9 @@ - + - + @@ -168601,23 +168559,23 @@ - + - - - - - + + + + + - + - + @@ -168628,12 +168586,12 @@ - + - + @@ -168645,44 +168603,44 @@ - + - + - - + + - - + + - - + + - + - - - + + + @@ -168694,7 +168652,7 @@ - + @@ -168714,21 +168672,21 @@ - + - + - + - + @@ -168736,22 +168694,22 @@ - + - + - - - + + + @@ -168761,8 +168719,8 @@ - - + + @@ -168773,37 +168731,37 @@ - + - + - - + + - + - + - + - + - + @@ -168811,14 +168769,14 @@ - + - + @@ -168859,12 +168817,12 @@ - + - + @@ -168912,7 +168870,7 @@ - + @@ -168920,12 +168878,31 @@ + + + + + + + + + + + + + + + + + + + - + - + @@ -168941,9 +168918,9 @@ - + - + @@ -168953,7 +168930,7 @@ - + @@ -168961,25 +168938,25 @@ - - + + - - + + - + - + @@ -169002,23 +168979,23 @@ - + - + - + - + @@ -169026,29 +169003,29 @@ - - + + - + - - + + - - - + + + - - - - + + + + @@ -169091,18 +169068,18 @@ - - + + - + - + @@ -169110,24 +169087,24 @@ - + - + - - - - + + + + - - + + @@ -169149,18 +169126,18 @@ - - + + - + - + @@ -169169,59 +169146,59 @@ - - + + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + @@ -169235,20 +169212,20 @@ - - + + - + - + - + @@ -169256,7 +169233,7 @@ - + @@ -169265,12 +169242,12 @@ - + - + @@ -169279,15 +169256,15 @@ - + - + - + - + @@ -169299,48 +169276,48 @@ - + - + - + - + - + - + - + - + - + - + @@ -169354,24 +169331,24 @@ - + - + - + - + - + - + @@ -169386,13 +169363,13 @@ - + - + @@ -169412,10 +169389,10 @@ - + - + @@ -169430,30 +169407,30 @@ - - + + - + - + - - - - + + + + - + @@ -169482,17 +169459,17 @@ - - - + + + - - + + @@ -169501,17 +169478,17 @@ - - - - + + + + - + - + @@ -169521,22 +169498,22 @@ - + - + - + - + @@ -169555,7 +169532,7 @@ - + @@ -169616,40 +169593,40 @@ - + - - - + + + - - - + + + - + - - + + - - - + + + - + @@ -169665,18 +169642,18 @@ - + - + - - + + @@ -169685,92 +169662,92 @@ - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + - + @@ -169800,92 +169777,92 @@ - + - + - - - + + + - + - + - + - - + + - + - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + @@ -169902,7 +169879,7 @@ - + @@ -169922,37 +169899,37 @@ - - + + - + - + - - + + - - + + - + - + @@ -169962,12 +169939,12 @@ - + - + @@ -169979,13 +169956,13 @@ - - + + - + @@ -170006,11 +169983,11 @@ - + - + @@ -170021,34 +169998,34 @@ - + - - - - - + + + + + - + - + - + - + @@ -170057,9 +170034,9 @@ - - - + + + @@ -170070,10 +170047,10 @@ - - - - + + + + @@ -170083,10 +170060,10 @@ - - - - + + + + @@ -170103,8 +170080,8 @@ - - + + @@ -170112,8 +170089,8 @@ - - + + @@ -170124,9 +170101,9 @@ - + - + @@ -170148,14 +170125,14 @@ - + - - - + + + @@ -170171,9 +170148,9 @@ - + - + @@ -170185,7 +170162,7 @@ - + @@ -170203,16 +170180,16 @@ - + - + - + - + @@ -170239,16 +170216,16 @@ - + - + - + @@ -170269,7 +170246,7 @@ - + @@ -170298,10 +170275,10 @@ - + - + @@ -170340,10 +170317,10 @@ - + - + @@ -170397,25 +170374,25 @@ - + - + - + - + - + - + - + @@ -170439,22 +170416,22 @@ - - + + - + - + - + @@ -170462,7 +170439,7 @@ - + @@ -170470,17 +170447,17 @@ - + - + - + - + - + @@ -170489,7 +170466,7 @@ - + @@ -170497,15 +170474,15 @@ - + - + - + @@ -170555,12 +170532,12 @@ - - - - - - + + + + + + @@ -170574,7 +170551,7 @@ - + @@ -170622,7 +170599,7 @@ - + @@ -170633,7 +170610,7 @@ - + @@ -170642,7 +170619,7 @@ - + @@ -170650,12 +170627,12 @@ - + - + @@ -170714,7 +170691,7 @@ - + @@ -170728,35 +170705,35 @@ - + - - + + - - + + - + - + - - + + - - - + + + @@ -170779,31 +170756,31 @@ - + - + - + - + - + - + - + - + @@ -170821,10 +170798,10 @@ - + - + @@ -170836,10 +170813,10 @@ - + - + @@ -171025,7 +171002,7 @@ - + @@ -171184,10 +171161,10 @@ - + - + @@ -171229,7 +171206,7 @@ - + @@ -171247,7 +171224,7 @@ - + @@ -171256,13 +171233,13 @@ - + - + @@ -171292,52 +171269,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -171351,15 +171328,15 @@ - + - + - + @@ -171374,7 +171351,7 @@ - + @@ -171407,7 +171384,7 @@ - + @@ -171416,7 +171393,7 @@ - + @@ -171424,7 +171401,7 @@ - + @@ -171444,7 +171421,7 @@ - + @@ -171476,7 +171453,7 @@ - + @@ -171484,22 +171461,22 @@ - + - + - + - + - + - + @@ -171507,25 +171484,25 @@ - + - + - + - + @@ -171555,7 +171532,7 @@ - + @@ -171618,7 +171595,7 @@ - + @@ -171684,7 +171661,7 @@ - + @@ -171693,168 +171670,168 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + - - - + + - - - - - - - - - - - - - - - + - + - + - + @@ -171902,7 +171879,7 @@ - + @@ -171917,7 +171894,7 @@ - + @@ -171925,7 +171902,7 @@ - + @@ -171937,15 +171914,15 @@ - + - + - + - + @@ -171957,13 +171934,13 @@ - + - + @@ -172005,7 +171982,7 @@ - + @@ -172179,10 +172156,10 @@ - + - + @@ -172194,13 +172171,13 @@ - + - + @@ -172211,124 +172188,124 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - + + + + + + + + + + - - - - - - + + - - - - + + + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - + @@ -172339,15 +172316,15 @@ - + - + - + - + @@ -172356,114 +172333,114 @@ - - - - - + + + + + - + - + - + - + - + - + - + - + - + - - - + + + - + - - + + - + - + - + - + - - + + - - + + - - + + - + - + - - - - - - + + + + + + - - - + + + - - - + + + @@ -172480,8 +172457,8 @@ - - + + @@ -172505,7 +172482,7 @@ - + @@ -172517,7 +172494,7 @@ - + @@ -172526,7 +172503,7 @@ - + @@ -172535,11 +172512,11 @@ - + - + @@ -172568,16 +172545,16 @@ - + - + - + @@ -172601,12 +172578,12 @@ - + - + @@ -172635,7 +172612,7 @@ - + @@ -172643,7 +172620,7 @@ - + @@ -172724,31 +172701,31 @@ - + - + - + - + - + - + - + @@ -172758,24 +172735,24 @@ - + - + - + - + - + - + @@ -172793,9 +172770,9 @@ - + - + @@ -172831,55 +172808,55 @@ - - - - - - - - + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + @@ -172888,7 +172865,7 @@ - + @@ -172898,7 +172875,7 @@ - + @@ -172909,51 +172886,51 @@ - - + + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + @@ -172961,104 +172938,104 @@ - + - - + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -173085,13 +173062,13 @@ - + - + @@ -173157,10 +173134,10 @@ - + - + @@ -173187,7 +173164,7 @@ - + @@ -173196,13 +173173,13 @@ - + - + - + @@ -173214,10 +173191,10 @@ - + - + @@ -173226,13 +173203,13 @@ - + - + - + @@ -173271,18 +173248,18 @@ - + - + - + - + @@ -173290,9 +173267,9 @@ - + - + @@ -173316,7 +173293,7 @@ - + @@ -173324,13 +173301,13 @@ - + - + @@ -173350,12 +173327,12 @@ - + - + - + @@ -173370,7 +173347,7 @@ - + @@ -173381,7 +173358,7 @@ - + @@ -173404,19 +173381,19 @@ - + - + - + - + @@ -173430,7 +173407,7 @@ - + @@ -173447,7 +173424,7 @@ - + @@ -173456,7 +173433,7 @@ - + @@ -173474,10 +173451,10 @@ - + - + @@ -173488,7 +173465,7 @@ - + @@ -173499,12 +173476,12 @@ - + - + @@ -173513,7 +173490,7 @@ - + @@ -173525,7 +173502,7 @@ - + @@ -173537,16 +173514,16 @@ - + - + - + @@ -173555,10 +173532,10 @@ - + - + @@ -173582,38 +173559,38 @@ - + - + - + - + - + - + - + - + - + @@ -173621,15 +173598,15 @@ - + - + - + @@ -173637,12 +173614,12 @@ - + - + - + @@ -173669,10 +173646,10 @@ - + - + @@ -173684,13 +173661,13 @@ - + - + - + @@ -173699,7 +173676,7 @@ - + @@ -173708,13 +173685,13 @@ - + - + - + @@ -173750,7 +173727,7 @@ - + @@ -173762,7 +173739,7 @@ - + @@ -173780,18 +173757,18 @@ - + - + - + - + @@ -173808,16 +173785,16 @@ - + - + - + @@ -173825,7 +173802,7 @@ - + @@ -173851,33 +173828,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -173892,13 +173869,13 @@ - + - + @@ -173910,9 +173887,9 @@ - + - + @@ -173945,7 +173922,7 @@ - + @@ -173954,13 +173931,13 @@ - + - + @@ -173977,12 +173954,12 @@ - + - + - + @@ -173991,10 +173968,10 @@ - + - + @@ -174005,15 +173982,15 @@ - + - + - + @@ -174028,7 +174005,7 @@ - + @@ -174039,12 +174016,12 @@ - + - + - + @@ -174056,15 +174033,15 @@ - + - + - + - + @@ -174073,22 +174050,22 @@ - + - + - + - + - + @@ -174102,7 +174079,7 @@ - + @@ -174116,12 +174093,12 @@ - + - + - + @@ -174133,7 +174110,7 @@ - + @@ -174141,10 +174118,10 @@ - + - + @@ -174158,37 +174135,37 @@ - + - + - + - + - + - + - + - + - + - + @@ -174208,7 +174185,7 @@ - + @@ -174216,16 +174193,16 @@ - + - + - + - + @@ -174234,39 +174211,39 @@ - + - + - + - + - + - + @@ -174274,24 +174251,24 @@ - + - + - + - + - + - + - + @@ -174303,7 +174280,7 @@ - + @@ -174314,7 +174291,7 @@ - + @@ -174322,15 +174299,15 @@ - + - + - + - + @@ -174344,7 +174321,7 @@ - + @@ -174352,7 +174329,7 @@ - + @@ -174364,15 +174341,15 @@ - + - + - + @@ -174392,18 +174369,18 @@ - + - + - + - + @@ -174412,7 +174389,7 @@ - + @@ -174420,9 +174397,9 @@ - + - + @@ -174431,7 +174408,7 @@ - + @@ -174439,10 +174416,10 @@ - + - + @@ -174450,7 +174427,7 @@ - + @@ -174461,10 +174438,10 @@ - + - + @@ -174493,333 +174470,333 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -174827,7 +174804,7 @@ - + @@ -174836,12 +174813,12 @@ - + - + - + @@ -174856,19 +174833,19 @@ - + - + - + - + @@ -174880,22 +174857,22 @@ - + - + - + - + - + @@ -174910,10 +174887,10 @@ - + - + @@ -174966,13 +174943,13 @@ - + - + @@ -174989,7 +174966,7 @@ - + @@ -175004,7 +174981,7 @@ - + @@ -175019,7 +174996,7 @@ - + @@ -175033,7 +175010,7 @@ - + @@ -175041,48 +175018,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -175093,7 +175070,7 @@ - + @@ -175128,10 +175105,10 @@ - + - + @@ -175140,7 +175117,7 @@ - + @@ -175173,7 +175150,7 @@ - + @@ -175182,10 +175159,10 @@ - + - + @@ -175194,21 +175171,21 @@ - + - + - + - + @@ -175219,7 +175196,7 @@ - + @@ -175257,16 +175234,16 @@ - + - + - + - + @@ -175284,10 +175261,10 @@ - + - + @@ -175305,13 +175282,13 @@ - + - + - + @@ -175332,7 +175309,7 @@ - + @@ -175353,7 +175330,7 @@ - + @@ -175382,7 +175359,7 @@ - + @@ -175393,7 +175370,7 @@ - + @@ -175401,7 +175378,7 @@ - + @@ -175418,10 +175395,10 @@ - + - + @@ -175459,7 +175436,7 @@ - + @@ -175494,7 +175471,7 @@ - + @@ -175574,7 +175551,7 @@ - + @@ -175583,9 +175560,9 @@ - + - + @@ -175633,7 +175610,7 @@ - + @@ -175642,12 +175619,12 @@ - + - + - + @@ -175676,9 +175653,9 @@ - + - + @@ -175693,7 +175670,7 @@ - + @@ -175701,9 +175678,9 @@ - + - + @@ -175712,7 +175689,7 @@ - + @@ -175733,25 +175710,25 @@ - + - + - + - + - + - + @@ -175760,23 +175737,23 @@ - + - + - + - + - + @@ -175785,7 +175762,7 @@ - + @@ -175803,9 +175780,9 @@ - + - + @@ -175817,7 +175794,7 @@ - + @@ -175826,16 +175803,16 @@ - + - + - + - + @@ -175847,7 +175824,7 @@ - + @@ -175864,9 +175841,9 @@ - + - + @@ -175881,12 +175858,12 @@ - + - + - + @@ -175901,7 +175878,7 @@ - + @@ -175913,10 +175890,10 @@ - + - + @@ -175934,22 +175911,22 @@ - + - + - + - + - + @@ -175979,24 +175956,24 @@ - + - + - + - + - + - + @@ -176005,15 +175982,15 @@ - + - + - + - + @@ -176021,7 +175998,7 @@ - + @@ -176057,21 +176034,21 @@ - + - + - + - + - + @@ -176101,7 +176078,7 @@ - + @@ -176124,9 +176101,9 @@ - + - + @@ -176150,10 +176127,10 @@ - + - + @@ -176164,7 +176141,7 @@ - + @@ -176172,7 +176149,7 @@ - + @@ -176183,7 +176160,7 @@ - + @@ -176191,45 +176168,45 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -176238,7 +176215,7 @@ - + @@ -176250,18 +176227,18 @@ - + - + - + - + @@ -176269,7 +176246,7 @@ - + @@ -176277,7 +176254,7 @@ - + @@ -176285,12 +176262,12 @@ - + - + - + @@ -176311,7 +176288,7 @@ - + @@ -176335,16 +176312,16 @@ - + - + - + @@ -176359,7 +176336,7 @@ - + @@ -176367,7 +176344,7 @@ - + @@ -176375,7 +176352,7 @@ - + @@ -176389,15 +176366,15 @@ - + - + - + - + @@ -176409,12 +176386,12 @@ - + - + @@ -176446,7 +176423,7 @@ - + @@ -176463,35 +176440,35 @@ - + - + - + - + - + - + - + - + - + @@ -176521,16 +176498,16 @@ - + - + - + @@ -176542,647 +176519,647 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - - + + + + + + + + + + + + + + + + - + + - - + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - + - + + - + - + - + + - + - - + - + - + - - + - + - + - + - + - + - + - + - + - + - - - - - - - + - - + + - + + + + + + + - + - + - + - + - + - + + - + - + - + - + + - + - - + + - + + - + - + - + - + - + - + - + - + + + + - + - + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + - + - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + - - + + - - + + - - + + @@ -177190,233 +177167,233 @@ - - + + - - + + - + - - + + - + - - + + - - + + - + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - + + - - - - - - - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - - + + + - + - + - + - + @@ -177425,7 +177402,7 @@ - + @@ -177452,12 +177429,12 @@ - + - + - + @@ -177466,17 +177443,17 @@ - + - + - + - + @@ -177485,44 +177462,44 @@ - + - + - + - + - - - - - - - - - + + + + + + + + + - - + + - + - + - + - + @@ -177530,7 +177507,7 @@ - + @@ -177541,13 +177518,13 @@ - + - + - + @@ -177558,7 +177535,7 @@ - + @@ -177582,7 +177559,7 @@ - + @@ -177596,38 +177573,38 @@ - + - - - - - - - - - - - + + + + + + + + + + + - + - + - - + + - + @@ -177635,9 +177612,9 @@ - + - + @@ -177648,22 +177625,22 @@ - + - + - + - + - + @@ -177671,22 +177648,22 @@ - + - + - + - + - + @@ -177703,49 +177680,49 @@ - + - + - - - + + + - - + + - - + + - + - + - + - + @@ -177755,76 +177732,76 @@ - - + + - - + + - - - - + + + + - - + + - + - + - + - + - - + + - + - - + + - + - + - + - + - + @@ -177836,22 +177813,22 @@ - + - + - + - + @@ -177859,57 +177836,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -177923,12 +177900,12 @@ - + - + @@ -177939,7 +177916,7 @@ - + @@ -177953,7 +177930,7 @@ - + @@ -177961,20 +177938,20 @@ - + - + - + - + @@ -177986,14 +177963,14 @@ - + - + - + @@ -178005,68 +177982,68 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -178080,7 +178057,7 @@ - + @@ -178088,18 +178065,18 @@ - + - + - + @@ -178113,7 +178090,7 @@ - + @@ -178127,10 +178104,10 @@ - + - + @@ -178144,7 +178121,7 @@ - + @@ -178164,7 +178141,7 @@ - + @@ -178181,7 +178158,7 @@ - + @@ -178192,7 +178169,7 @@ - + @@ -178200,7 +178177,7 @@ - + @@ -178208,15 +178185,15 @@ - + - + - + @@ -178224,7 +178201,7 @@ - + @@ -178232,7 +178209,7 @@ - + @@ -178246,7 +178223,7 @@ - + @@ -178254,7 +178231,7 @@ - + @@ -178265,7 +178242,7 @@ - + @@ -178279,10 +178256,10 @@ - + - + @@ -178290,7 +178267,7 @@ - + @@ -178301,10 +178278,10 @@ - + - + @@ -178316,32 +178293,32 @@ - - - - + + + + - + - - + + - - + + - + - + @@ -178352,38 +178329,38 @@ - + - + - - + + - - - + + + - - + + - - - + + + @@ -178391,51 +178368,78 @@ - + - - - + + + - + - - + + - - + + - - + + - - - + + + - - - + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178892,7 +178896,7 @@ - + @@ -178935,10 +178939,10 @@ - + - + @@ -178996,12 +179000,12 @@ - + - + @@ -179030,18 +179034,18 @@ - + - - + + - - + + @@ -179056,13 +179060,13 @@ - + - + @@ -179070,7 +179074,7 @@ - + @@ -179081,7 +179085,7 @@ - + @@ -179100,38 +179104,38 @@ - + - + - + - + - + - + - + - + @@ -179155,7 +179159,7 @@ - + @@ -179214,12 +179218,12 @@ - + - + @@ -179241,7 +179245,7 @@ - + @@ -179249,7 +179253,7 @@ - + @@ -179257,7 +179261,7 @@ - + @@ -179268,19 +179272,19 @@ - + - + - + @@ -179302,11 +179306,11 @@ - + - + @@ -179327,12 +179331,12 @@ - + - + @@ -179351,7 +179355,7 @@ - + @@ -179360,8 +179364,8 @@ - - + + @@ -179377,13 +179381,28 @@ - + - + + + + + + + + + + + + + + + + @@ -179391,7 +179410,7 @@ - + @@ -179406,13 +179425,13 @@ - + - + - + @@ -179435,19 +179454,19 @@ - + - + - + - + @@ -179465,20 +179484,20 @@ - + - - + + - + - + @@ -179499,7 +179518,7 @@ - + @@ -179507,15 +179526,15 @@ - - - + + + - - - + + + @@ -179528,21 +179547,21 @@ - + - + - + - - - + + + @@ -179554,7 +179573,7 @@ - + @@ -179562,10 +179581,10 @@ - + - + @@ -179574,32 +179593,32 @@ - + - + - + - + - + - + - + @@ -179613,7 +179632,7 @@ - + @@ -179643,10 +179662,10 @@ - + - + @@ -179703,7 +179722,7 @@ - + @@ -179714,32 +179733,24 @@ - + - - - + + + - - + + - - - - - - - - - + @@ -179752,7 +179763,7 @@ - + @@ -179762,12 +179773,12 @@ - + - + @@ -179775,7 +179786,7 @@ - + @@ -179783,7 +179794,7 @@ - + @@ -179793,32 +179804,32 @@ - + - - + + - - + + - - + + - - + + @@ -179847,7 +179858,7 @@ - + @@ -179863,7 +179874,7 @@ - + @@ -179982,7 +179993,7 @@ - + @@ -179999,7 +180010,23 @@ - + + + + + + + + + + + + + + + + + @@ -180007,7 +180034,7 @@ - + @@ -180026,7 +180053,7 @@ - + @@ -180055,328 +180082,328 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -180394,13 +180421,13 @@ - + - + @@ -180427,7 +180454,7 @@ - + @@ -180436,14 +180463,14 @@ - + - + @@ -180468,20 +180495,20 @@ - + - + - + - + - + @@ -180493,15 +180520,15 @@ - + - + - + - + @@ -180516,13 +180543,13 @@ - + - + @@ -180537,7 +180564,7 @@ - + @@ -180617,7 +180644,7 @@ - + @@ -180638,10 +180665,10 @@ - + - + @@ -180659,7 +180686,7 @@ - + @@ -180671,10 +180698,10 @@ - + - + @@ -180689,13 +180716,13 @@ - + - + @@ -180710,13 +180737,13 @@ - + - + - + @@ -180724,7 +180751,7 @@ - + @@ -180749,7 +180776,7 @@ - + @@ -180763,7 +180790,7 @@ - + @@ -180774,12 +180801,12 @@ - + - + - + @@ -180794,12 +180821,12 @@ - + - + @@ -180828,15 +180855,15 @@ - + - + - + - + @@ -180850,7 +180877,7 @@ - + @@ -180864,32 +180891,32 @@ - + - + - + - + - + - + - + - + - + - + @@ -180897,27 +180924,27 @@ - + - + - + - + - + - + - + - + - + @@ -180925,12 +180952,12 @@ - + - + @@ -180938,7 +180965,7 @@ - + @@ -180961,10 +180988,10 @@ - + - + @@ -180975,12 +181002,12 @@ - + - + - + @@ -180998,7 +181025,7 @@ - + @@ -181008,7 +181035,7 @@ - + @@ -181019,7 +181046,7 @@ - + @@ -181028,74 +181055,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -181104,38 +181131,38 @@ - + - + - + - + - + - + - + - + - + - + @@ -181159,574 +181186,574 @@ - - - - - - - + + + + + - + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - - - - - - - - - - - - - - + - - + + - + + + + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - + + + - - - - - - - + + + - - - + + + + + - - - + + + + + + + - - - - + + + - - - - + + + - - - + + + + - - + + + + - - - + + + - + + + + + + + + + + + + - - - - - - - - - - - - - + + - - - + + + + - - - + + + - - + + + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + - - - - - - + + + - - - + + + - - + + + + + + - - + + + - - - + + - - - + + - - - + + + - - - + + + - - - + + + - - - - + + + - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + - - + - - - - - - + + + - - - + + + - - - - + + + + + + - - - - + + + - - - + + + + - - - + + + + - - - + + + - - - + + + - - - + + + - - + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - + + + + - + + + + + + + + + + + - - + + @@ -181734,33 +181761,33 @@ - + - + - + - + - + - + - + - + @@ -181774,54 +181801,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -181839,7 +181866,7 @@ - + @@ -181850,15 +181877,15 @@ - - + + - + - + @@ -181882,86 +181909,86 @@ - + - + - + - + - - + + - + - + - + - - + + - - - + + + - + - + - + - + - + - - + + - + - + - + - + @@ -181970,63 +181997,63 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -182034,19 +182061,19 @@ - + - + - + @@ -182054,14 +182081,14 @@ - + - + @@ -182069,54 +182096,54 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -182134,142 +182161,126 @@ - - - - - - - - - + + + + + + + - - + + + + - + - + - - + + - + - - - + + + - - - - - - - - - - - - - - - - + - - - + - + - - + + + - - + + + - + + + + + + + + + + + + + + + + - - + + - + - + - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -182277,18 +182288,18 @@ - + - + - + @@ -182296,28 +182307,28 @@ - - + + - + - + - + - + - + @@ -182325,7 +182336,7 @@ - + @@ -182354,10 +182365,10 @@ - + - + @@ -182368,93 +182379,93 @@ - + - + - + - - + + - + - + - + - + - + - + - + - + - - + + - - - - + + + + - - + + - - + + - - + + - + @@ -182462,8 +182473,8 @@ - - + + @@ -182471,8 +182482,8 @@ - - + + @@ -182480,17 +182491,17 @@ - - + + - + - + @@ -182498,52 +182509,52 @@ - - + + - - + + - + - + - + - + - + - + - - - + + + - - - - + + + + @@ -182564,7 +182575,7 @@ - + @@ -182581,126 +182592,126 @@ - + - + - - + + - - - + + + - + - - + + - - + + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - + - + @@ -182722,68 +182733,79 @@ - + - + - + - - + + + + + + + + + + + + + - - + + - + - + - + - + - + - + - + @@ -182791,22 +182813,22 @@ - + - + - - - + + + - + @@ -182815,27 +182837,27 @@ - + - + - + - + - + - + - + - + @@ -182859,7 +182881,7 @@ - + @@ -182873,7 +182895,7 @@ - + @@ -182893,7 +182915,7 @@ - + @@ -182932,30 +182954,30 @@ - + - + - + - + - + - + @@ -182966,21 +182988,21 @@ - + - + - + - + - + - + @@ -182988,7 +183010,7 @@ - + @@ -182999,15 +183021,15 @@ - + - + - + @@ -183015,7 +183037,7 @@ - + @@ -183029,23 +183051,23 @@ - - + - - - - - - - - - - + + + + + + + + + + + - + @@ -183059,58 +183081,58 @@ - + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - + - + + + + + + + - + - + - + @@ -183123,95 +183145,95 @@ - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - - + + @@ -183321,11 +183343,11 @@ - + - + @@ -183346,13 +183368,13 @@ - - - - - + + + + + - + @@ -183360,7 +183382,7 @@ - + @@ -183368,7 +183390,7 @@ - + @@ -183376,54 +183398,54 @@ - + - + - - + + - + - + - + - + - + - + - + @@ -183431,70 +183453,70 @@ - + - + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - + + - + - - + + - - + + @@ -183591,7 +183613,7 @@ - + @@ -183605,7 +183627,7 @@ - + @@ -183617,7 +183639,7 @@ - + @@ -183629,26 +183651,26 @@ - - + + - + - + - + - + @@ -183659,18 +183681,18 @@ - + - + - + - + - + @@ -183687,19 +183709,19 @@ - + - + - + - + - + @@ -183707,10 +183729,10 @@ - - - - + + + + @@ -183720,65 +183742,65 @@ - + - + - + - + - + - + - + - + - - + + - + - + @@ -183786,32 +183808,32 @@ - - + + - - + + - + - + - + @@ -183820,83 +183842,83 @@ - + - + - + - - - - - + + + + + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + @@ -183915,36 +183937,36 @@ - - + + - - + + - + - + - + - + @@ -183952,43 +183974,43 @@ - + - + - + - + - + - + - + @@ -183996,7 +184018,7 @@ - + @@ -184103,32 +184125,32 @@ - + - + - - + + - + - - + + @@ -184173,21 +184195,21 @@ - - + + - - + + - - + + - - + + @@ -184290,9 +184312,9 @@ - + - + @@ -184300,9 +184322,9 @@ - + - + @@ -184320,17 +184342,17 @@ - + - + - + - - + + @@ -184338,105 +184360,105 @@ - - - - + + + + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -184444,88 +184466,88 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -184631,17 +184653,17 @@ - - - + + + - + - + @@ -184652,10 +184674,10 @@ - + - + @@ -184700,7 +184722,7 @@ - + @@ -184727,7 +184749,7 @@ - + @@ -184781,19 +184803,19 @@ - + - + - + @@ -184802,10 +184824,10 @@ - + - + @@ -184826,22 +184848,22 @@ - + - + - + - + @@ -184856,7 +184878,7 @@ - + @@ -184874,83 +184896,83 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -184959,13 +184981,13 @@ - + - + - + @@ -184974,7 +184996,7 @@ - + @@ -185000,13 +185022,13 @@ - + - + - + @@ -185032,10 +185054,10 @@ - + - + @@ -185050,7 +185072,7 @@ - + @@ -185085,9 +185107,9 @@ - + - + @@ -185138,28 +185160,28 @@ - + - + - + - + - + - + - + @@ -185168,16 +185190,16 @@ - + - + - + - + @@ -185186,7 +185208,7 @@ - + @@ -185201,7 +185223,7 @@ - + @@ -185213,7 +185235,7 @@ - + @@ -185242,7 +185264,7 @@ - + @@ -185295,7 +185317,7 @@ - + @@ -185507,7 +185529,7 @@ - + @@ -185522,7 +185544,7 @@ - + @@ -185542,7 +185564,7 @@ - + @@ -185553,7 +185575,7 @@ - + @@ -185570,7 +185592,7 @@ - + @@ -185596,7 +185618,7 @@ - + @@ -185610,7 +185632,7 @@ - + @@ -185618,7 +185640,7 @@ - + @@ -185627,9 +185649,9 @@ - + - + @@ -185641,27 +185663,27 @@ - + - + - + - + - + - - + + - + @@ -185672,367 +185694,367 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - - - - - + - - + + - - + + - + + + + + + - - - + + + - - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + + + + - + - + - + - + - - - + + + - + - + - - + + - - + + @@ -186040,26 +186062,26 @@ - + - + - + - + - + - + @@ -186068,37 +186090,37 @@ - + - + - + - + - + - - + + - + @@ -186106,59 +186128,59 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -186172,211 +186194,211 @@ - - - + + - - - + + + + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + @@ -186385,11 +186407,11 @@ - + - + @@ -186397,34 +186419,34 @@ - + - - + + - - + + - + - + - + @@ -186444,11 +186466,11 @@ - + - + @@ -186474,19 +186496,19 @@ - + - + - + - + @@ -186534,22 +186556,22 @@ - + - + - + - + - + @@ -186663,92 +186685,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -186757,56 +186779,56 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - + - + - - + + - + @@ -186817,94 +186839,94 @@ - - + + - - + + - - + + - - - - - - - + + - + + + + + + - - + + - - - - - - + - - + + - + + + + + + - - - - - - + - - - + + + - + + + + + + - - + + - - + + - - + + @@ -186955,24 +186977,24 @@ - + - + - + - + - + @@ -186980,123 +187002,123 @@ - - + + - + - + - + - + - + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -187105,34 +187127,34 @@ - + - - + + - + - + - + - + - + @@ -187170,17 +187192,17 @@ - - - - + + + + - + - - + + @@ -187188,7 +187210,7 @@ - + @@ -187196,7 +187218,7 @@ - + @@ -187204,7 +187226,7 @@ - + @@ -187213,51 +187235,51 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -187267,79 +187289,79 @@ - - + + - - + + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - - + + @@ -187360,100 +187382,100 @@ - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -187464,7 +187486,7 @@ - + @@ -187472,24 +187494,24 @@ - + - + - - + + - + - - - + + + @@ -187500,7 +187522,7 @@ - + @@ -187508,10 +187530,10 @@ - + - + @@ -187531,18 +187553,18 @@ - + - - - + + + - + - + @@ -187580,9 +187602,9 @@ - + - + @@ -187597,11 +187619,11 @@ - + - - + + @@ -187611,9 +187633,9 @@ - + - + @@ -187628,30 +187650,30 @@ - + - + - + - + - + - + - + - + @@ -187675,10 +187697,10 @@ - + - + @@ -187702,16 +187724,16 @@ - + - + - + - + @@ -187720,7 +187742,7 @@ - + @@ -187740,7 +187762,7 @@ - + @@ -187766,7 +187788,7 @@ - + @@ -187795,18 +187817,18 @@ - + - + - + @@ -187814,19 +187836,19 @@ - - - - - + + + + - - - - - - + + + + + + + @@ -187837,9 +187859,9 @@ - - - + + + @@ -187864,17 +187886,17 @@ - + - + - + @@ -187915,36 +187937,36 @@ - + - - - - - - + - - + + + + + + + - + - + @@ -187959,66 +187981,66 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - - - + + + @@ -188099,16 +188121,16 @@ - + - + - + @@ -188120,27 +188142,27 @@ - + - + - + - + - + - + @@ -188152,39 +188174,39 @@ - + - + - + - + - + - + - + - + - + @@ -188192,35 +188214,35 @@ - + - + - - - - - + + + + + - - + + - - - + + + - - - + + + @@ -188228,21 +188250,21 @@ - - + + - + - + - + - + @@ -188260,27 +188282,27 @@ - + - + - + - + - + - + - + @@ -188298,74 +188320,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -188380,13 +188402,13 @@ - + - + @@ -188407,13 +188429,13 @@ - + - + @@ -188422,13 +188444,13 @@ - + - + @@ -188451,10 +188473,10 @@ - + - + @@ -188474,12 +188496,12 @@ - + - + - + @@ -188491,10 +188513,10 @@ - + - + @@ -188503,7 +188525,7 @@ - + @@ -188524,30 +188546,30 @@ - + - + - + - + - + - + - + - + - + @@ -188558,46 +188580,46 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -188606,392 +188628,392 @@ - - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - - + + - - + + - + - - - + + + - - - - - - - - - - - - + + + + + + - + + + - - + - - - - + + - + + + + + + + + - - - - - - - - + + + + - - + + - - + - - + + - - - - + + + + - - - + + + - + + + + + + - - - - - - + + - - + - - - + + + + - - - + + - + + + + + + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - - + + - + - + - + - - + + - + - + - + - + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - + + - - + + - - + + - + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - - + + - + - + @@ -188999,43 +189021,43 @@ - + - + - + - + - - - + + + - + - + - - + + - - + + @@ -189049,9 +189071,9 @@ - - - + + + @@ -189060,28 +189082,28 @@ - + - + - + - - + + - + - - + + - + @@ -189089,12 +189111,12 @@ - + - + @@ -189115,29 +189137,29 @@ - + - - + + - + - - + + - + @@ -189147,17 +189169,17 @@ - + - + - + - + @@ -189179,59 +189201,59 @@ - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - + - - - + + + @@ -189643,11 +189665,11 @@ - - + + - + @@ -189662,7 +189684,7 @@ - + @@ -189676,9 +189698,9 @@ - - - + + + @@ -189691,9 +189713,9 @@ - - - + + + @@ -189702,21 +189724,21 @@ - - - + + + - + - + - + @@ -189765,15 +189787,15 @@ - + - + - + @@ -189791,12 +189813,12 @@ - + - + - + @@ -189823,15 +189845,15 @@ - + - + - + @@ -189891,7 +189913,7 @@ - + @@ -189905,12 +189927,12 @@ - + - + - + @@ -189952,7 +189974,7 @@ - + @@ -189963,7 +189985,7 @@ - + @@ -189971,150 +189993,150 @@ - - - - + + + + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + @@ -190123,8 +190145,8 @@ - - + + @@ -190133,41 +190155,41 @@ - + - + - - + + - + - + - + - + - + @@ -190209,168 +190231,168 @@ - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - + - - + + - + @@ -190402,15 +190424,15 @@ - + - + - + @@ -190418,114 +190440,114 @@ - + - - - - - - + - - - + - - + + + + - - + + + + + + + - - + + - - + + - - - - - - - + - - + + - - + + + - - + + - - - + + + - + + - - + + - + + + + + - - + + - - + + - - + + - - + + - + @@ -190536,59 +190558,59 @@ - - + + - + - + - + - + - - - - - + + + + + - + - + - + - + - - + + - + - + @@ -190612,13 +190634,13 @@ - - + + - + - + @@ -190639,7 +190661,7 @@ - + @@ -190648,10 +190670,10 @@ - + - + @@ -190666,82 +190688,82 @@ - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts index 6039adda12ee..b0b12e389835 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts @@ -296,7 +296,7 @@ }; &usb0_phy { - status = "okay"; + status = "disabled"; phy-supply = <&usb_otg_pwr>; }; @@ -306,7 +306,7 @@ }; &usb0 { - status = "okay"; + status = "disabled"; }; &usb1 { diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts index 2a5cd303123d..8d6f316a5c7b 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts @@ -192,6 +192,9 @@ bluetooth { compatible = "brcm,bcm43438-bt"; shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; + max-speed = <2000000>; + clocks = <&wifi32k>; + clock-names = "lpo"; }; }; diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts index f25ddd18a607..4d67eb715b91 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts @@ -409,6 +409,9 @@ bluetooth { compatible = "brcm,bcm43438-bt"; shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; + max-speed = <2000000>; + clocks = <&wifi32k>; + clock-names = "lpo"; }; }; diff --git a/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi b/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi index 9682d4dd7496..1bae90705746 100644 --- a/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8998-clamshell.dtsi @@ -23,6 +23,43 @@ }; }; +/* + * The laptop FW does not appear to support the retention state as it is + * not advertised as enabled in ACPI, and enabling it in DT can cause boot + * hangs. + */ +&CPU0 { + cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; +}; + +&CPU1 { + cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; +}; + +&CPU2 { + cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; +}; + +&CPU3 { + cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; +}; + +&CPU4 { + cpu-idle-states = <&BIG_CPU_SLEEP_1>; +}; + +&CPU5 { + cpu-idle-states = <&BIG_CPU_SLEEP_1>; +}; + +&CPU6 { + cpu-idle-states = <&BIG_CPU_SLEEP_1>; +}; + +&CPU7 { + cpu-idle-states = <&BIG_CPU_SLEEP_1>; +}; + &qusb2phy { status = "okay"; diff --git a/arch/arm64/include/asm/pgtable-prot.h b/arch/arm64/include/asm/pgtable-prot.h index 8dc6c5cdabe6..baf52baaa2a5 100644 --- a/arch/arm64/include/asm/pgtable-prot.h +++ b/arch/arm64/include/asm/pgtable-prot.h @@ -85,13 +85,12 @@ #define PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_WRITE) #define PAGE_READONLY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN) #define PAGE_READONLY_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN) -#define PAGE_EXECONLY __pgprot(_PAGE_DEFAULT | PTE_RDONLY | PTE_NG | PTE_PXN) #define __P000 PAGE_NONE #define __P001 PAGE_READONLY #define __P010 PAGE_READONLY #define __P011 PAGE_READONLY -#define __P100 PAGE_EXECONLY +#define __P100 PAGE_READONLY_EXEC #define __P101 PAGE_READONLY_EXEC #define __P110 PAGE_READONLY_EXEC #define __P111 PAGE_READONLY_EXEC @@ -100,7 +99,7 @@ #define __S001 PAGE_READONLY #define __S010 PAGE_SHARED #define __S011 PAGE_SHARED -#define __S100 PAGE_EXECONLY +#define __S100 PAGE_READONLY_EXEC #define __S101 PAGE_READONLY_EXEC #define __S110 PAGE_SHARED_EXEC #define __S111 PAGE_SHARED_EXEC diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 624dfff4a40e..6dfd81f207fa 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h @@ -96,12 +96,8 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; #define pte_dirty(pte) (pte_sw_dirty(pte) || pte_hw_dirty(pte)) #define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID)) -/* - * Execute-only user mappings do not have the PTE_USER bit set. All valid - * kernel mappings have the PTE_UXN bit set. - */ #define pte_valid_not_user(pte) \ - ((pte_val(pte) & (PTE_VALID | PTE_USER | PTE_UXN)) == (PTE_VALID | PTE_UXN)) + ((pte_val(pte) & (PTE_VALID | PTE_USER)) == PTE_VALID) #define pte_valid_young(pte) \ ((pte_val(pte) & (PTE_VALID | PTE_AF)) == (PTE_VALID | PTE_AF)) #define pte_valid_user(pte) \ @@ -117,8 +113,8 @@ extern unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)]; /* * p??_access_permitted() is true for valid user mappings (subject to the - * write permission check) other than user execute-only which do not have the - * PTE_USER bit set. PROT_NONE mappings do not have the PTE_VALID bit set. + * write permission check). PROT_NONE mappings do not have the PTE_VALID bit + * set. */ #define pte_access_permitted(pte, write) \ (pte_valid_user(pte) && (!(write) || pte_write(pte))) diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 9fc6db0bcbad..d26e6cd28953 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -454,7 +454,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, const struct fault_info *inf; struct mm_struct *mm = current->mm; vm_fault_t fault, major = 0; - unsigned long vm_flags = VM_READ | VM_WRITE; + unsigned long vm_flags = VM_READ | VM_WRITE | VM_EXEC; unsigned int mm_flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; if (kprobe_page_fault(regs, esr)) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 49a0309ab794..95f1d5823caa 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1494,7 +1494,6 @@ void arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct zone *zone; /* * FIXME: Cleanup page tables (also in arch_add_memory() in case @@ -1503,8 +1502,7 @@ void arch_remove_memory(int nid, u64 start, u64 size, * unplug. ARCH_ENABLE_MEMORY_HOTREMOVE must not be * unlocked yet. */ - zone = page_zone(pfn_to_page(start_pfn)); - __remove_pages(zone, start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); kernel_physical_mapping_remove(start, start + size); } diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index bf9df2625bc8..a6dd80a2c939 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c @@ -689,9 +689,7 @@ void arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct zone *zone; - zone = page_zone(pfn_to_page(start_pfn)); - __remove_pages(zone, start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); } #endif diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index a0bd9bdb5f83..e5c2d47608fe 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -46,7 +46,7 @@ config MIPS select HAVE_ARCH_TRACEHOOK select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES select HAVE_ASM_MODVERSIONS - select HAVE_EBPF_JIT if (!CPU_MICROMIPS) + select HAVE_EBPF_JIT if 64BIT && !CPU_MICROMIPS && TARGET_ISA_REV >= 2 select HAVE_CONTEXT_TRACKING select HAVE_COPY_THREAD_TLS select HAVE_C_RECORDMCOUNT diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index 4993db40482c..ee26f9a4575d 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h @@ -49,8 +49,26 @@ struct thread_info { .addr_limit = KERNEL_DS, \ } -/* How to get the thread information struct from C. */ +/* + * A pointer to the struct thread_info for the currently executing thread is + * held in register $28/$gp. + * + * We declare __current_thread_info as a global register variable rather than a + * local register variable within current_thread_info() because clang doesn't + * support explicit local register variables. + * + * When building the VDSO we take care not to declare the global register + * variable because this causes GCC to not preserve the value of $28/$gp in + * functions that change its value (which is common in the PIC VDSO when + * accessing the GOT). Since the VDSO shouldn't be accessing + * __current_thread_info anyway we declare it extern in order to cause a link + * failure if it's referenced. + */ +#ifdef __VDSO__ +extern struct thread_info *__current_thread_info; +#else register struct thread_info *__current_thread_info __asm__("$28"); +#endif static inline struct thread_info *current_thread_info(void) { diff --git a/arch/mips/net/ebpf_jit.c b/arch/mips/net/ebpf_jit.c index 46b76751f3a5..a2405d5f7d1e 100644 --- a/arch/mips/net/ebpf_jit.c +++ b/arch/mips/net/ebpf_jit.c @@ -1803,7 +1803,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) unsigned int image_size; u8 *image_ptr; - if (!prog->jit_requested || MIPS_ISA_REV < 2) + if (!prog->jit_requested) return prog; tmp = bpf_jit_blind_constants(prog); diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index be941d382c8d..460afa415434 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -104,6 +104,27 @@ int __weak remove_section_mapping(unsigned long start, unsigned long end) return -ENODEV; } +#define FLUSH_CHUNK_SIZE SZ_1G +/** + * flush_dcache_range_chunked(): Write any modified data cache blocks out to + * memory and invalidate them, in chunks of up to FLUSH_CHUNK_SIZE + * Does not invalidate the corresponding instruction cache blocks. + * + * @start: the start address + * @stop: the stop address (exclusive) + * @chunk: the max size of the chunks + */ +static void flush_dcache_range_chunked(unsigned long start, unsigned long stop, + unsigned long chunk) +{ + unsigned long i; + + for (i = start; i < stop; i += chunk) { + flush_dcache_range(i, min(stop, start + chunk)); + cond_resched(); + } +} + int __ref arch_add_memory(int nid, u64 start, u64 size, struct mhp_restrictions *restrictions) { @@ -120,7 +141,8 @@ int __ref arch_add_memory(int nid, u64 start, u64 size, start, start + size, rc); return -EFAULT; } - flush_dcache_range(start, start + size); + + flush_dcache_range_chunked(start, start + size, FLUSH_CHUNK_SIZE); return __add_pages(nid, start_pfn, nr_pages, restrictions); } @@ -130,14 +152,14 @@ void __ref arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct page *page = pfn_to_page(start_pfn) + vmem_altmap_offset(altmap); int ret; - __remove_pages(page_zone(page), start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); /* Remove htab bolted mappings for this section of memory */ start = (unsigned long)__va(start); - flush_dcache_range(start, start + size); + flush_dcache_range_chunked(start, start + size, FLUSH_CHUNK_SIZE); + ret = remove_section_mapping(start, start + size); WARN_ON_ONCE(ret); diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c index 42bbcd47cc85..dffe1a45b6ed 100644 --- a/arch/powerpc/mm/slice.c +++ b/arch/powerpc/mm/slice.c @@ -50,7 +50,7 @@ static void slice_print_mask(const char *label, const struct slice_mask *mask) { #endif -static inline bool slice_addr_is_low(unsigned long addr) +static inline notrace bool slice_addr_is_low(unsigned long addr) { u64 tmp = (u64)addr; @@ -659,7 +659,7 @@ unsigned long arch_get_unmapped_area_topdown(struct file *filp, mm_ctx_user_psize(¤t->mm->context), 1); } -unsigned int get_slice_psize(struct mm_struct *mm, unsigned long addr) +unsigned int notrace get_slice_psize(struct mm_struct *mm, unsigned long addr) { unsigned char *psizes; int index, mask_index; diff --git a/arch/riscv/kernel/ftrace.c b/arch/riscv/kernel/ftrace.c index b94d8db5ddcc..c40fdcdeb950 100644 --- a/arch/riscv/kernel/ftrace.c +++ b/arch/riscv/kernel/ftrace.c @@ -142,7 +142,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, */ old = *parent; - if (function_graph_enter(old, self_addr, frame_pointer, parent)) + if (!function_graph_enter(old, self_addr, frame_pointer, parent)) *parent = return_hooker; } diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c index 7511b71d2931..fdb8083e7870 100644 --- a/arch/s390/kernel/perf_cpum_sf.c +++ b/arch/s390/kernel/perf_cpum_sf.c @@ -1313,18 +1313,28 @@ static void hw_perf_event_update(struct perf_event *event, int flush_all) */ if (flush_all && done) break; - - /* If an event overflow happened, discard samples by - * processing any remaining sample-data-blocks. - */ - if (event_overflow) - flush_all = 1; } /* Account sample overflows in the event hardware structure */ if (sampl_overflow) OVERFLOW_REG(hwc) = DIV_ROUND_UP(OVERFLOW_REG(hwc) + sampl_overflow, 1 + num_sdb); + + /* Perf_event_overflow() and perf_event_account_interrupt() limit + * the interrupt rate to an upper limit. Roughly 1000 samples per + * task tick. + * Hitting this limit results in a large number + * of throttled REF_REPORT_THROTTLE entries and the samples + * are dropped. + * Slightly increase the interval to avoid hitting this limit. + */ + if (event_overflow) { + SAMPL_RATE(hwc) += DIV_ROUND_UP(SAMPL_RATE(hwc), 10); + debug_sprintf_event(sfdbg, 1, "%s: rate adjustment %ld\n", + __func__, + DIV_ROUND_UP(SAMPL_RATE(hwc), 10)); + } + if (sampl_overflow || event_overflow) debug_sprintf_event(sfdbg, 4, "hw_perf_event_update: " "overflow stats: sample=%llu event=%llu\n", diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index d95c85780e07..06dddd7c4290 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c @@ -727,39 +727,67 @@ static void __ref smp_get_core_info(struct sclp_core_info *info, int early) static int smp_add_present_cpu(int cpu); -static int __smp_rescan_cpus(struct sclp_core_info *info, int sysfs_add) +static int smp_add_core(struct sclp_core_entry *core, cpumask_t *avail, + bool configured, bool early) { struct pcpu *pcpu; - cpumask_t avail; - int cpu, nr, i, j; + int cpu, nr, i; u16 address; nr = 0; - cpumask_xor(&avail, cpu_possible_mask, cpu_present_mask); - cpu = cpumask_first(&avail); - for (i = 0; (i < info->combined) && (cpu < nr_cpu_ids); i++) { - if (sclp.has_core_type && info->core[i].type != boot_core_type) + if (sclp.has_core_type && core->type != boot_core_type) + return nr; + cpu = cpumask_first(avail); + address = core->core_id << smp_cpu_mt_shift; + for (i = 0; (i <= smp_cpu_mtid) && (cpu < nr_cpu_ids); i++) { + if (pcpu_find_address(cpu_present_mask, address + i)) continue; - address = info->core[i].core_id << smp_cpu_mt_shift; - for (j = 0; j <= smp_cpu_mtid; j++) { - if (pcpu_find_address(cpu_present_mask, address + j)) - continue; - pcpu = pcpu_devices + cpu; - pcpu->address = address + j; - pcpu->state = - (cpu >= info->configured*(smp_cpu_mtid + 1)) ? - CPU_STATE_STANDBY : CPU_STATE_CONFIGURED; - smp_cpu_set_polarization(cpu, POLARIZATION_UNKNOWN); - set_cpu_present(cpu, true); - if (sysfs_add && smp_add_present_cpu(cpu) != 0) - set_cpu_present(cpu, false); - else - nr++; - cpu = cpumask_next(cpu, &avail); - if (cpu >= nr_cpu_ids) + pcpu = pcpu_devices + cpu; + pcpu->address = address + i; + if (configured) + pcpu->state = CPU_STATE_CONFIGURED; + else + pcpu->state = CPU_STATE_STANDBY; + smp_cpu_set_polarization(cpu, POLARIZATION_UNKNOWN); + set_cpu_present(cpu, true); + if (!early && smp_add_present_cpu(cpu) != 0) + set_cpu_present(cpu, false); + else + nr++; + cpumask_clear_cpu(cpu, avail); + cpu = cpumask_next(cpu, avail); + } + return nr; +} + +static int __smp_rescan_cpus(struct sclp_core_info *info, bool early) +{ + struct sclp_core_entry *core; + cpumask_t avail; + bool configured; + u16 core_id; + int nr, i; + + nr = 0; + cpumask_xor(&avail, cpu_possible_mask, cpu_present_mask); + /* + * Add IPL core first (which got logical CPU number 0) to make sure + * that all SMT threads get subsequent logical CPU numbers. + */ + if (early) { + core_id = pcpu_devices[0].address >> smp_cpu_mt_shift; + for (i = 0; i < info->configured; i++) { + core = &info->core[i]; + if (core->core_id == core_id) { + nr += smp_add_core(core, &avail, true, early); break; + } } } + for (i = 0; i < info->combined; i++) { + configured = i < info->configured; + nr += smp_add_core(&info->core[i], &avail, configured, early); + } return nr; } @@ -808,7 +836,7 @@ void __init smp_detect_cpus(void) /* Add CPUs present at boot */ get_online_cpus(); - __smp_rescan_cpus(info, 0); + __smp_rescan_cpus(info, true); put_online_cpus(); memblock_free_early((unsigned long)info, sizeof(*info)); } @@ -1153,7 +1181,7 @@ int __ref smp_rescan_cpus(void) smp_get_core_info(info, 0); get_online_cpus(); mutex_lock(&smp_cpu_state_mutex); - nr = __smp_rescan_cpus(info, 1); + nr = __smp_rescan_cpus(info, false); mutex_unlock(&smp_cpu_state_mutex); put_online_cpus(); kfree(info); diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index a124f19f7b3c..c1d96e588152 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c @@ -291,10 +291,8 @@ void arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct zone *zone; - zone = page_zone(pfn_to_page(start_pfn)); - __remove_pages(zone, start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); vmem_remove_mapping(start, size); } #endif /* CONFIG_MEMORY_HOTPLUG */ diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c index dfdbaa50946e..d1b1ff2be17a 100644 --- a/arch/sh/mm/init.c +++ b/arch/sh/mm/init.c @@ -434,9 +434,7 @@ void arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = PFN_DOWN(start); unsigned long nr_pages = size >> PAGE_SHIFT; - struct zone *zone; - zone = page_zone(pfn_to_page(start_pfn)); - __remove_pages(zone, start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); } #endif /* CONFIG_MEMORY_HOTPLUG */ diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c index 5ee3fed881d3..741540d849f3 100644 --- a/arch/x86/events/intel/bts.c +++ b/arch/x86/events/intel/bts.c @@ -63,9 +63,17 @@ struct bts_buffer { static struct pmu bts_pmu; +static int buf_nr_pages(struct page *page) +{ + if (!PagePrivate(page)) + return 1; + + return 1 << page_private(page); +} + static size_t buf_size(struct page *page) { - return 1 << (PAGE_SHIFT + page_private(page)); + return buf_nr_pages(page) * PAGE_SIZE; } static void * @@ -83,9 +91,7 @@ bts_buffer_setup_aux(struct perf_event *event, void **pages, /* count all the high order buffers */ for (pg = 0, nbuf = 0; pg < nr_pages;) { page = virt_to_page(pages[pg]); - if (WARN_ON_ONCE(!PagePrivate(page) && nr_pages > 1)) - return NULL; - pg += 1 << page_private(page); + pg += buf_nr_pages(page); nbuf++; } @@ -109,7 +115,7 @@ bts_buffer_setup_aux(struct perf_event *event, void **pages, unsigned int __nr_pages; page = virt_to_page(pages[pg]); - __nr_pages = PagePrivate(page) ? 1 << page_private(page) : 1; + __nr_pages = buf_nr_pages(page); buf->buf[nbuf].page = page; buf->buf[nbuf].offset = offset; buf->buf[nbuf].displacement = (pad ? BTS_RECORD_SIZE - pad : 0); diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 930edeb41ec3..0a74407ef92e 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -865,10 +865,8 @@ void arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct zone *zone; - zone = page_zone(pfn_to_page(start_pfn)); - __remove_pages(zone, start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); } #endif diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index a6b5c653727b..b8541d77452c 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -1212,10 +1212,8 @@ void __ref arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct page *page = pfn_to_page(start_pfn) + vmem_altmap_offset(altmap); - struct zone *zone = page_zone(page); - __remove_pages(zone, start_pfn, nr_pages, altmap); + __remove_pages(start_pfn, nr_pages, altmap); kernel_physical_mapping_remove(start, start + size); } #endif /* CONFIG_MEMORY_HOTPLUG */ diff --git a/block/bio.c b/block/bio.c index 861a9040dc77..d2f552ae0753 100644 --- a/block/bio.c +++ b/block/bio.c @@ -538,6 +538,45 @@ void zero_fill_bio_iter(struct bio *bio, struct bvec_iter start) } EXPORT_SYMBOL(zero_fill_bio_iter); +void bio_truncate(struct bio *bio, unsigned new_size) +{ + struct bio_vec bv; + struct bvec_iter iter; + unsigned int done = 0; + bool truncated = false; + + if (new_size >= bio->bi_iter.bi_size) + return; + + if (bio_data_dir(bio) != READ) + goto exit; + + bio_for_each_segment(bv, bio, iter) { + if (done + bv.bv_len > new_size) { + unsigned offset; + + if (!truncated) + offset = new_size - done; + else + offset = 0; + zero_user(bv.bv_page, offset, bv.bv_len - offset); + truncated = true; + } + done += bv.bv_len; + } + + exit: + /* + * Don't touch bvec table here and make it really immutable, since + * fs bio user has to retrieve all pages via bio_for_each_segment_all + * in its .end_bio() callback. + * + * It is enough to truncate bio by updating .bi_size since we can make + * correct bvec with the updated .bi_size for drivers. + */ + bio->bi_iter.bi_size = new_size; +} + /** * bio_put - release a reference to a bio * @bio: bio to release reference to diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c index 6ca015f92766..7f053468b50d 100644 --- a/block/compat_ioctl.c +++ b/block/compat_ioctl.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -354,6 +355,10 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) * but we call blkdev_ioctl, which gets the lock for us */ case BLKRRPART: + case BLKREPORTZONE: + case BLKRESETZONE: + case BLKGETZONESZ: + case BLKGETNRZONES: return blkdev_ioctl(bdev, mode, cmd, (unsigned long)compat_ptr(arg)); case BLKBSZSET_32: @@ -401,6 +406,14 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg) case BLKTRACETEARDOWN: /* compatible */ ret = blk_trace_ioctl(bdev, cmd, compat_ptr(arg)); return ret; + case IOC_PR_REGISTER: + case IOC_PR_RESERVE: + case IOC_PR_RELEASE: + case IOC_PR_PREEMPT: + case IOC_PR_PREEMPT_ABORT: + case IOC_PR_CLEAR: + return blkdev_ioctl(bdev, mode, cmd, + (unsigned long)compat_ptr(arg)); default: if (disk->fops->compat_ioctl) ret = disk->fops->compat_ioctl(bdev, mode, cmd, arg); diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c index 75948a3f1a20..c60d2c6d31d6 100644 --- a/drivers/acpi/sysfs.c +++ b/drivers/acpi/sysfs.c @@ -819,14 +819,14 @@ end: * interface: * echo unmask > /sys/firmware/acpi/interrupts/gpe00 */ -#define ACPI_MASKABLE_GPE_MAX 0xFF +#define ACPI_MASKABLE_GPE_MAX 0x100 static DECLARE_BITMAP(acpi_masked_gpes_map, ACPI_MASKABLE_GPE_MAX) __initdata; static int __init acpi_gpe_set_masked_gpes(char *val) { u8 gpe; - if (kstrtou8(val, 0, &gpe) || gpe > ACPI_MASKABLE_GPE_MAX) + if (kstrtou8(val, 0, &gpe)) return -EINVAL; set_bit(gpe, acpi_masked_gpes_map); @@ -838,7 +838,7 @@ void __init acpi_gpe_apply_masked_gpes(void) { acpi_handle handle; acpi_status status; - u8 gpe; + u16 gpe; for_each_set_bit(gpe, acpi_masked_gpes_map, ACPI_MASKABLE_GPE_MAX) { status = acpi_get_gpe_device(gpe, &handle); diff --git a/drivers/ata/ahci_brcm.c b/drivers/ata/ahci_brcm.c index f41744b9b38a..66a570d0da83 100644 --- a/drivers/ata/ahci_brcm.c +++ b/drivers/ata/ahci_brcm.c @@ -76,8 +76,7 @@ enum brcm_ahci_version { }; enum brcm_ahci_quirks { - BRCM_AHCI_QUIRK_NO_NCQ = BIT(0), - BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE = BIT(1), + BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE = BIT(0), }; struct brcm_ahci_priv { @@ -213,19 +212,12 @@ static void brcm_sata_phys_disable(struct brcm_ahci_priv *priv) brcm_sata_phy_disable(priv, i); } -static u32 brcm_ahci_get_portmask(struct platform_device *pdev, +static u32 brcm_ahci_get_portmask(struct ahci_host_priv *hpriv, struct brcm_ahci_priv *priv) { - void __iomem *ahci; - struct resource *res; u32 impl; - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ahci"); - ahci = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(ahci)) - return 0; - - impl = readl(ahci + HOST_PORTS_IMPL); + impl = readl(hpriv->mmio + HOST_PORTS_IMPL); if (fls(impl) > SATA_TOP_MAX_PHYS) dev_warn(priv->dev, "warning: more ports than PHYs (%#x)\n", @@ -233,9 +225,6 @@ static u32 brcm_ahci_get_portmask(struct platform_device *pdev, else if (!impl) dev_info(priv->dev, "no ports found\n"); - devm_iounmap(&pdev->dev, ahci); - devm_release_mem_region(&pdev->dev, res->start, resource_size(res)); - return impl; } @@ -285,6 +274,13 @@ static unsigned int brcm_ahci_read_id(struct ata_device *dev, /* Perform the SATA PHY reset sequence */ brcm_sata_phy_disable(priv, ap->port_no); + /* Reset the SATA clock */ + ahci_platform_disable_clks(hpriv); + msleep(10); + + ahci_platform_enable_clks(hpriv); + msleep(10); + /* Bring the PHY back on */ brcm_sata_phy_enable(priv, ap->port_no); @@ -347,11 +343,10 @@ static int brcm_ahci_suspend(struct device *dev) struct ata_host *host = dev_get_drvdata(dev); struct ahci_host_priv *hpriv = host->private_data; struct brcm_ahci_priv *priv = hpriv->plat_data; - int ret; - ret = ahci_platform_suspend(dev); brcm_sata_phys_disable(priv); - return ret; + + return ahci_platform_suspend(dev); } static int brcm_ahci_resume(struct device *dev) @@ -359,11 +354,44 @@ static int brcm_ahci_resume(struct device *dev) struct ata_host *host = dev_get_drvdata(dev); struct ahci_host_priv *hpriv = host->private_data; struct brcm_ahci_priv *priv = hpriv->plat_data; + int ret; + + /* Make sure clocks are turned on before re-configuration */ + ret = ahci_platform_enable_clks(hpriv); + if (ret) + return ret; brcm_sata_init(priv); brcm_sata_phys_enable(priv); brcm_sata_alpm_init(hpriv); - return ahci_platform_resume(dev); + + /* Since we had to enable clocks earlier on, we cannot use + * ahci_platform_resume() as-is since a second call to + * ahci_platform_enable_resources() would bump up the resources + * (regulators, clocks, PHYs) count artificially so we copy the part + * after ahci_platform_enable_resources(). + */ + ret = ahci_platform_enable_phys(hpriv); + if (ret) + goto out_disable_phys; + + ret = ahci_platform_resume_host(dev); + if (ret) + goto out_disable_platform_phys; + + /* We resumed so update PM runtime state */ + pm_runtime_disable(dev); + pm_runtime_set_active(dev); + pm_runtime_enable(dev); + + return 0; + +out_disable_platform_phys: + ahci_platform_disable_phys(hpriv); +out_disable_phys: + brcm_sata_phys_disable(priv); + ahci_platform_disable_clks(hpriv); + return ret; } #endif @@ -410,44 +438,71 @@ static int brcm_ahci_probe(struct platform_device *pdev) if (!IS_ERR_OR_NULL(priv->rcdev)) reset_control_deassert(priv->rcdev); - if ((priv->version == BRCM_SATA_BCM7425) || - (priv->version == BRCM_SATA_NSP)) { - priv->quirks |= BRCM_AHCI_QUIRK_NO_NCQ; - priv->quirks |= BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE; + hpriv = ahci_platform_get_resources(pdev, 0); + if (IS_ERR(hpriv)) { + ret = PTR_ERR(hpriv); + goto out_reset; } + hpriv->plat_data = priv; + hpriv->flags = AHCI_HFLAG_WAKE_BEFORE_STOP | AHCI_HFLAG_NO_WRITE_TO_RO; + + switch (priv->version) { + case BRCM_SATA_BCM7425: + hpriv->flags |= AHCI_HFLAG_DELAY_ENGINE; + /* fall through */ + case BRCM_SATA_NSP: + hpriv->flags |= AHCI_HFLAG_NO_NCQ; + priv->quirks |= BRCM_AHCI_QUIRK_SKIP_PHY_ENABLE; + break; + default: + break; + } + + ret = ahci_platform_enable_clks(hpriv); + if (ret) + goto out_reset; + + /* Must be first so as to configure endianness including that + * of the standard AHCI register space. + */ brcm_sata_init(priv); - priv->port_mask = brcm_ahci_get_portmask(pdev, priv); - if (!priv->port_mask) - return -ENODEV; + /* Initializes priv->port_mask which is used below */ + priv->port_mask = brcm_ahci_get_portmask(hpriv, priv); + if (!priv->port_mask) { + ret = -ENODEV; + goto out_disable_clks; + } + /* Must be done before ahci_platform_enable_phys() */ brcm_sata_phys_enable(priv); - hpriv = ahci_platform_get_resources(pdev, 0); - if (IS_ERR(hpriv)) - return PTR_ERR(hpriv); - hpriv->plat_data = priv; - hpriv->flags = AHCI_HFLAG_WAKE_BEFORE_STOP; - brcm_sata_alpm_init(hpriv); - ret = ahci_platform_enable_resources(hpriv); + ret = ahci_platform_enable_phys(hpriv); if (ret) - return ret; - - if (priv->quirks & BRCM_AHCI_QUIRK_NO_NCQ) - hpriv->flags |= AHCI_HFLAG_NO_NCQ; - hpriv->flags |= AHCI_HFLAG_NO_WRITE_TO_RO; + goto out_disable_phys; ret = ahci_platform_init_host(pdev, hpriv, &ahci_brcm_port_info, &ahci_platform_sht); if (ret) - return ret; + goto out_disable_platform_phys; dev_info(dev, "Broadcom AHCI SATA3 registered\n"); return 0; + +out_disable_platform_phys: + ahci_platform_disable_phys(hpriv); +out_disable_phys: + brcm_sata_phys_disable(priv); +out_disable_clks: + ahci_platform_disable_clks(hpriv); +out_reset: + if (!IS_ERR_OR_NULL(priv->rcdev)) + reset_control_assert(priv->rcdev); + return ret; } static int brcm_ahci_remove(struct platform_device *pdev) @@ -457,12 +512,12 @@ static int brcm_ahci_remove(struct platform_device *pdev) struct brcm_ahci_priv *priv = hpriv->plat_data; int ret; + brcm_sata_phys_disable(priv); + ret = ata_platform_remove_one(pdev); if (ret) return ret; - brcm_sata_phys_disable(priv); - return 0; } diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c index 8befce036af8..129556fcf6be 100644 --- a/drivers/ata/libahci_platform.c +++ b/drivers/ata/libahci_platform.c @@ -43,7 +43,7 @@ EXPORT_SYMBOL_GPL(ahci_platform_ops); * RETURNS: * 0 on success otherwise a negative error code */ -static int ahci_platform_enable_phys(struct ahci_host_priv *hpriv) +int ahci_platform_enable_phys(struct ahci_host_priv *hpriv) { int rc, i; @@ -74,6 +74,7 @@ disable_phys: } return rc; } +EXPORT_SYMBOL_GPL(ahci_platform_enable_phys); /** * ahci_platform_disable_phys - Disable PHYs @@ -81,7 +82,7 @@ disable_phys: * * This function disables all PHYs found in hpriv->phys. */ -static void ahci_platform_disable_phys(struct ahci_host_priv *hpriv) +void ahci_platform_disable_phys(struct ahci_host_priv *hpriv) { int i; @@ -90,6 +91,7 @@ static void ahci_platform_disable_phys(struct ahci_host_priv *hpriv) phy_exit(hpriv->phys[i]); } } +EXPORT_SYMBOL_GPL(ahci_platform_disable_phys); /** * ahci_platform_enable_clks - Enable platform clocks diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 74c9b3032d46..84b183a6424e 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -5325,6 +5325,30 @@ void ata_qc_complete(struct ata_queued_cmd *qc) } } +/** + * ata_qc_get_active - get bitmask of active qcs + * @ap: port in question + * + * LOCKING: + * spin_lock_irqsave(host lock) + * + * RETURNS: + * Bitmask of active qcs + */ +u64 ata_qc_get_active(struct ata_port *ap) +{ + u64 qc_active = ap->qc_active; + + /* ATA_TAG_INTERNAL is sent to hw as tag 0 */ + if (qc_active & (1ULL << ATA_TAG_INTERNAL)) { + qc_active |= (1 << 0); + qc_active &= ~(1ULL << ATA_TAG_INTERNAL); + } + + return qc_active; +} +EXPORT_SYMBOL_GPL(ata_qc_get_active); + /** * ata_qc_complete_multiple - Complete multiple qcs successfully * @ap: port in question diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index 8e9cb198fcd1..ca6c706e9c25 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c @@ -1278,7 +1278,7 @@ static void sata_fsl_host_intr(struct ata_port *ap) i, ioread32(hcr_base + CC), ioread32(hcr_base + CA)); } - ata_qc_complete_multiple(ap, ap->qc_active ^ done_mask); + ata_qc_complete_multiple(ap, ata_qc_get_active(ap) ^ done_mask); return; } else if ((ap->qc_active & (1ULL << ATA_TAG_INTERNAL))) { diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index ad385a113391..bde695a32097 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c @@ -2827,7 +2827,7 @@ static void mv_process_crpb_entries(struct ata_port *ap, struct mv_port_priv *pp } if (work_done) { - ata_qc_complete_multiple(ap, ap->qc_active ^ done_mask); + ata_qc_complete_multiple(ap, ata_qc_get_active(ap) ^ done_mask); /* Update the software queue position index in hardware */ writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 56946012d113..7510303111fa 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c @@ -984,7 +984,7 @@ static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) check_commands = 0; check_commands &= ~(1 << pos); } - ata_qc_complete_multiple(ap, ap->qc_active ^ done_mask); + ata_qc_complete_multiple(ap, ata_qc_get_active(ap) ^ done_mask); } } diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c index fd1e19f1a49f..3666afa639d1 100644 --- a/drivers/block/xen-blkback/blkback.c +++ b/drivers/block/xen-blkback/blkback.c @@ -936,6 +936,8 @@ next: out_of_memory: pr_alert("%s: out of memory\n", __func__); put_free_pages(ring, pages_to_gnt, segs_to_map); + for (i = last_map; i < num; i++) + pages[i]->handle = BLKBACK_INVALID_HANDLE; return -ENOMEM; } diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index b90dbcd99c03..c4cd68116e7f 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -171,6 +171,15 @@ static struct xen_blkif *xen_blkif_alloc(domid_t domid) blkif->domid = domid; atomic_set(&blkif->refcnt, 1); init_completion(&blkif->drain_complete); + + /* + * Because freeing back to the cache may be deferred, it is not + * safe to unload the module (and hence destroy the cache) until + * this has completed. To prevent premature unloading, take an + * extra module reference here and release only when the object + * has been freed back to the cache. + */ + __module_get(THIS_MODULE); INIT_WORK(&blkif->free_work, xen_blkif_deferred_free); return blkif; @@ -320,6 +329,7 @@ static void xen_blkif_free(struct xen_blkif *blkif) /* Make sure everything is drained before shutting down */ kmem_cache_free(xen_blkif_cachep, blkif); + module_put(THIS_MODULE); } int __init xen_blkif_interface_init(void) diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 23e606aaaea4..04cf767d0708 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -1200,7 +1200,7 @@ static int btusb_open(struct hci_dev *hdev) if (data->setup_on_usb) { err = data->setup_on_usb(hdev); if (err < 0) - return err; + goto setup_fail; } data->intf->needs_remote_wakeup = 1; @@ -1239,6 +1239,7 @@ done: failed: clear_bit(BTUSB_INTR_RUNNING, &data->flags); +setup_fail: usb_autopm_put_interface(data->intf); return err; } diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index e1dcb61aaff7..dded14d70e36 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -72,6 +72,8 @@ struct clk_core { unsigned long flags; bool orphan; bool rpm_enabled; + bool need_sync; + bool boot_enabled; unsigned int enable_count; unsigned int prepare_count; unsigned int protect_count; @@ -1196,6 +1198,10 @@ static void clk_unprepare_unused_subtree(struct clk_core *core) hlist_for_each_entry(child, &core->children, child_node) clk_unprepare_unused_subtree(child); + if (dev_has_sync_state(core->dev) && + !(core->flags & CLK_DONT_HOLD_STATE)) + return; + if (core->prepare_count) return; @@ -1227,6 +1233,10 @@ static void clk_disable_unused_subtree(struct clk_core *core) hlist_for_each_entry(child, &core->children, child_node) clk_disable_unused_subtree(child); + if (dev_has_sync_state(core->dev) && + !(core->flags & CLK_DONT_HOLD_STATE)) + return; + if (core->flags & CLK_OPS_PARENT_ENABLE) clk_core_prepare_enable(core->parent); @@ -1300,6 +1310,38 @@ static int clk_disable_unused(void) } late_initcall_sync(clk_disable_unused); +static void clk_unprepare_disable_dev_subtree(struct clk_core *core, + struct device *dev) +{ + struct clk_core *child; + + lockdep_assert_held(&prepare_lock); + + hlist_for_each_entry(child, &core->children, child_node) + clk_unprepare_disable_dev_subtree(child, dev); + + if (core->dev != dev || !core->need_sync) + return; + + clk_core_disable_unprepare(core); +} + +void clk_sync_state(struct device *dev) +{ + struct clk_core *core; + + clk_prepare_lock(); + + hlist_for_each_entry(core, &clk_root_list, child_node) + clk_unprepare_disable_dev_subtree(core, dev); + + hlist_for_each_entry(core, &clk_orphan_list, child_node) + clk_unprepare_disable_dev_subtree(core, dev); + + clk_prepare_unlock(); +} +EXPORT_SYMBOL_GPL(clk_sync_state); + static int clk_core_determine_round_nolock(struct clk_core *core, struct clk_rate_request *req) { @@ -1674,6 +1716,33 @@ static int clk_fetch_parent_index(struct clk_core *core, return i; } +static void clk_core_hold_state(struct clk_core *core) +{ + if (core->need_sync || !core->boot_enabled) + return; + + if (core->orphan || !dev_has_sync_state(core->dev)) + return; + + if (core->flags & CLK_DONT_HOLD_STATE) + return; + + core->need_sync = !clk_core_prepare_enable(core); +} + +static void __clk_core_update_orphan_hold_state(struct clk_core *core) +{ + struct clk_core *child; + + if (core->orphan) + return; + + clk_core_hold_state(core); + + hlist_for_each_entry(child, &core->children, child_node) + __clk_core_update_orphan_hold_state(child); +} + /* * Update the orphan status of @core and all its children. */ @@ -3619,6 +3688,8 @@ static int __clk_core_init(struct clk_core *core) rate = 0; core->rate = core->req_rate = rate; + core->boot_enabled = clk_core_is_enabled(core); + /* * Enable CLK_IS_CRITICAL clocks so newly added critical clocks * don't get accidentally disabled when walking the orphan tree and @@ -3634,6 +3705,8 @@ static int __clk_core_init(struct clk_core *core) clk_enable_unlock(flags); } + clk_core_hold_state(core); + /* * walk the list of orphan clocks and reparent any that newly finds a * parent. @@ -3653,6 +3726,7 @@ static int __clk_core_init(struct clk_core *core) __clk_set_parent_after(orphan, parent, NULL); __clk_recalc_accuracies(orphan); __clk_recalc_rates(orphan, 0); + __clk_core_update_orphan_hold_state(orphan); } } diff --git a/drivers/clocksource/timer-riscv.c b/drivers/clocksource/timer-riscv.c index 470c7ef02ea4..4b04ffbe5e7e 100644 --- a/drivers/clocksource/timer-riscv.c +++ b/drivers/clocksource/timer-riscv.c @@ -41,7 +41,7 @@ static unsigned long long riscv_clocksource_rdtime(struct clocksource *cs) return get_cycles64(); } -static u64 riscv_sched_clock(void) +static u64 notrace riscv_sched_clock(void) { return get_cycles64(); } diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 46f0eb1f88a9..8761fa99834c 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -551,26 +551,30 @@ static int devfreq_notifier_call(struct notifier_block *nb, unsigned long type, void *devp) { struct devfreq *devfreq = container_of(nb, struct devfreq, nb); - int ret; + int err = -EINVAL; mutex_lock(&devfreq->lock); devfreq->scaling_min_freq = find_available_min_freq(devfreq); - if (!devfreq->scaling_min_freq) { - mutex_unlock(&devfreq->lock); - return -EINVAL; - } + if (!devfreq->scaling_min_freq) + goto out; devfreq->scaling_max_freq = find_available_max_freq(devfreq); if (!devfreq->scaling_max_freq) { - mutex_unlock(&devfreq->lock); - return -EINVAL; + devfreq->scaling_max_freq = ULONG_MAX; + goto out; } - ret = update_devfreq(devfreq); - mutex_unlock(&devfreq->lock); + err = update_devfreq(devfreq); - return ret; +out: + mutex_unlock(&devfreq->lock); + if (err) + dev_err(devfreq->dev.parent, + "failed to update frequency from OPP notifier (%d)\n", + err); + + return NOTIFY_OK; } /** @@ -584,11 +588,6 @@ static void devfreq_dev_release(struct device *dev) struct devfreq *devfreq = to_devfreq(dev); mutex_lock(&devfreq_list_lock); - if (IS_ERR(find_device_devfreq(devfreq->dev.parent))) { - mutex_unlock(&devfreq_list_lock); - dev_warn(&devfreq->dev, "releasing devfreq which doesn't exist\n"); - return; - } list_del(&devfreq->node); mutex_unlock(&devfreq_list_lock); @@ -644,6 +643,7 @@ struct devfreq *devfreq_add_device(struct device *dev, devfreq->dev.parent = dev; devfreq->dev.class = devfreq_class; devfreq->dev.release = devfreq_dev_release; + INIT_LIST_HEAD(&devfreq->node); devfreq->profile = profile; strncpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN); devfreq->previous_freq = profile->initial_freq; @@ -1204,7 +1204,7 @@ static ssize_t available_governors_show(struct device *d, * The devfreq with immutable governor (e.g., passive) shows * only own governor. */ - if (df->governor->immutable) { + if (df->governor && df->governor->immutable) { count = scnprintf(&buf[count], DEVFREQ_NAME_LEN, "%s ", df->governor_name); /* diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c index cafb1cc065bb..bf95f1d551c5 100644 --- a/drivers/dma/dma-jz4780.c +++ b/drivers/dma/dma-jz4780.c @@ -1004,7 +1004,8 @@ static const struct jz4780_dma_soc_data jz4740_dma_soc_data = { static const struct jz4780_dma_soc_data jz4725b_dma_soc_data = { .nb_channels = 6, .transfer_ord_max = 5, - .flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC, + .flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC | + JZ_SOC_DATA_BREAK_LINKS, }; static const struct jz4780_dma_soc_data jz4770_dma_soc_data = { diff --git a/drivers/dma/virt-dma.c b/drivers/dma/virt-dma.c index ec4adf4260a0..256fc662c500 100644 --- a/drivers/dma/virt-dma.c +++ b/drivers/dma/virt-dma.c @@ -104,9 +104,8 @@ static void vchan_complete(unsigned long arg) dmaengine_desc_get_callback(&vd->tx, &cb); list_del(&vd->node); - vchan_vdesc_fini(vd); - dmaengine_desc_callback_invoke(&cb, &vd->tx_result); + vchan_vdesc_fini(vd); } } diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c index b132ab9ad607..715e491dfbc3 100644 --- a/drivers/firewire/net.c +++ b/drivers/firewire/net.c @@ -250,7 +250,11 @@ static int fwnet_header_cache(const struct neighbour *neigh, h = (struct fwnet_header *)((u8 *)hh->hh_data + HH_DATA_OFF(sizeof(*h))); h->h_proto = type; memcpy(h->h_dest, neigh->ha, net->addr_len); - hh->hh_len = FWNET_HLEN; + + /* Pairs with the READ_ONCE() in neigh_resolve_output(), + * neigh_hh_output() and neigh_update_hhs(). + */ + smp_store_release(&hh->hh_len, FWNET_HLEN); return 0; } diff --git a/drivers/firmware/arm_scmi/bus.c b/drivers/firmware/arm_scmi/bus.c index 92f843eaf1e0..7a30952b463d 100644 --- a/drivers/firmware/arm_scmi/bus.c +++ b/drivers/firmware/arm_scmi/bus.c @@ -135,8 +135,10 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol) return NULL; id = ida_simple_get(&scmi_bus_id, 1, 0, GFP_KERNEL); - if (id < 0) - goto free_mem; + if (id < 0) { + kfree(scmi_dev); + return NULL; + } scmi_dev->id = id; scmi_dev->protocol_id = protocol; @@ -154,8 +156,6 @@ scmi_device_create(struct device_node *np, struct device *parent, int protocol) put_dev: put_device(&scmi_dev->dev); ida_simple_remove(&scmi_bus_id, id); -free_mem: - kfree(scmi_dev); return NULL; } diff --git a/drivers/firmware/efi/rci2-table.c b/drivers/firmware/efi/rci2-table.c index 76b0c354a027..de1a9a1f9f14 100644 --- a/drivers/firmware/efi/rci2-table.c +++ b/drivers/firmware/efi/rci2-table.c @@ -81,6 +81,9 @@ static int __init efi_rci2_sysfs_init(void) struct kobject *tables_kobj; int ret = -ENOMEM; + if (rci2_table_phys == EFI_INVALID_TABLE_ADDR) + return 0; + rci2_base = memremap(rci2_table_phys, sizeof(struct rci2_table_global_hdr), MEMREMAP_WB); diff --git a/drivers/gpio/gpio-xtensa.c b/drivers/gpio/gpio-xtensa.c index 43d3fa5f511a..0fb2211f9573 100644 --- a/drivers/gpio/gpio-xtensa.c +++ b/drivers/gpio/gpio-xtensa.c @@ -44,15 +44,14 @@ static inline unsigned long enable_cp(unsigned long *cpenable) unsigned long flags; local_irq_save(flags); - RSR_CPENABLE(*cpenable); - WSR_CPENABLE(*cpenable | BIT(XCHAL_CP_ID_XTIOP)); - + *cpenable = xtensa_get_sr(cpenable); + xtensa_set_sr(*cpenable | BIT(XCHAL_CP_ID_XTIOP), cpenable); return flags; } static inline void disable_cp(unsigned long flags, unsigned long cpenable) { - WSR_CPENABLE(cpenable); + xtensa_set_sr(cpenable, cpenable); local_irq_restore(flags); } diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 104ed299d5ea..99d19f80440e 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -220,6 +220,14 @@ int gpiod_get_direction(struct gpio_desc *desc) chip = gpiod_to_chip(desc); offset = gpio_chip_hwgpio(desc); + /* + * Open drain emulation using input mode may incorrectly report + * input here, fix that up. + */ + if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) && + test_bit(FLAG_IS_OUT, &desc->flags)) + return 0; + if (!chip->get_direction) return -ENOTSUPP; diff --git a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c index 5850c8e34caa..97d11d792351 100644 --- a/drivers/gpu/drm/amd/amdgpu/df_v3_6.c +++ b/drivers/gpu/drm/amd/amdgpu/df_v3_6.c @@ -261,23 +261,29 @@ static void df_v3_6_update_medium_grain_clock_gating(struct amdgpu_device *adev, { u32 tmp; - /* Put DF on broadcast mode */ - adev->df_funcs->enable_broadcast_mode(adev, true); + if (adev->cg_flags & AMD_CG_SUPPORT_DF_MGCG) { + /* Put DF on broadcast mode */ + adev->df_funcs->enable_broadcast_mode(adev, true); - if (enable && (adev->cg_flags & AMD_CG_SUPPORT_DF_MGCG)) { - tmp = RREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater); - tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK; - tmp |= DF_V3_6_MGCG_ENABLE_15_CYCLE_DELAY; - WREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater, tmp); - } else { - tmp = RREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater); - tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK; - tmp |= DF_V3_6_MGCG_DISABLE; - WREG32_SOC15(DF, 0, mmDF_PIE_AON0_DfGlobalClkGater, tmp); + if (enable) { + tmp = RREG32_SOC15(DF, 0, + mmDF_PIE_AON0_DfGlobalClkGater); + tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK; + tmp |= DF_V3_6_MGCG_ENABLE_15_CYCLE_DELAY; + WREG32_SOC15(DF, 0, + mmDF_PIE_AON0_DfGlobalClkGater, tmp); + } else { + tmp = RREG32_SOC15(DF, 0, + mmDF_PIE_AON0_DfGlobalClkGater); + tmp &= ~DF_PIE_AON0_DfGlobalClkGater__MGCGMode_MASK; + tmp |= DF_V3_6_MGCG_DISABLE; + WREG32_SOC15(DF, 0, + mmDF_PIE_AON0_DfGlobalClkGater, tmp); + } + + /* Exit broadcast mode */ + adev->df_funcs->enable_broadcast_mode(adev, false); } - - /* Exit broadcast mode */ - adev->df_funcs->enable_broadcast_mode(adev, false); } static void df_v3_6_get_clockgating_state(struct amdgpu_device *adev, diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 87dd55e9d72b..cc88ba76a8d4 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -6184,7 +6184,23 @@ static void gfx_v8_0_ring_emit_fence_gfx(struct amdgpu_ring *ring, u64 addr, bool write64bit = flags & AMDGPU_FENCE_FLAG_64BIT; bool int_sel = flags & AMDGPU_FENCE_FLAG_INT; - /* EVENT_WRITE_EOP - flush caches, send int */ + /* Workaround for cache flush problems. First send a dummy EOP + * event down the pipe with seq one below. + */ + amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); + amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | + EOP_TC_ACTION_EN | + EOP_TC_WB_ACTION_EN | + EVENT_TYPE(CACHE_FLUSH_AND_INV_TS_EVENT) | + EVENT_INDEX(5))); + amdgpu_ring_write(ring, addr & 0xfffffffc); + amdgpu_ring_write(ring, (upper_32_bits(addr) & 0xffff) | + DATA_SEL(1) | INT_SEL(0)); + amdgpu_ring_write(ring, lower_32_bits(seq - 1)); + amdgpu_ring_write(ring, upper_32_bits(seq - 1)); + + /* Then send the real EOP event down the pipe: + * EVENT_WRITE_EOP - flush caches, send int */ amdgpu_ring_write(ring, PACKET3(PACKET3_EVENT_WRITE_EOP, 4)); amdgpu_ring_write(ring, (EOP_TCL1_ACTION_EN | EOP_TC_ACTION_EN | @@ -6926,7 +6942,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { 5 + /* COND_EXEC */ 7 + /* PIPELINE_SYNC */ VI_FLUSH_GPU_TLB_NUM_WREG * 5 + 9 + /* VM_FLUSH */ - 8 + /* FENCE for VM_FLUSH */ + 12 + /* FENCE for VM_FLUSH */ 20 + /* GDS switch */ 4 + /* double SWITCH_BUFFER, the first COND_EXEC jump to the place just @@ -6938,7 +6954,7 @@ static const struct amdgpu_ring_funcs gfx_v8_0_ring_funcs_gfx = { 31 + /* DE_META */ 3 + /* CNTX_CTRL */ 5 + /* HDP_INVL */ - 8 + 8 + /* FENCE x2 */ + 12 + 12 + /* FENCE x2 */ 2, /* SWITCH_BUFFER */ .emit_ib_size = 4, /* gfx_v8_0_ring_emit_ib_gfx */ .emit_ib = gfx_v8_0_ring_emit_ib_gfx, diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c index 067f5579f452..793aa8e8ec9a 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c @@ -373,7 +373,7 @@ bool dc_link_is_dp_sink_present(struct dc_link *link) if (GPIO_RESULT_OK != dal_ddc_open( ddc, GPIO_MODE_INPUT, GPIO_DDC_CONFIG_TYPE_MODE_I2C)) { - dal_gpio_destroy_ddc(&ddc); + dal_ddc_close(ddc); return present; } diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c index 5a583707d198..0ab890c927ec 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c @@ -3492,7 +3492,14 @@ void dp_set_fec_enable(struct dc_link *link, bool enable) if (link_enc->funcs->fec_set_enable && link->dpcd_caps.fec_cap.bits.FEC_CAPABLE) { if (link->fec_state == dc_link_fec_ready && enable) { - msleep(1); + /* Accord to DP spec, FEC enable sequence can first + * be transmitted anytime after 1000 LL codes have + * been transmitted on the link after link training + * completion. Using 1 lane RBR should have the maximum + * time for transmitting 1000 LL codes which is 6.173 us. + * So use 7 microseconds delay instead. + */ + udelay(7); link_enc->funcs->fec_set_enable(link_enc, true); link->fec_state = dc_link_fec_enabled; } else if (link->fec_state == dc_link_fec_enabled && !enable) { diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c index 78b2cc2e122f..3b7769a3e67e 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c @@ -1419,13 +1419,20 @@ enum dc_status dcn20_build_mapped_resource(const struct dc *dc, struct dc_state static void acquire_dsc(struct resource_context *res_ctx, const struct resource_pool *pool, - struct display_stream_compressor **dsc) + struct display_stream_compressor **dsc, + int pipe_idx) { int i; ASSERT(*dsc == NULL); *dsc = NULL; + if (pool->res_cap->num_dsc == pool->res_cap->num_opp) { + *dsc = pool->dscs[pipe_idx]; + res_ctx->is_dsc_acquired[pipe_idx] = true; + return; + } + /* Find first free DSC */ for (i = 0; i < pool->res_cap->num_dsc; i++) if (!res_ctx->is_dsc_acquired[i]) { @@ -1468,7 +1475,7 @@ static enum dc_status add_dsc_to_stream_resource(struct dc *dc, if (pipe_ctx->stream != dc_stream) continue; - acquire_dsc(&dc_ctx->res_ctx, pool, &pipe_ctx->stream_res.dsc); + acquire_dsc(&dc_ctx->res_ctx, pool, &pipe_ctx->stream_res.dsc, i); /* The number of DSCs can be less than the number of pipes */ if (!pipe_ctx->stream_res.dsc) { @@ -1669,7 +1676,7 @@ static bool dcn20_split_stream_for_odm( next_odm_pipe->stream_res.opp = pool->opps[next_odm_pipe->pipe_idx]; #ifdef CONFIG_DRM_AMD_DC_DSC_SUPPORT if (next_odm_pipe->stream->timing.flags.DSC == 1) { - acquire_dsc(res_ctx, pool, &next_odm_pipe->stream_res.dsc); + acquire_dsc(res_ctx, pool, &next_odm_pipe->stream_res.dsc, next_odm_pipe->pipe_idx); ASSERT(next_odm_pipe->stream_res.dsc); if (next_odm_pipe->stream_res.dsc == NULL) return false; diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_stream_encoder.c index 5ab9d6240498..e95025b1d14d 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_stream_encoder.c +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_stream_encoder.c @@ -492,15 +492,23 @@ void enc2_stream_encoder_dp_unblank( DP_VID_N_MUL, n_multiply); } - /* set DIG_START to 0x1 to reset FIFO */ + /* make sure stream is disabled before resetting steer fifo */ + REG_UPDATE(DP_VID_STREAM_CNTL, DP_VID_STREAM_ENABLE, false); + REG_WAIT(DP_VID_STREAM_CNTL, DP_VID_STREAM_STATUS, 0, 10, 5000); + /* set DIG_START to 0x1 to reset FIFO */ REG_UPDATE(DIG_FE_CNTL, DIG_START, 1); + udelay(1); /* write 0 to take the FIFO out of reset */ REG_UPDATE(DIG_FE_CNTL, DIG_START, 0); - /* switch DP encoder to CRTC data */ + /* switch DP encoder to CRTC data, but reset it the fifo first. It may happen + * that it overflows during mode transition, and sometimes doesn't recover. + */ + REG_UPDATE(DP_STEER_FIFO, DP_STEER_FIFO_RESET, 1); + udelay(10); REG_UPDATE(DP_STEER_FIFO, DP_STEER_FIFO_RESET, 0); diff --git a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c index de182185fe1f..b0e5e64df212 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c @@ -258,7 +258,7 @@ struct _vcs_dpi_soc_bounding_box_st dcn2_1_soc = { .vmm_page_size_bytes = 4096, .dram_clock_change_latency_us = 23.84, .return_bus_width_bytes = 64, - .dispclk_dppclk_vco_speed_mhz = 3550, + .dispclk_dppclk_vco_speed_mhz = 3600, .xfc_bus_transport_time_us = 4, .xfc_xbuf_latency_tolerance_us = 4, .use_urgent_burst_bw = 1, diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c index 58c091ab67b2..a066e9297777 100644 --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c @@ -844,6 +844,7 @@ static int smu_sw_init(void *handle) smu->smu_baco.platform_support = false; mutex_init(&smu->sensor_lock); + mutex_init(&smu->metrics_lock); smu->watermarks_bitmap = 0; smu->power_profile_mode = PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT; diff --git a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c index d493a3f8c07a..08a717a34bd6 100644 --- a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c +++ b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c @@ -910,18 +910,21 @@ static int arcturus_get_metrics_table(struct smu_context *smu, struct smu_table_context *smu_table= &smu->smu_table; int ret = 0; + mutex_lock(&smu->metrics_lock); if (!smu_table->metrics_time || time_after(jiffies, smu_table->metrics_time + HZ / 1000)) { ret = smu_update_table(smu, SMU_TABLE_SMU_METRICS, 0, (void *)smu_table->metrics_table, false); if (ret) { pr_info("Failed to export SMU metrics table!\n"); + mutex_unlock(&smu->metrics_lock); return ret; } smu_table->metrics_time = jiffies; } memcpy(metrics_table, smu_table->metrics_table, sizeof(SmuMetrics_t)); + mutex_unlock(&smu->metrics_lock); return ret; } @@ -1388,12 +1391,17 @@ static int arcturus_get_power_profile_mode(struct smu_context *smu, "VR", "COMPUTE", "CUSTOM"}; + static const char *title[] = { + "PROFILE_INDEX(NAME)"}; uint32_t i, size = 0; int16_t workload_type = 0; if (!smu->pm_enabled || !buf) return -EINVAL; + size += sprintf(buf + size, "%16s\n", + title[0]); + for (i = 0; i <= PP_SMC_POWER_PROFILE_CUSTOM; i++) { /* * Conv PP_SMC_POWER_PROFILE* to WORKLOAD_PPLIB_*_BIT diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h index 23171a4d9a31..5ad9a7878f6b 100644 --- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h @@ -345,6 +345,7 @@ struct smu_context const struct pptable_funcs *ppt_funcs; struct mutex mutex; struct mutex sensor_lock; + struct mutex metrics_lock; uint64_t pool_size; struct smu_table_context smu_table; diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c index 328e258a6895..7d913a06ebac 100644 --- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c @@ -547,17 +547,20 @@ static int navi10_get_metrics_table(struct smu_context *smu, struct smu_table_context *smu_table= &smu->smu_table; int ret = 0; + mutex_lock(&smu->metrics_lock); if (!smu_table->metrics_time || time_after(jiffies, smu_table->metrics_time + msecs_to_jiffies(100))) { ret = smu_update_table(smu, SMU_TABLE_SMU_METRICS, 0, (void *)smu_table->metrics_table, false); if (ret) { pr_info("Failed to export SMU metrics table!\n"); + mutex_unlock(&smu->metrics_lock); return ret; } smu_table->metrics_time = jiffies; } memcpy(metrics_table, smu_table->metrics_table, sizeof(SmuMetrics_t)); + mutex_unlock(&smu->metrics_lock); return ret; } diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c index 92c393f613d3..3c3f719971f7 100644 --- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c +++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c @@ -1691,17 +1691,20 @@ static int vega20_get_metrics_table(struct smu_context *smu, struct smu_table_context *smu_table= &smu->smu_table; int ret = 0; + mutex_lock(&smu->metrics_lock); if (!smu_table->metrics_time || time_after(jiffies, smu_table->metrics_time + HZ / 1000)) { ret = smu_update_table(smu, SMU_TABLE_SMU_METRICS, 0, (void *)smu_table->metrics_table, false); if (ret) { pr_info("Failed to export SMU metrics table!\n"); + mutex_unlock(&smu->metrics_lock); return ret; } smu_table->metrics_time = jiffies; } memcpy(metrics_table, smu_table->metrics_table, sizeof(SmuMetrics_t)); + mutex_unlock(&smu->metrics_lock); return ret; } diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index 06a506c29463..d564bfcab6a3 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -525,7 +525,8 @@ __unwind_incomplete_requests(struct intel_engine_cs *engine) */ if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &rq->fence.flags)) { - spin_lock(&rq->lock); + spin_lock_nested(&rq->lock, + SINGLE_DEPTH_NESTING); i915_request_cancel_breadcrumb(rq); spin_unlock(&rq->lock); } diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_dsi.c index f9c9e32b299c..35bb825d1918 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -935,11 +935,13 @@ static int mcde_dsi_bind(struct device *dev, struct device *master, for_each_available_child_of_node(dev->of_node, child) { panel = of_drm_find_panel(child); if (IS_ERR(panel)) { - dev_err(dev, "failed to find panel try bridge (%lu)\n", + dev_err(dev, "failed to find panel try bridge (%ld)\n", PTR_ERR(panel)); + panel = NULL; + bridge = of_drm_find_bridge(child); if (IS_ERR(bridge)) { - dev_err(dev, "failed to find bridge (%lu)\n", + dev_err(dev, "failed to find bridge (%ld)\n", PTR_ERR(bridge)); return PTR_ERR(bridge); } diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index a052364a5d74..edd45f434ccd 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -16,6 +16,7 @@ #include #include #include +#include /* * Power Management: diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c index b5b1a34f896f..d735ea7e2d88 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -326,9 +326,9 @@ nv50_outp_atomic_check_view(struct drm_encoder *encoder, * same size as the native one (e.g. different * refresh rate) */ - if (adjusted_mode->hdisplay == native_mode->hdisplay && - adjusted_mode->vdisplay == native_mode->vdisplay && - adjusted_mode->type & DRM_MODE_TYPE_DRIVER) + if (mode->hdisplay == native_mode->hdisplay && + mode->vdisplay == native_mode->vdisplay && + mode->type & DRM_MODE_TYPE_DRIVER) break; mode = native_mode; asyc->scaler.full = true; diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c index a442a955f98c..eb31c5b6c8e9 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.c +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c @@ -245,14 +245,22 @@ nouveau_conn_atomic_duplicate_state(struct drm_connector *connector) void nouveau_conn_reset(struct drm_connector *connector) { + struct nouveau_connector *nv_connector = nouveau_connector(connector); struct nouveau_conn_atom *asyc; - if (WARN_ON(!(asyc = kzalloc(sizeof(*asyc), GFP_KERNEL)))) - return; + if (drm_drv_uses_atomic_modeset(connector->dev)) { + if (WARN_ON(!(asyc = kzalloc(sizeof(*asyc), GFP_KERNEL)))) + return; + + if (connector->state) + nouveau_conn_atomic_destroy_state(connector, + connector->state); + + __drm_atomic_helper_connector_reset(connector, &asyc->state); + } else { + asyc = &nv_connector->properties_state; + } - if (connector->state) - nouveau_conn_atomic_destroy_state(connector, connector->state); - __drm_atomic_helper_connector_reset(connector, &asyc->state); asyc->dither.mode = DITHERING_MODE_AUTO; asyc->dither.depth = DITHERING_DEPTH_AUTO; asyc->scaler.mode = DRM_MODE_SCALE_NONE; @@ -276,8 +284,14 @@ void nouveau_conn_attach_properties(struct drm_connector *connector) { struct drm_device *dev = connector->dev; - struct nouveau_conn_atom *armc = nouveau_conn_atom(connector->state); struct nouveau_display *disp = nouveau_display(dev); + struct nouveau_connector *nv_connector = nouveau_connector(connector); + struct nouveau_conn_atom *armc; + + if (drm_drv_uses_atomic_modeset(connector->dev)) + armc = nouveau_conn_atom(connector->state); + else + armc = &nv_connector->properties_state; /* Init DVI-I specific properties. */ if (connector->connector_type == DRM_MODE_CONNECTOR_DVII) @@ -749,9 +763,9 @@ static int nouveau_connector_set_property(struct drm_connector *connector, struct drm_property *property, uint64_t value) { - struct nouveau_conn_atom *asyc = nouveau_conn_atom(connector->state); struct nouveau_connector *nv_connector = nouveau_connector(connector); struct nouveau_encoder *nv_encoder = nv_connector->detected_encoder; + struct nouveau_conn_atom *asyc = &nv_connector->properties_state; struct drm_encoder *encoder = to_drm_encoder(nv_encoder); int ret; diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.h b/drivers/gpu/drm/nouveau/nouveau_connector.h index f43a8d63aef8..de84fb4708c7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_connector.h +++ b/drivers/gpu/drm/nouveau/nouveau_connector.h @@ -29,6 +29,7 @@ #include +#include #include #include #include @@ -44,6 +45,60 @@ struct dcb_output; struct nouveau_backlight; #endif +#define nouveau_conn_atom(p) \ + container_of((p), struct nouveau_conn_atom, state) + +struct nouveau_conn_atom { + struct drm_connector_state state; + + struct { + /* The enum values specifically defined here match nv50/gf119 + * hw values, and the code relies on this. + */ + enum { + DITHERING_MODE_OFF = 0x00, + DITHERING_MODE_ON = 0x01, + DITHERING_MODE_DYNAMIC2X2 = 0x10 | DITHERING_MODE_ON, + DITHERING_MODE_STATIC2X2 = 0x18 | DITHERING_MODE_ON, + DITHERING_MODE_TEMPORAL = 0x20 | DITHERING_MODE_ON, + DITHERING_MODE_AUTO + } mode; + enum { + DITHERING_DEPTH_6BPC = 0x00, + DITHERING_DEPTH_8BPC = 0x02, + DITHERING_DEPTH_AUTO + } depth; + } dither; + + struct { + int mode; /* DRM_MODE_SCALE_* */ + struct { + enum { + UNDERSCAN_OFF, + UNDERSCAN_ON, + UNDERSCAN_AUTO, + } mode; + u32 hborder; + u32 vborder; + } underscan; + bool full; + } scaler; + + struct { + int color_vibrance; + int vibrant_hue; + } procamp; + + union { + struct { + bool dither:1; + bool scaler:1; + bool procamp:1; + }; + u8 mask; + } set; +}; + struct nouveau_connector { struct drm_connector base; enum dcb_connector_type type; @@ -63,6 +118,12 @@ struct nouveau_connector { #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT struct nouveau_backlight *backlight; #endif + /* + * Our connector property code expects a nouveau_conn_atom struct + * even on pre-nv50 where we do not support atomic. This embedded + * version gets used in the non atomic modeset case. + */ + struct nouveau_conn_atom properties_state; }; static inline struct nouveau_connector *nouveau_connector( @@ -121,61 +182,6 @@ extern int nouveau_ignorelid; extern int nouveau_duallink; extern int nouveau_hdmimhz; -#include -#define nouveau_conn_atom(p) \ - container_of((p), struct nouveau_conn_atom, state) - -struct nouveau_conn_atom { - struct drm_connector_state state; - - struct { - /* The enum values specifically defined here match nv50/gf119 - * hw values, and the code relies on this. - */ - enum { - DITHERING_MODE_OFF = 0x00, - DITHERING_MODE_ON = 0x01, - DITHERING_MODE_DYNAMIC2X2 = 0x10 | DITHERING_MODE_ON, - DITHERING_MODE_STATIC2X2 = 0x18 | DITHERING_MODE_ON, - DITHERING_MODE_TEMPORAL = 0x20 | DITHERING_MODE_ON, - DITHERING_MODE_AUTO - } mode; - enum { - DITHERING_DEPTH_6BPC = 0x00, - DITHERING_DEPTH_8BPC = 0x02, - DITHERING_DEPTH_AUTO - } depth; - } dither; - - struct { - int mode; /* DRM_MODE_SCALE_* */ - struct { - enum { - UNDERSCAN_OFF, - UNDERSCAN_ON, - UNDERSCAN_AUTO, - } mode; - u32 hborder; - u32 vborder; - } underscan; - bool full; - } scaler; - - struct { - int color_vibrance; - int vibrant_hue; - } procamp; - - union { - struct { - bool dither:1; - bool scaler:1; - bool procamp:1; - }; - u8 mask; - } set; -}; - void nouveau_conn_attach_properties(struct drm_connector *); void nouveau_conn_reset(struct drm_connector *); struct drm_connector_state * diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c index eb8071a4d6d0..9c3bdfd20337 100644 --- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c @@ -683,8 +683,6 @@ static void sun4i_hdmi_unbind(struct device *dev, struct device *master, struct sun4i_hdmi *hdmi = dev_get_drvdata(dev); cec_unregister_adapter(hdmi->cec_adap); - drm_connector_cleanup(&hdmi->connector); - drm_encoder_cleanup(&hdmi->encoder); i2c_del_adapter(hdmi->i2c); i2c_put_adapter(hdmi->ddc_i2c); clk_disable_unprepare(hdmi->mod_clk); diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c index 7608ee053114..ac44bf752ff1 100644 --- a/drivers/hid/i2c-hid/i2c-hid-core.c +++ b/drivers/hid/i2c-hid/i2c-hid-core.c @@ -48,6 +48,7 @@ #define I2C_HID_QUIRK_SET_PWR_WAKEUP_DEV BIT(0) #define I2C_HID_QUIRK_NO_IRQ_AFTER_RESET BIT(1) #define I2C_HID_QUIRK_BOGUS_IRQ BIT(4) +#define I2C_HID_QUIRK_RESET_ON_RESUME BIT(5) /* flags */ #define I2C_HID_STARTED 0 @@ -174,6 +175,8 @@ static const struct i2c_hid_quirks { I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, { USB_VENDOR_ID_ELAN, HID_ANY_ID, I2C_HID_QUIRK_BOGUS_IRQ }, + { USB_VENDOR_ID_ALPS_JP, HID_ANY_ID, + I2C_HID_QUIRK_RESET_ON_RESUME }, { 0, 0 } }; @@ -1214,8 +1217,15 @@ static int i2c_hid_resume(struct device *dev) * solves "incomplete reports" on Raydium devices 2386:3118 and * 2386:4B33 and fixes various SIS touchscreens no longer sending * data after a suspend/resume. + * + * However some ALPS touchpads generate IRQ storm without reset, so + * let's still reset them here. */ - ret = i2c_hid_set_power(client, I2C_HID_PWR_ON); + if (ihid->quirks & I2C_HID_QUIRK_RESET_ON_RESUME) + ret = i2c_hid_hwreset(client); + else + ret = i2c_hid_set_power(client, I2C_HID_PWR_ON); + if (ret) return ret; diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c index 2e37f8a6d8cf..be661396095c 100644 --- a/drivers/iio/accel/st_accel_core.c +++ b/drivers/iio/accel/st_accel_core.c @@ -993,6 +993,7 @@ static const struct iio_trigger_ops st_accel_trigger_ops = { #define ST_ACCEL_TRIGGER_OPS NULL #endif +#ifdef CONFIG_ACPI static const struct iio_mount_matrix * get_mount_matrix(const struct iio_dev *indio_dev, const struct iio_chan_spec *chan) @@ -1013,7 +1014,6 @@ static const struct iio_chan_spec_ext_info mount_matrix_ext_info[] = { static int apply_acpi_orientation(struct iio_dev *indio_dev, struct iio_chan_spec *channels) { -#ifdef CONFIG_ACPI struct st_sensor_data *adata = iio_priv(indio_dev); struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; struct acpi_device *adev; @@ -1141,10 +1141,14 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev, out: kfree(buffer.pointer); return ret; -#else /* !CONFIG_ACPI */ - return 0; -#endif } +#else /* !CONFIG_ACPI */ +static int apply_acpi_orientation(struct iio_dev *indio_dev, + struct iio_chan_spec *channels) +{ + return 0; +} +#endif /* * st_accel_get_settings() - get sensor settings from device name diff --git a/drivers/iio/adc/max9611.c b/drivers/iio/adc/max9611.c index da073d72f649..e480529b3f04 100644 --- a/drivers/iio/adc/max9611.c +++ b/drivers/iio/adc/max9611.c @@ -89,6 +89,12 @@ #define MAX9611_TEMP_SCALE_NUM 1000000 #define MAX9611_TEMP_SCALE_DIV 2083 +/* + * Conversion time is 2 ms (typically) at Ta=25 degreeC + * No maximum value is known, so play it safe. + */ +#define MAX9611_CONV_TIME_US_RANGE 3000, 3300 + struct max9611_dev { struct device *dev; struct i2c_client *i2c_client; @@ -236,11 +242,9 @@ static int max9611_read_single(struct max9611_dev *max9611, return ret; } - /* - * need a delay here to make register configuration - * stabilize. 1 msec at least, from empirical testing. - */ - usleep_range(1000, 2000); + /* need a delay here to make register configuration stabilize. */ + + usleep_range(MAX9611_CONV_TIME_US_RANGE); ret = i2c_smbus_read_word_swapped(max9611->i2c_client, reg_addr); if (ret < 0) { @@ -507,7 +511,7 @@ static int max9611_init(struct max9611_dev *max9611) MAX9611_REG_CTRL2, 0); return ret; } - usleep_range(1000, 2000); + usleep_range(MAX9611_CONV_TIME_US_RANGE); return 0; } diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index d78f67623f24..50052e9a1731 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -4736,6 +4736,7 @@ err_ib: err: unregister_netdevice_notifier(&cma_nb); ib_sa_unregister_client(&sa_client); + unregister_pernet_subsys(&cma_pernet_operations); err_wq: destroy_workqueue(cma_wq); return ret; diff --git a/drivers/infiniband/core/counters.c b/drivers/infiniband/core/counters.c index 680ad27f497d..023478107f0e 100644 --- a/drivers/infiniband/core/counters.c +++ b/drivers/infiniband/core/counters.c @@ -282,6 +282,9 @@ int rdma_counter_bind_qp_auto(struct ib_qp *qp, u8 port) struct rdma_counter *counter; int ret; + if (!qp->res.valid) + return 0; + if (!rdma_is_port_valid(dev, port)) return -EINVAL; diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c index 8d2f1e38b891..907d99822bf0 100644 --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c @@ -3008,16 +3008,17 @@ static void mlx4_ib_remove(struct mlx4_dev *dev, void *ibdev_ptr) ibdev->ib_active = false; flush_workqueue(wq); - mlx4_ib_close_sriov(ibdev); - mlx4_ib_mad_cleanup(ibdev); - ib_unregister_device(&ibdev->ib_dev); - mlx4_ib_diag_cleanup(ibdev); if (ibdev->iboe.nb.notifier_call) { if (unregister_netdevice_notifier(&ibdev->iboe.nb)) pr_warn("failure unregistering notifier\n"); ibdev->iboe.nb.notifier_call = NULL; } + mlx4_ib_close_sriov(ibdev); + mlx4_ib_mad_cleanup(ibdev); + ib_unregister_device(&ibdev->ib_dev); + mlx4_ib_diag_cleanup(ibdev); + mlx4_qp_release_range(dev, ibdev->steer_qpn_base, ibdev->steer_qpn_count); kfree(ibdev->ib_uc_qpns_bitmap); diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index 831539419c30..e1cfbedefcbc 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -3548,10 +3548,6 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev, } INIT_LIST_HEAD(&handler->list); - if (dst) { - memcpy(&dest_arr[0], dst, sizeof(*dst)); - dest_num++; - } for (spec_index = 0; spec_index < flow_attr->num_of_specs; spec_index++) { err = parse_flow_attr(dev->mdev, spec, @@ -3564,6 +3560,11 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev, ib_flow += ((union ib_flow_spec *)ib_flow)->size; } + if (dst && !(flow_act.action & MLX5_FLOW_CONTEXT_ACTION_DROP)) { + memcpy(&dest_arr[0], dst, sizeof(*dst)); + dest_num++; + } + if (!flow_is_multicast_only(flow_attr)) set_underlay_qp(dev, spec, underlay_qpn); @@ -3604,10 +3605,8 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev, } if (flow_act.action & MLX5_FLOW_CONTEXT_ACTION_DROP) { - if (!(flow_act.action & MLX5_FLOW_CONTEXT_ACTION_COUNT)) { + if (!dest_num) rule_dst = NULL; - dest_num = 0; - } } else { if (is_egress) flow_act.action |= MLX5_FLOW_CONTEXT_ACTION_ALLOW; diff --git a/drivers/infiniband/sw/rxe/rxe_recv.c b/drivers/infiniband/sw/rxe/rxe_recv.c index f9a492ed900b..831ad578a7b2 100644 --- a/drivers/infiniband/sw/rxe/rxe_recv.c +++ b/drivers/infiniband/sw/rxe/rxe_recv.c @@ -389,7 +389,7 @@ void rxe_rcv(struct sk_buff *skb) calc_icrc = rxe_icrc_hdr(pkt, skb); calc_icrc = rxe_crc32(rxe, calc_icrc, (u8 *)payload_addr(pkt), - payload_size(pkt)); + payload_size(pkt) + bth_pad(pkt)); calc_icrc = (__force u32)cpu_to_be32(~calc_icrc); if (unlikely(calc_icrc != pack_icrc)) { if (skb->protocol == htons(ETH_P_IPV6)) diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c index c5d9b558fa90..e5031172c019 100644 --- a/drivers/infiniband/sw/rxe/rxe_req.c +++ b/drivers/infiniband/sw/rxe/rxe_req.c @@ -500,6 +500,12 @@ static int fill_packet(struct rxe_qp *qp, struct rxe_send_wqe *wqe, if (err) return err; } + if (bth_pad(pkt)) { + u8 *pad = payload_addr(pkt) + paylen; + + memset(pad, 0, bth_pad(pkt)); + crc = rxe_crc32(rxe, crc, pad, bth_pad(pkt)); + } } p = payload_addr(pkt) + paylen + bth_pad(pkt); diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c index 1cbfbd98eb22..c4a8195bf670 100644 --- a/drivers/infiniband/sw/rxe/rxe_resp.c +++ b/drivers/infiniband/sw/rxe/rxe_resp.c @@ -732,6 +732,13 @@ static enum resp_states read_reply(struct rxe_qp *qp, if (err) pr_err("Failed copying memory\n"); + if (bth_pad(&ack_pkt)) { + struct rxe_dev *rxe = to_rdev(qp->ibqp.device); + u8 *pad = payload_addr(&ack_pkt) + payload; + + memset(pad, 0, bth_pad(&ack_pkt)); + icrc = rxe_crc32(rxe, icrc, pad, bth_pad(&ack_pkt)); + } p = payload_addr(&ack_pkt) + payload + bth_pad(&ack_pkt); *p = ~icrc; diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c index 9b159132405d..dca88f9fdf29 100644 --- a/drivers/iommu/intel-svm.c +++ b/drivers/iommu/intel-svm.c @@ -104,11 +104,7 @@ static void intel_flush_svm_range_dev (struct intel_svm *svm, struct intel_svm_d { struct qi_desc desc; - /* - * Do PASID granu IOTLB invalidation if page selective capability is - * not available. - */ - if (pages == -1 || !cap_pgsel_inv(svm->iommu->cap)) { + if (pages == -1) { desc.qw0 = QI_EIOTLB_PASID(svm->pasid) | QI_EIOTLB_DID(sdev->did) | QI_EIOTLB_GRAN(QI_GRAN_NONG_PASID) | diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index bb29aeefcbd0..c7137f50bd1d 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -2781,7 +2781,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr, write_targets++; } } - if (bio->bi_end_io) { + if (rdev && bio->bi_end_io) { atomic_inc(&rdev->nr_pending); bio->bi_iter.bi_sector = sector_nr + rdev->data_offset; bio_set_dev(bio, rdev->bdev); diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 12a8ce83786e..36cd7c2fbf40 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -5726,7 +5726,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi) do_flush = false; } - if (!sh->batch_head) + if (!sh->batch_head || sh == sh->batch_head) set_bit(STRIPE_HANDLE, &sh->state); clear_bit(STRIPE_DELAYED, &sh->state); if ((!sh->batch_head || sh == sh->batch_head) && diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c index 5ef7daeb8cbd..b14c09cd9593 100644 --- a/drivers/media/cec/cec-adap.c +++ b/drivers/media/cec/cec-adap.c @@ -378,7 +378,8 @@ static void cec_data_cancel(struct cec_data *data, u8 tx_status) } else { list_del_init(&data->list); if (!(data->msg.tx_status & CEC_TX_STATUS_OK)) - data->adap->transmit_queue_sz--; + if (!WARN_ON(!data->adap->transmit_queue_sz)) + data->adap->transmit_queue_sz--; } if (data->msg.tx_status & CEC_TX_STATUS_OK) { @@ -430,6 +431,14 @@ static void cec_flush(struct cec_adapter *adap) * need to do anything special in that case. */ } + /* + * If something went wrong and this counter isn't what it should + * be, then this will reset it back to 0. Warn if it is not 0, + * since it indicates a bug, either in this framework or in a + * CEC driver. + */ + if (WARN_ON(adap->transmit_queue_sz)) + adap->transmit_queue_sz = 0; } /* @@ -454,7 +463,7 @@ int cec_thread_func(void *_adap) bool timeout = false; u8 attempts; - if (adap->transmitting) { + if (adap->transmit_in_progress) { int err; /* @@ -489,7 +498,7 @@ int cec_thread_func(void *_adap) goto unlock; } - if (adap->transmitting && timeout) { + if (adap->transmit_in_progress && timeout) { /* * If we timeout, then log that. Normally this does * not happen and it is an indication of a faulty CEC @@ -498,14 +507,18 @@ int cec_thread_func(void *_adap) * so much traffic on the bus that the adapter was * unable to transmit for CEC_XFER_TIMEOUT_MS (2.1s). */ - pr_warn("cec-%s: message %*ph timed out\n", adap->name, - adap->transmitting->msg.len, - adap->transmitting->msg.msg); + if (adap->transmitting) { + pr_warn("cec-%s: message %*ph timed out\n", adap->name, + adap->transmitting->msg.len, + adap->transmitting->msg.msg); + /* Just give up on this. */ + cec_data_cancel(adap->transmitting, + CEC_TX_STATUS_TIMEOUT); + } else { + pr_warn("cec-%s: transmit timed out\n", adap->name); + } adap->transmit_in_progress = false; adap->tx_timeouts++; - /* Just give up on this. */ - cec_data_cancel(adap->transmitting, - CEC_TX_STATUS_TIMEOUT); goto unlock; } @@ -520,7 +533,8 @@ int cec_thread_func(void *_adap) data = list_first_entry(&adap->transmit_queue, struct cec_data, list); list_del_init(&data->list); - adap->transmit_queue_sz--; + if (!WARN_ON(!data->adap->transmit_queue_sz)) + adap->transmit_queue_sz--; /* Make this the current transmitting message */ adap->transmitting = data; @@ -1083,11 +1097,11 @@ void cec_received_msg_ts(struct cec_adapter *adap, valid_la = false; else if (!cec_msg_is_broadcast(msg) && !(dir_fl & DIRECTED)) valid_la = false; - else if (cec_msg_is_broadcast(msg) && !(dir_fl & BCAST1_4)) + else if (cec_msg_is_broadcast(msg) && !(dir_fl & BCAST)) valid_la = false; else if (cec_msg_is_broadcast(msg) && - adap->log_addrs.cec_version >= CEC_OP_CEC_VERSION_2_0 && - !(dir_fl & BCAST2_0)) + adap->log_addrs.cec_version < CEC_OP_CEC_VERSION_2_0 && + !(dir_fl & BCAST1_4)) valid_la = false; } if (valid_la && min_len) { diff --git a/drivers/media/usb/b2c2/flexcop-usb.c b/drivers/media/usb/b2c2/flexcop-usb.c index d1331f828108..039963a7765b 100644 --- a/drivers/media/usb/b2c2/flexcop-usb.c +++ b/drivers/media/usb/b2c2/flexcop-usb.c @@ -295,7 +295,7 @@ static int flexcop_usb_i2c_req(struct flexcop_i2c_adapter *i2c, mutex_unlock(&fc_usb->data_mutex); - return 0; + return ret; } /* actual bus specific access functions, diff --git a/drivers/media/usb/dvb-usb/af9005.c b/drivers/media/usb/dvb-usb/af9005.c index 02697d86e8c1..ac93e88d7038 100644 --- a/drivers/media/usb/dvb-usb/af9005.c +++ b/drivers/media/usb/dvb-usb/af9005.c @@ -976,8 +976,9 @@ static int af9005_identify_state(struct usb_device *udev, else if (reply == 0x02) *cold = 0; else - return -EIO; - deb_info("Identify state cold = %d\n", *cold); + ret = -EIO; + if (!ret) + deb_info("Identify state cold = %d\n", *cold); err: kfree(buf); diff --git a/drivers/media/usb/pulse8-cec/pulse8-cec.c b/drivers/media/usb/pulse8-cec/pulse8-cec.c index ac88ade94cda..59609556d969 100644 --- a/drivers/media/usb/pulse8-cec/pulse8-cec.c +++ b/drivers/media/usb/pulse8-cec/pulse8-cec.c @@ -116,6 +116,7 @@ struct pulse8 { unsigned int vers; struct completion cmd_done; struct work_struct work; + u8 work_result; struct delayed_work ping_eeprom_work; struct cec_msg rx_msg; u8 data[DATA_SIZE]; @@ -137,8 +138,10 @@ static void pulse8_irq_work_handler(struct work_struct *work) { struct pulse8 *pulse8 = container_of(work, struct pulse8, work); + u8 result = pulse8->work_result; - switch (pulse8->data[0] & 0x3f) { + pulse8->work_result = 0; + switch (result & 0x3f) { case MSGCODE_FRAME_DATA: cec_received_msg(pulse8->adap, &pulse8->rx_msg); break; @@ -172,12 +175,12 @@ static irqreturn_t pulse8_interrupt(struct serio *serio, unsigned char data, pulse8->escape = false; } else if (data == MSGEND) { struct cec_msg *msg = &pulse8->rx_msg; + u8 msgcode = pulse8->buf[0]; if (debug) dev_info(pulse8->dev, "received: %*ph\n", pulse8->idx, pulse8->buf); - pulse8->data[0] = pulse8->buf[0]; - switch (pulse8->buf[0] & 0x3f) { + switch (msgcode & 0x3f) { case MSGCODE_FRAME_START: msg->len = 1; msg->msg[0] = pulse8->buf[1]; @@ -186,14 +189,20 @@ static irqreturn_t pulse8_interrupt(struct serio *serio, unsigned char data, if (msg->len == CEC_MAX_MSG_SIZE) break; msg->msg[msg->len++] = pulse8->buf[1]; - if (pulse8->buf[0] & MSGCODE_FRAME_EOM) + if (msgcode & MSGCODE_FRAME_EOM) { + WARN_ON(pulse8->work_result); + pulse8->work_result = msgcode; schedule_work(&pulse8->work); + break; + } break; case MSGCODE_TRANSMIT_SUCCEEDED: case MSGCODE_TRANSMIT_FAILED_LINE: case MSGCODE_TRANSMIT_FAILED_ACK: case MSGCODE_TRANSMIT_FAILED_TIMEOUT_DATA: case MSGCODE_TRANSMIT_FAILED_TIMEOUT_LINE: + WARN_ON(pulse8->work_result); + pulse8->work_result = msgcode; schedule_work(&pulse8->work); break; case MSGCODE_HIGH_ERROR: diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c index 4e8e80ac8341..9cec5c216e1f 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c @@ -973,6 +973,8 @@ static bool ath9k_rx_prepare(struct ath9k_htc_priv *priv, struct ath_htc_rx_status *rxstatus; struct ath_rx_status rx_stats; bool decrypt_error = false; + __be16 rs_datalen; + bool is_phyerr; if (skb->len < HTC_RX_FRAME_HEADER_SIZE) { ath_err(common, "Corrupted RX frame, dropping (len: %d)\n", @@ -982,11 +984,24 @@ static bool ath9k_rx_prepare(struct ath9k_htc_priv *priv, rxstatus = (struct ath_htc_rx_status *)skb->data; - if (be16_to_cpu(rxstatus->rs_datalen) - - (skb->len - HTC_RX_FRAME_HEADER_SIZE) != 0) { + rs_datalen = be16_to_cpu(rxstatus->rs_datalen); + if (unlikely(rs_datalen - + (skb->len - HTC_RX_FRAME_HEADER_SIZE) != 0)) { ath_err(common, "Corrupted RX data len, dropping (dlen: %d, skblen: %d)\n", - rxstatus->rs_datalen, skb->len); + rs_datalen, skb->len); + goto rx_next; + } + + is_phyerr = rxstatus->rs_status & ATH9K_RXERR_PHY; + /* + * Discard zero-length packets and packets smaller than an ACK + * which are not PHY_ERROR (short radar pulses have a length of 3) + */ + if (unlikely(!rs_datalen || (rs_datalen < 10 && !is_phyerr))) { + ath_warn(common, + "Short RX data len, dropping (dlen: %d)\n", + rs_datalen); goto rx_next; } @@ -1011,7 +1026,7 @@ static bool ath9k_rx_prepare(struct ath9k_htc_priv *priv, * Process PHY errors and return so that the packet * can be dropped. */ - if (rx_stats.rs_status & ATH9K_RXERR_PHY) { + if (unlikely(is_phyerr)) { /* TODO: Not using DFS processing now. */ if (ath_cmn_process_fft(&priv->spec_priv, hdr, &rx_stats, rx_status->mactime)) { diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 265f89e11d8b..59474bd0c728 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -342,7 +342,8 @@ nvme_fc_register_localport(struct nvme_fc_port_info *pinfo, !template->ls_req || !template->fcp_io || !template->ls_abort || !template->fcp_abort || !template->max_hw_queues || !template->max_sgl_segments || - !template->max_dif_sgl_segments || !template->dma_boundary) { + !template->max_dif_sgl_segments || !template->dma_boundary || + !template->module) { ret = -EINVAL; goto out_reghost_failed; } @@ -2015,6 +2016,7 @@ nvme_fc_ctrl_free(struct kref *ref) { struct nvme_fc_ctrl *ctrl = container_of(ref, struct nvme_fc_ctrl, ref); + struct nvme_fc_lport *lport = ctrl->lport; unsigned long flags; if (ctrl->ctrl.tagset) { @@ -2041,6 +2043,7 @@ nvme_fc_ctrl_free(struct kref *ref) if (ctrl->ctrl.opts) nvmf_free_options(ctrl->ctrl.opts); kfree(ctrl); + module_put(lport->ops->module); } static void @@ -2907,10 +2910,22 @@ nvme_fc_reconnect_or_delete(struct nvme_fc_ctrl *ctrl, int status) static void __nvme_fc_terminate_io(struct nvme_fc_ctrl *ctrl) { - nvme_stop_keep_alive(&ctrl->ctrl); + /* + * if state is connecting - the error occurred as part of a + * reconnect attempt. The create_association error paths will + * clean up any outstanding io. + * + * if it's a different state - ensure all pending io is + * terminated. Given this can delay while waiting for the + * aborted io to return, we recheck adapter state below + * before changing state. + */ + if (ctrl->ctrl.state != NVME_CTRL_CONNECTING) { + nvme_stop_keep_alive(&ctrl->ctrl); - /* will block will waiting for io to terminate */ - nvme_fc_delete_association(ctrl); + /* will block will waiting for io to terminate */ + nvme_fc_delete_association(ctrl); + } if (ctrl->ctrl.state != NVME_CTRL_CONNECTING && !nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) @@ -3056,10 +3071,15 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts, goto out_fail; } + if (!try_module_get(lport->ops->module)) { + ret = -EUNATCH; + goto out_free_ctrl; + } + idx = ida_simple_get(&nvme_fc_ctrl_cnt, 0, 0, GFP_KERNEL); if (idx < 0) { ret = -ENOSPC; - goto out_free_ctrl; + goto out_mod_put; } ctrl->ctrl.opts = opts; @@ -3212,6 +3232,8 @@ out_free_queues: out_free_ida: put_device(ctrl->dev); ida_simple_remove(&nvme_fc_ctrl_cnt, ctrl->cnum); +out_mod_put: + module_put(lport->ops->module); out_free_ctrl: kfree(ctrl); out_fail: diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 869f462e6b6e..14d513087a14 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -68,14 +68,14 @@ static int io_queue_depth = 1024; module_param_cb(io_queue_depth, &io_queue_depth_ops, &io_queue_depth, 0644); MODULE_PARM_DESC(io_queue_depth, "set io queue depth, should >= 2"); -static int write_queues; -module_param(write_queues, int, 0644); +static unsigned int write_queues; +module_param(write_queues, uint, 0644); MODULE_PARM_DESC(write_queues, "Number of queues to use for writes. If not set, reads and writes " "will share a queue set."); -static int poll_queues; -module_param(poll_queues, int, 0644); +static unsigned int poll_queues; +module_param(poll_queues, uint, 0644); MODULE_PARM_DESC(poll_queues, "Number of queues to use for polled IO."); struct nvme_dev; @@ -2060,7 +2060,6 @@ static int nvme_setup_irqs(struct nvme_dev *dev, unsigned int nr_io_queues) .priv = dev, }; unsigned int irq_queues, this_p_queues; - unsigned int nr_cpus = num_possible_cpus(); /* * Poll queues don't need interrupts, but we need at least one IO @@ -2071,10 +2070,7 @@ static int nvme_setup_irqs(struct nvme_dev *dev, unsigned int nr_io_queues) this_p_queues = nr_io_queues - 1; irq_queues = 1; } else { - if (nr_cpus < nr_io_queues - this_p_queues) - irq_queues = nr_cpus + 1; - else - irq_queues = nr_io_queues - this_p_queues + 1; + irq_queues = nr_io_queues - this_p_queues + 1; } dev->io_queues[HCTX_TYPE_POLL] = this_p_queues; diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c index b50b53db3746..1c50af6219f3 100644 --- a/drivers/nvme/target/fcloop.c +++ b/drivers/nvme/target/fcloop.c @@ -850,6 +850,7 @@ fcloop_targetport_delete(struct nvmet_fc_target_port *targetport) #define FCLOOP_DMABOUND_4G 0xFFFFFFFF static struct nvme_fc_port_template fctemplate = { + .module = THIS_MODULE, .localport_delete = fcloop_localport_delete, .remoteport_delete = fcloop_remoteport_delete, .create_queue = fcloop_create_queue, diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index c423e94baf0f..9617b7df7c4d 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -305,7 +305,6 @@ static int add_changeset_property(struct overlay_changeset *ovcs, { struct property *new_prop = NULL, *prop; int ret = 0; - bool check_for_non_overlay_node = false; if (target->in_livetree) if (!of_prop_cmp(overlay_prop->name, "name") || @@ -318,6 +317,25 @@ static int add_changeset_property(struct overlay_changeset *ovcs, else prop = NULL; + if (prop) { + if (!of_prop_cmp(prop->name, "#address-cells")) { + if (!of_prop_val_eq(prop, overlay_prop)) { + pr_err("ERROR: changing value of #address-cells is not allowed in %pOF\n", + target->np); + ret = -EINVAL; + } + return ret; + + } else if (!of_prop_cmp(prop->name, "#size-cells")) { + if (!of_prop_val_eq(prop, overlay_prop)) { + pr_err("ERROR: changing value of #size-cells is not allowed in %pOF\n", + target->np); + ret = -EINVAL; + } + return ret; + } + } + if (is_symbols_prop) { if (prop) return -EINVAL; @@ -330,33 +348,18 @@ static int add_changeset_property(struct overlay_changeset *ovcs, return -ENOMEM; if (!prop) { - check_for_non_overlay_node = true; if (!target->in_livetree) { new_prop->next = target->np->deadprops; target->np->deadprops = new_prop; } ret = of_changeset_add_property(&ovcs->cset, target->np, new_prop); - } else if (!of_prop_cmp(prop->name, "#address-cells")) { - if (!of_prop_val_eq(prop, new_prop)) { - pr_err("ERROR: changing value of #address-cells is not allowed in %pOF\n", - target->np); - ret = -EINVAL; - } - } else if (!of_prop_cmp(prop->name, "#size-cells")) { - if (!of_prop_val_eq(prop, new_prop)) { - pr_err("ERROR: changing value of #size-cells is not allowed in %pOF\n", - target->np); - ret = -EINVAL; - } } else { - check_for_non_overlay_node = true; ret = of_changeset_update_property(&ovcs->cset, target->np, new_prop); } - if (check_for_non_overlay_node && - !of_node_check_flag(target->np, OF_OVERLAY)) + if (!of_node_check_flag(target->np, OF_OVERLAY)) pr_err("WARNING: memory leak will occur if overlay removed, property: %pOF/%s\n", target->np, new_prop->name); diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 4fbe5b576dd8..958d5bd3b33e 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5855,6 +5855,24 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode, return 0; } +#ifdef CONFIG_ACPI +bool pci_pr3_present(struct pci_dev *pdev) +{ + struct acpi_device *adev; + + if (acpi_disabled) + return false; + + adev = ACPI_COMPANION(&pdev->dev); + if (!adev) + return false; + + return adev->power.flags.power_resources && + acpi_has_method(adev->handle, "_PR3"); +} +EXPORT_SYMBOL_GPL(pci_pr3_present); +#endif + /** * pci_add_dma_alias - Add a DMA devfn alias for a device * @dev: the PCI device for which alias is added diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/renesas/phy-rcar-gen3-usb2.c index 6fd1390fd06e..bfb22f868857 100644 --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c @@ -615,7 +615,7 @@ static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev) return PTR_ERR(channel->base); /* call request_irq for OTG */ - irq = platform_get_irq(pdev, 0); + irq = platform_get_irq_optional(pdev, 0); if (irq >= 0) { INIT_WORK(&channel->work, rcar_gen3_phy_usb2_work); irq = devm_request_irq(dev, irq, rcar_gen3_phy_usb2_irq, diff --git a/drivers/platform/x86/pmc_atom.c b/drivers/platform/x86/pmc_atom.c index 07d1b911e72f..52ef1419b671 100644 --- a/drivers/platform/x86/pmc_atom.c +++ b/drivers/platform/x86/pmc_atom.c @@ -429,6 +429,14 @@ static const struct dmi_system_id critclk_systems[] = { DMI_MATCH(DMI_PRODUCT_VERSION, "6AV7882-0"), }, }, + { + .ident = "CONNECT X300", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SIEMENS AG"), + DMI_MATCH(DMI_PRODUCT_VERSION, "A5E45074588"), + }, + }, + { /*sentinel*/ } }; diff --git a/drivers/regulator/ab8500.c b/drivers/regulator/ab8500.c index efb2f01a9101..f60e1b26c2d2 100644 --- a/drivers/regulator/ab8500.c +++ b/drivers/regulator/ab8500.c @@ -953,23 +953,6 @@ static struct ab8500_regulator_info .update_val_idle = 0x82, .update_val_normal = 0x02, }, - [AB8505_LDO_USB] = { - .desc = { - .name = "LDO-USB", - .ops = &ab8500_regulator_mode_ops, - .type = REGULATOR_VOLTAGE, - .id = AB8505_LDO_USB, - .owner = THIS_MODULE, - .n_voltages = 1, - .volt_table = fixed_3300000_voltage, - }, - .update_bank = 0x03, - .update_reg = 0x82, - .update_mask = 0x03, - .update_val = 0x01, - .update_val_idle = 0x03, - .update_val_normal = 0x01, - }, [AB8505_LDO_AUDIO] = { .desc = { .name = "LDO-AUDIO", diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c index 989506bd90b1..16f0c8570036 100644 --- a/drivers/regulator/axp20x-regulator.c +++ b/drivers/regulator/axp20x-regulator.c @@ -413,10 +413,13 @@ static int axp20x_set_ramp_delay(struct regulator_dev *rdev, int ramp) int i; for (i = 0; i < rate_count; i++) { - if (ramp <= slew_rates[i]) - cfg = AXP20X_DCDC2_LDO3_V_RAMP_LDO3_RATE(i); - else + if (ramp > slew_rates[i]) break; + + if (id == AXP20X_DCDC2) + cfg = AXP20X_DCDC2_LDO3_V_RAMP_DCDC2_RATE(i); + else + cfg = AXP20X_DCDC2_LDO3_V_RAMP_LDO3_RATE(i); } if (cfg == 0xff) { @@ -605,7 +608,7 @@ static const struct regulator_desc axp22x_regulators[] = { AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_ELDO1_MASK), AXP_DESC(AXP22X, ELDO2, "eldo2", "eldoin", 700, 3300, 100, AXP22X_ELDO2_V_OUT, AXP22X_ELDO2_V_OUT_MASK, - AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_ELDO1_MASK), + AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_ELDO2_MASK), AXP_DESC(AXP22X, ELDO3, "eldo3", "eldoin", 700, 3300, 100, AXP22X_ELDO3_V_OUT, AXP22X_ELDO3_V_OUT_MASK, AXP22X_PWR_OUT_CTRL2, AXP22X_PWR_OUT_ELDO3_MASK), diff --git a/drivers/regulator/bd70528-regulator.c b/drivers/regulator/bd70528-regulator.c index 0248a61f1006..6041839ec38c 100644 --- a/drivers/regulator/bd70528-regulator.c +++ b/drivers/regulator/bd70528-regulator.c @@ -101,7 +101,6 @@ static const struct regulator_ops bd70528_ldo_ops = { .set_voltage_sel = regulator_set_voltage_sel_regmap, .get_voltage_sel = regulator_get_voltage_sel_regmap, .set_voltage_time_sel = regulator_set_voltage_time_sel, - .set_ramp_delay = bd70528_set_ramp_delay, }; static const struct regulator_ops bd70528_led_ops = { diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c index f47b4b281b14..d7302c2052f9 100644 --- a/drivers/scsi/libsas/sas_discover.c +++ b/drivers/scsi/libsas/sas_discover.c @@ -81,12 +81,21 @@ static int sas_get_port_device(struct asd_sas_port *port) else dev->dev_type = SAS_SATA_DEV; dev->tproto = SAS_PROTOCOL_SATA; - } else { + } else if (port->oob_mode == SAS_OOB_MODE) { struct sas_identify_frame *id = (struct sas_identify_frame *) dev->frame_rcvd; dev->dev_type = id->dev_type; dev->iproto = id->initiator_bits; dev->tproto = id->target_bits; + } else { + /* If the oob mode is OOB_NOT_CONNECTED, the port is + * disconnected due to race with PHY down. We cannot + * continue to discover this port + */ + sas_put_device(dev); + pr_warn("Port %016llx is disconnected when discovering\n", + SAS_ADDR(port->attached_sas_addr)); + return -ENODEV; } sas_init_dev(dev); diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c index 39a736b887b1..6c2b03415a2c 100644 --- a/drivers/scsi/lpfc/lpfc_bsg.c +++ b/drivers/scsi/lpfc/lpfc_bsg.c @@ -4489,12 +4489,6 @@ lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job, phba->mbox_ext_buf_ctx.seqNum++; nemb_tp = phba->mbox_ext_buf_ctx.nembType; - dd_data = kmalloc(sizeof(struct bsg_job_data), GFP_KERNEL); - if (!dd_data) { - rc = -ENOMEM; - goto job_error; - } - pbuf = (uint8_t *)dmabuf->virt; size = job->request_payload.payload_len; sg_copy_to_buffer(job->request_payload.sg_list, @@ -4531,6 +4525,13 @@ lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job, "2968 SLI_CONFIG ext-buffer wr all %d " "ebuffers received\n", phba->mbox_ext_buf_ctx.numBuf); + + dd_data = kmalloc(sizeof(struct bsg_job_data), GFP_KERNEL); + if (!dd_data) { + rc = -ENOMEM; + goto job_error; + } + /* mailbox command structure for base driver */ pmboxq = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL); if (!pmboxq) { @@ -4579,6 +4580,8 @@ lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job, return SLI_CONFIG_HANDLED; job_error: + if (pmboxq) + mempool_free(pmboxq, phba->mbox_mem_pool); lpfc_bsg_dma_page_free(phba, dmabuf); kfree(dd_data); diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 1286c658ba34..ee70d14e7a9d 100644 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c @@ -4843,6 +4843,44 @@ lpfc_nlp_logo_unreg(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) } } +/* + * Sets the mailbox completion handler to be used for the + * unreg_rpi command. The handler varies based on the state of + * the port and what will be happening to the rpi next. + */ +static void +lpfc_set_unreg_login_mbx_cmpl(struct lpfc_hba *phba, struct lpfc_vport *vport, + struct lpfc_nodelist *ndlp, LPFC_MBOXQ_t *mbox) +{ + unsigned long iflags; + + if (ndlp->nlp_flag & NLP_ISSUE_LOGO) { + mbox->ctx_ndlp = ndlp; + mbox->mbox_cmpl = lpfc_nlp_logo_unreg; + + } else if (phba->sli_rev == LPFC_SLI_REV4 && + (!(vport->load_flag & FC_UNLOADING)) && + (bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) >= + LPFC_SLI_INTF_IF_TYPE_2) && + (kref_read(&ndlp->kref) > 0)) { + mbox->ctx_ndlp = lpfc_nlp_get(ndlp); + mbox->mbox_cmpl = lpfc_sli4_unreg_rpi_cmpl_clr; + } else { + if (vport->load_flag & FC_UNLOADING) { + if (phba->sli_rev == LPFC_SLI_REV4) { + spin_lock_irqsave(&vport->phba->ndlp_lock, + iflags); + ndlp->nlp_flag |= NLP_RELEASE_RPI; + spin_unlock_irqrestore(&vport->phba->ndlp_lock, + iflags); + } + lpfc_nlp_get(ndlp); + } + mbox->ctx_ndlp = ndlp; + mbox->mbox_cmpl = lpfc_sli_def_mbox_cmpl; + } +} + /* * Free rpi associated with LPFC_NODELIST entry. * This routine is called from lpfc_freenode(), when we are removing @@ -4893,33 +4931,12 @@ lpfc_unreg_rpi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) lpfc_unreg_login(phba, vport->vpi, rpi, mbox); mbox->vport = vport; - if (ndlp->nlp_flag & NLP_ISSUE_LOGO) { - mbox->ctx_ndlp = ndlp; - mbox->mbox_cmpl = lpfc_nlp_logo_unreg; - } else { - if (phba->sli_rev == LPFC_SLI_REV4 && - (!(vport->load_flag & FC_UNLOADING)) && - (bf_get(lpfc_sli_intf_if_type, - &phba->sli4_hba.sli_intf) >= - LPFC_SLI_INTF_IF_TYPE_2) && - (kref_read(&ndlp->kref) > 0)) { - mbox->ctx_ndlp = lpfc_nlp_get(ndlp); - mbox->mbox_cmpl = - lpfc_sli4_unreg_rpi_cmpl_clr; - /* - * accept PLOGIs after unreg_rpi_cmpl - */ - acc_plogi = 0; - } else if (vport->load_flag & FC_UNLOADING) { - mbox->ctx_ndlp = NULL; - mbox->mbox_cmpl = - lpfc_sli_def_mbox_cmpl; - } else { - mbox->ctx_ndlp = ndlp; - mbox->mbox_cmpl = - lpfc_sli_def_mbox_cmpl; - } - } + lpfc_set_unreg_login_mbx_cmpl(phba, vport, ndlp, mbox); + if (mbox->mbox_cmpl == lpfc_sli4_unreg_rpi_cmpl_clr) + /* + * accept PLOGIs after unreg_rpi_cmpl + */ + acc_plogi = 0; if (((ndlp->nlp_DID & Fabric_DID_MASK) != Fabric_DID_MASK) && (!(vport->fc_flag & FC_OFFLINE_MODE))) @@ -5060,6 +5077,7 @@ lpfc_cleanup_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) struct lpfc_hba *phba = vport->phba; LPFC_MBOXQ_t *mb, *nextmb; struct lpfc_dmabuf *mp; + unsigned long iflags; /* Cleanup node for NPort */ lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE, @@ -5141,8 +5159,20 @@ lpfc_cleanup_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) lpfc_cleanup_vports_rrqs(vport, ndlp); if (phba->sli_rev == LPFC_SLI_REV4) ndlp->nlp_flag |= NLP_RELEASE_RPI; - lpfc_unreg_rpi(vport, ndlp); - + if (!lpfc_unreg_rpi(vport, ndlp)) { + /* Clean up unregistered and non freed rpis */ + if ((ndlp->nlp_flag & NLP_RELEASE_RPI) && + !(ndlp->nlp_rpi == LPFC_RPI_ALLOC_ERROR)) { + lpfc_sli4_free_rpi(vport->phba, + ndlp->nlp_rpi); + spin_lock_irqsave(&vport->phba->ndlp_lock, + iflags); + ndlp->nlp_flag &= ~NLP_RELEASE_RPI; + ndlp->nlp_rpi = LPFC_RPI_ALLOC_ERROR; + spin_unlock_irqrestore(&vport->phba->ndlp_lock, + iflags); + } + } return 0; } diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c index a227e36cbdc2..8e0f03ef346b 100644 --- a/drivers/scsi/lpfc/lpfc_nvme.c +++ b/drivers/scsi/lpfc/lpfc_nvme.c @@ -1976,6 +1976,8 @@ out_unlock: /* Declare and initialization an instance of the FC NVME template. */ static struct nvme_fc_port_template lpfc_nvme_template = { + .module = THIS_MODULE, + /* initiator-based functions */ .localport_delete = lpfc_nvme_localport_delete, .remoteport_delete = lpfc_nvme_remoteport_delete, diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 2b0e7b32c2df..8860f41af3ff 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -2526,6 +2526,8 @@ lpfc_sli_def_mbox_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) } else { __lpfc_sli_rpi_release(vport, ndlp); } + if (vport->load_flag & FC_UNLOADING) + lpfc_nlp_put(ndlp); pmb->ctx_ndlp = NULL; } } diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index d5386edddaf6..1eb3fe281cc3 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -2401,6 +2401,7 @@ typedef struct fc_port { unsigned int id_changed:1; unsigned int scan_needed:1; unsigned int n2n_flag:1; + unsigned int explicit_logout:1; struct completion nvme_del_done; uint32_t nvme_prli_service_param; diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 5d31e3d52b6b..80f276d67c14 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -4927,14 +4927,8 @@ qla2x00_configure_loop(scsi_qla_host_t *vha) set_bit(RSCN_UPDATE, &flags); clear_bit(LOCAL_LOOP_UPDATE, &flags); - } else if (ha->current_topology == ISP_CFG_N) { - clear_bit(RSCN_UPDATE, &flags); - if (qla_tgt_mode_enabled(vha)) { - /* allow the other side to start the login */ - clear_bit(LOCAL_LOOP_UPDATE, &flags); - set_bit(RELOGIN_NEEDED, &vha->dpc_flags); - } - } else if (ha->current_topology == ISP_CFG_NL) { + } else if (ha->current_topology == ISP_CFG_NL || + ha->current_topology == ISP_CFG_N) { clear_bit(RSCN_UPDATE, &flags); set_bit(LOCAL_LOOP_UPDATE, &flags); } else if (!vha->flags.online || @@ -5051,7 +5045,6 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha) memcpy(&ha->plogi_els_payld.data, (void *)ha->init_cb, sizeof(ha->plogi_els_payld.data)); - set_bit(RELOGIN_NEEDED, &vha->dpc_flags); } else { ql_dbg(ql_dbg_init, vha, 0x00d1, "PLOGI ELS param read fail.\n"); diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c index 518eb954cf42..bdf1994251b9 100644 --- a/drivers/scsi/qla2xxx/qla_iocb.c +++ b/drivers/scsi/qla2xxx/qla_iocb.c @@ -2405,11 +2405,19 @@ qla2x00_login_iocb(srb_t *sp, struct mbx_entry *mbx) static void qla24xx_logout_iocb(srb_t *sp, struct logio_entry_24xx *logio) { + u16 control_flags = LCF_COMMAND_LOGO; logio->entry_type = LOGINOUT_PORT_IOCB_TYPE; - logio->control_flags = - cpu_to_le16(LCF_COMMAND_LOGO|LCF_IMPL_LOGO); - if (!sp->fcport->keep_nport_handle) - logio->control_flags |= cpu_to_le16(LCF_FREE_NPORT); + + if (sp->fcport->explicit_logout) { + control_flags |= LCF_EXPL_LOGO|LCF_FREE_NPORT; + } else { + control_flags |= LCF_IMPL_LOGO; + + if (!sp->fcport->keep_nport_handle) + control_flags |= LCF_FREE_NPORT; + } + + logio->control_flags = cpu_to_le16(control_flags); logio->nport_handle = cpu_to_le16(sp->fcport->loop_id); logio->port_id[0] = sp->fcport->d_id.b.al_pa; logio->port_id[1] = sp->fcport->d_id.b.area; @@ -2676,7 +2684,8 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x3073, "PLOGI ELS IOCB:\n"); ql_dump_buffer(ql_log_info, vha, 0x0109, - (uint8_t *)els_iocb, 0x70); + (uint8_t *)els_iocb, + sizeof(*els_iocb)); } else { els_iocb->control_flags = 1 << 13; els_iocb->tx_byte_count = @@ -2842,7 +2851,8 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x3073, "PLOGI buffer:\n"); ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x0109, - (uint8_t *)elsio->u.els_plogi.els_plogi_pyld, 0x70); + (uint8_t *)elsio->u.els_plogi.els_plogi_pyld, + sizeof(*elsio->u.els_plogi.els_plogi_pyld)); rval = qla2x00_start_sp(sp); if (rval != QLA_SUCCESS) { diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 9204e8467a4e..b3766b1879e3 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -1061,8 +1061,6 @@ global_port_update: ql_dbg(ql_dbg_async, vha, 0x5011, "Asynchronous PORT UPDATE ignored %04x/%04x/%04x.\n", mb[1], mb[2], mb[3]); - - qlt_async_event(mb[0], vha, mb); break; } @@ -1079,8 +1077,6 @@ global_port_update: set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); set_bit(VP_CONFIG_OK, &vha->vp_flags); - - qlt_async_event(mb[0], vha, mb); break; case MBA_RSCN_UPDATE: /* State Change Registration */ diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 4d90cf101f5f..eac76e934cbe 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -3920,6 +3920,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, vha->d_id.b24 = 0; vha->d_id.b.al_pa = 1; ha->flags.n2n_bigger = 1; + ha->flags.n2n_ae = 0; id.b.al_pa = 2; ql_dbg(ql_dbg_async, vha, 0x5075, @@ -3930,6 +3931,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, "Format 1: Remote login - Waiting for WWPN %8phC.\n", rptid_entry->u.f1.port_name); ha->flags.n2n_bigger = 0; + ha->flags.n2n_ae = 1; } qla24xx_post_newsess_work(vha, &id, rptid_entry->u.f1.port_name, @@ -3941,7 +3943,6 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha, /* if our portname is higher then initiate N2N login */ set_bit(N2N_LOGIN_NEEDED, &vha->dpc_flags); - ha->flags.n2n_ae = 1; return; break; case TOPO_FL: diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c index 941aa53363f5..bfcd02fdf2b8 100644 --- a/drivers/scsi/qla2xxx/qla_nvme.c +++ b/drivers/scsi/qla2xxx/qla_nvme.c @@ -610,6 +610,7 @@ static void qla_nvme_remoteport_delete(struct nvme_fc_remote_port *rport) } static struct nvme_fc_port_template qla_nvme_fc_transport = { + .module = THIS_MODULE, .localport_delete = qla_nvme_localport_delete, .remoteport_delete = qla_nvme_remoteport_delete, .create_queue = qla_nvme_alloc_queue, diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index a9bd0f513316..74a378a91b71 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1104,6 +1104,7 @@ void qlt_free_session_done(struct work_struct *work) } } + sess->explicit_logout = 0; spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); sess->free_pending = 0; @@ -1264,7 +1265,6 @@ void qlt_schedule_sess_for_deletion(struct fc_port *sess) "Scheduling sess %p for deletion %8phC\n", sess, sess->port_name); - INIT_WORK(&sess->del_work, qla24xx_delete_sess_fn); WARN_ON(!queue_work(sess->vha->hw->wq, &sess->del_work)); } @@ -4803,6 +4803,7 @@ static int qlt_handle_login(struct scsi_qla_host *vha, switch (sess->disc_state) { case DSC_DELETED: + case DSC_LOGIN_PEND: qlt_plogi_ack_unref(vha, pla); break; diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index bab2073c1f72..abe7f79bb789 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -350,6 +350,7 @@ static void tcm_qla2xxx_close_session(struct se_session *se_sess) target_sess_cmd_list_set_waiting(se_sess); spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); + sess->explicit_logout = 1; tcm_qla2xxx_put_sess(sess); } diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 8c674eca09f1..2323432a0edb 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c @@ -4275,7 +4275,6 @@ static int qla4xxx_mem_alloc(struct scsi_qla_host *ha) return QLA_SUCCESS; mem_alloc_error_exit: - qla4xxx_mem_free(ha); return QLA_ERROR; } diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index 417b868d8735..ed8d9709b9b9 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c @@ -24,6 +24,8 @@ #define ISCSI_TRANSPORT_VERSION "2.0-870" +#define ISCSI_SEND_MAX_ALLOWED 10 + #define CREATE_TRACE_POINTS #include @@ -3682,6 +3684,7 @@ iscsi_if_rx(struct sk_buff *skb) struct nlmsghdr *nlh; struct iscsi_uevent *ev; uint32_t group; + int retries = ISCSI_SEND_MAX_ALLOWED; nlh = nlmsg_hdr(skb); if (nlh->nlmsg_len < sizeof(*nlh) + sizeof(*ev) || @@ -3712,6 +3715,10 @@ iscsi_if_rx(struct sk_buff *skb) break; err = iscsi_if_send_reply(portid, nlh->nlmsg_type, ev, sizeof(*ev)); + if (err == -EAGAIN && --retries < 0) { + printk(KERN_WARNING "Send reply failed, error %d\n", err); + break; + } } while (err < 0 && err != -ECONNREFUSED && err != -ESRCH); skb_pull(skb, rlen); } diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c index bec758e978fb..d47bd26577b3 100644 --- a/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c @@ -583,21 +583,14 @@ static void dspi_tcfq_write(struct fsl_dspi *dspi) dspi->tx_cmd |= SPI_PUSHR_CMD_CTCNT; if (dspi->devtype_data->xspi_mode && dspi->bits_per_word > 16) { - /* Write two TX FIFO entries first, and then the corresponding - * CMD FIFO entry. + /* Write the CMD FIFO entry first, and then the two + * corresponding TX FIFO entries. */ u32 data = dspi_pop_tx(dspi); - if (dspi->cur_chip->ctar_val & SPI_CTAR_LSBFE) { - /* LSB */ - tx_fifo_write(dspi, data & 0xFFFF); - tx_fifo_write(dspi, data >> 16); - } else { - /* MSB */ - tx_fifo_write(dspi, data >> 16); - tx_fifo_write(dspi, data & 0xFFFF); - } cmd_fifo_write(dspi); + tx_fifo_write(dspi, data & 0xFFFF); + tx_fifo_write(dspi, data >> 16); } else { /* Write one entry to both TX FIFO and CMD FIFO * simultaneously. diff --git a/drivers/spi/spi-uniphier.c b/drivers/spi/spi-uniphier.c index 47cde1864630..ce9b30112e26 100644 --- a/drivers/spi/spi-uniphier.c +++ b/drivers/spi/spi-uniphier.c @@ -290,25 +290,32 @@ static void uniphier_spi_recv(struct uniphier_spi_priv *priv) } } -static void uniphier_spi_fill_tx_fifo(struct uniphier_spi_priv *priv) +static void uniphier_spi_set_fifo_threshold(struct uniphier_spi_priv *priv, + unsigned int threshold) { - unsigned int fifo_threshold, fill_bytes; u32 val; - fifo_threshold = DIV_ROUND_UP(priv->rx_bytes, - bytes_per_word(priv->bits_per_word)); - fifo_threshold = min(fifo_threshold, SSI_FIFO_DEPTH); - - fill_bytes = fifo_threshold - (priv->rx_bytes - priv->tx_bytes); - - /* set fifo threshold */ val = readl(priv->base + SSI_FC); val &= ~(SSI_FC_TXFTH_MASK | SSI_FC_RXFTH_MASK); - val |= FIELD_PREP(SSI_FC_TXFTH_MASK, fifo_threshold); - val |= FIELD_PREP(SSI_FC_RXFTH_MASK, fifo_threshold); + val |= FIELD_PREP(SSI_FC_TXFTH_MASK, SSI_FIFO_DEPTH - threshold); + val |= FIELD_PREP(SSI_FC_RXFTH_MASK, threshold); writel(val, priv->base + SSI_FC); +} - while (fill_bytes--) +static void uniphier_spi_fill_tx_fifo(struct uniphier_spi_priv *priv) +{ + unsigned int fifo_threshold, fill_words; + unsigned int bpw = bytes_per_word(priv->bits_per_word); + + fifo_threshold = DIV_ROUND_UP(priv->rx_bytes, bpw); + fifo_threshold = min(fifo_threshold, SSI_FIFO_DEPTH); + + uniphier_spi_set_fifo_threshold(priv, fifo_threshold); + + fill_words = fifo_threshold - + DIV_ROUND_UP(priv->rx_bytes - priv->tx_bytes, bpw); + + while (fill_words--) uniphier_spi_send(priv); } diff --git a/drivers/staging/wlan-ng/Kconfig b/drivers/staging/wlan-ng/Kconfig index ac136663fa8e..082c16a31616 100644 --- a/drivers/staging/wlan-ng/Kconfig +++ b/drivers/staging/wlan-ng/Kconfig @@ -4,6 +4,7 @@ config PRISM2_USB depends on WLAN && USB && CFG80211 select WIRELESS_EXT select WEXT_PRIV + select CRC32 help This is the wlan-ng prism 2.5/3 USB driver for a wide range of old USB wireless devices. diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c index 00964b6e4ac1..e0718ee5d42a 100644 --- a/drivers/tty/serial/msm_serial.c +++ b/drivers/tty/serial/msm_serial.c @@ -1580,6 +1580,7 @@ static void __msm_console_write(struct uart_port *port, const char *s, int num_newlines = 0; bool replaced = false; void __iomem *tf; + int locked = 1; if (is_uartdm) tf = port->membase + UARTDM_TF; @@ -1592,7 +1593,13 @@ static void __msm_console_write(struct uart_port *port, const char *s, num_newlines++; count += num_newlines; - spin_lock(&port->lock); + if (port->sysrq) + locked = 0; + else if (oops_in_progress) + locked = spin_trylock(&port->lock); + else + spin_lock(&port->lock); + if (is_uartdm) msm_reset_dm_count(port, count); @@ -1628,7 +1635,9 @@ static void __msm_console_write(struct uart_port *port, const char *s, iowrite32_rep(tf, buf, 1); i += num_chars; } - spin_unlock(&port->lock); + + if (locked) + spin_unlock(&port->lock); } static void msm_console_write(struct console *co, const char *s, diff --git a/drivers/usb/gadget/function/f_ecm.c b/drivers/usb/gadget/function/f_ecm.c index 6ce044008cf6..460d5d7c984f 100644 --- a/drivers/usb/gadget/function/f_ecm.c +++ b/drivers/usb/gadget/function/f_ecm.c @@ -621,8 +621,12 @@ static void ecm_disable(struct usb_function *f) DBG(cdev, "ecm deactivated\n"); - if (ecm->port.in_ep->enabled) + if (ecm->port.in_ep->enabled) { gether_disconnect(&ecm->port); + } else { + ecm->port.in_ep->desc = NULL; + ecm->port.out_ep->desc = NULL; + } usb_ep_disable(ecm->notify); ecm->notify->desc = NULL; diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c index 59d0bd18bd0c..d5373bc70324 100644 --- a/drivers/usb/gadget/function/f_rndis.c +++ b/drivers/usb/gadget/function/f_rndis.c @@ -620,6 +620,7 @@ static void rndis_disable(struct usb_function *f) gether_disconnect(&rndis->port); usb_ep_disable(rndis->notify); + rndis->notify->desc = NULL; } /*-------------------------------------------------------------------------*/ diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 58e7c100b6ad..4c761abc5688 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -1444,6 +1444,7 @@ config SMSC37B787_WDT config TQMX86_WDT tristate "TQ-Systems TQMX86 Watchdog Timer" depends on X86 + select WATCHDOG_CORE help This is the driver for the hardware watchdog timer in the TQMX86 IO controller found on some of their ComExpress Modules. diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c index 5bae515c8e25..bed90d612e48 100644 --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c @@ -395,7 +395,8 @@ static struct notifier_block xen_memory_nb = { #else static enum bp_state reserve_additional_memory(void) { - balloon_stats.target_pages = balloon_stats.current_pages; + balloon_stats.target_pages = balloon_stats.current_pages + + balloon_stats.target_unpopulated; return BP_ECANCELED; } #endif /* CONFIG_XEN_BALLOON_MEMORY_HOTPLUG */ diff --git a/fs/afs/dynroot.c b/fs/afs/dynroot.c index 4150280509ff..7503899c0a1b 100644 --- a/fs/afs/dynroot.c +++ b/fs/afs/dynroot.c @@ -136,6 +136,9 @@ static struct dentry *afs_dynroot_lookup(struct inode *dir, struct dentry *dentr ASSERTCMP(d_inode(dentry), ==, NULL); + if (flags & LOOKUP_CREATE) + return ERR_PTR(-EOPNOTSUPP); + if (dentry->d_name.len >= AFSNAMEMAX) { _leave(" = -ENAMETOOLONG"); return ERR_PTR(-ENAMETOOLONG); diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c index f532d6d3bd28..79bc5f1338ed 100644 --- a/fs/afs/mntpt.c +++ b/fs/afs/mntpt.c @@ -126,7 +126,7 @@ static int afs_mntpt_set_params(struct fs_context *fc, struct dentry *mntpt) if (src_as->cell) ctx->cell = afs_get_cell(src_as->cell); - if (size > PAGE_SIZE - 1) + if (size < 2 || size > PAGE_SIZE - 1) return -EINVAL; page = read_mapping_page(d_inode(mntpt)->i_mapping, 0, NULL); @@ -140,7 +140,9 @@ static int afs_mntpt_set_params(struct fs_context *fc, struct dentry *mntpt) } buf = kmap(page); - ret = vfs_parse_fs_string(fc, "source", buf, size); + ret = -EINVAL; + if (buf[size - 1] == '.') + ret = vfs_parse_fs_string(fc, "source", buf, size - 1); kunmap(page); put_page(page); if (ret < 0) diff --git a/fs/afs/server.c b/fs/afs/server.c index 64d440aaabc0..ca8115ba1724 100644 --- a/fs/afs/server.c +++ b/fs/afs/server.c @@ -32,18 +32,11 @@ static void afs_dec_servers_outstanding(struct afs_net *net) struct afs_server *afs_find_server(struct afs_net *net, const struct sockaddr_rxrpc *srx) { - const struct sockaddr_in6 *a = &srx->transport.sin6, *b; const struct afs_addr_list *alist; struct afs_server *server = NULL; unsigned int i; - bool ipv6 = true; int seq = 0, diff; - if (srx->transport.sin6.sin6_addr.s6_addr32[0] == 0 || - srx->transport.sin6.sin6_addr.s6_addr32[1] == 0 || - srx->transport.sin6.sin6_addr.s6_addr32[2] == htonl(0xffff)) - ipv6 = false; - rcu_read_lock(); do { @@ -52,7 +45,8 @@ struct afs_server *afs_find_server(struct afs_net *net, server = NULL; read_seqbegin_or_lock(&net->fs_addr_lock, &seq); - if (ipv6) { + if (srx->transport.family == AF_INET6) { + const struct sockaddr_in6 *a = &srx->transport.sin6, *b; hlist_for_each_entry_rcu(server, &net->fs_addresses6, addr6_link) { alist = rcu_dereference(server->addresses); for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) { @@ -68,15 +62,16 @@ struct afs_server *afs_find_server(struct afs_net *net, } } } else { + const struct sockaddr_in *a = &srx->transport.sin, *b; hlist_for_each_entry_rcu(server, &net->fs_addresses4, addr4_link) { alist = rcu_dereference(server->addresses); for (i = 0; i < alist->nr_ipv4; i++) { - b = &alist->addrs[i].transport.sin6; - diff = ((u16 __force)a->sin6_port - - (u16 __force)b->sin6_port); + b = &alist->addrs[i].transport.sin; + diff = ((u16 __force)a->sin_port - + (u16 __force)b->sin_port); if (diff == 0) - diff = ((u32 __force)a->sin6_addr.s6_addr32[3] - - (u32 __force)b->sin6_addr.s6_addr32[3]); + diff = ((u32 __force)a->sin_addr.s_addr - + (u32 __force)b->sin_addr.s_addr); if (diff == 0) goto found; } diff --git a/fs/afs/super.c b/fs/afs/super.c index 488641b1a418..d9a6036b70b9 100644 --- a/fs/afs/super.c +++ b/fs/afs/super.c @@ -448,7 +448,6 @@ static int afs_fill_super(struct super_block *sb, struct afs_fs_context *ctx) /* allocate the root inode and dentry */ if (as->dyn_root) { inode = afs_iget_pseudo_dir(sb, true); - sb->s_flags |= SB_RDONLY; } else { sprintf(sb->s_id, "%llu", as->volume->vid); afs_activate_volume(as->volume); diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 10a04b99798a..3f3110975f88 100644 --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c @@ -53,16 +53,6 @@ struct btrfs_workqueue { struct __btrfs_workqueue *high; }; -static void normal_work_helper(struct btrfs_work *work); - -#define BTRFS_WORK_HELPER(name) \ -noinline_for_stack void btrfs_##name(struct work_struct *arg) \ -{ \ - struct btrfs_work *work = container_of(arg, struct btrfs_work, \ - normal_work); \ - normal_work_helper(work); \ -} - struct btrfs_fs_info * btrfs_workqueue_owner(const struct __btrfs_workqueue *wq) { @@ -89,29 +79,6 @@ bool btrfs_workqueue_normal_congested(const struct btrfs_workqueue *wq) return atomic_read(&wq->normal->pending) > wq->normal->thresh * 2; } -BTRFS_WORK_HELPER(worker_helper); -BTRFS_WORK_HELPER(delalloc_helper); -BTRFS_WORK_HELPER(flush_delalloc_helper); -BTRFS_WORK_HELPER(cache_helper); -BTRFS_WORK_HELPER(submit_helper); -BTRFS_WORK_HELPER(fixup_helper); -BTRFS_WORK_HELPER(endio_helper); -BTRFS_WORK_HELPER(endio_meta_helper); -BTRFS_WORK_HELPER(endio_meta_write_helper); -BTRFS_WORK_HELPER(endio_raid56_helper); -BTRFS_WORK_HELPER(endio_repair_helper); -BTRFS_WORK_HELPER(rmw_helper); -BTRFS_WORK_HELPER(endio_write_helper); -BTRFS_WORK_HELPER(freespace_write_helper); -BTRFS_WORK_HELPER(delayed_meta_helper); -BTRFS_WORK_HELPER(readahead_helper); -BTRFS_WORK_HELPER(qgroup_rescan_helper); -BTRFS_WORK_HELPER(extent_refs_helper); -BTRFS_WORK_HELPER(scrub_helper); -BTRFS_WORK_HELPER(scrubwrc_helper); -BTRFS_WORK_HELPER(scrubnc_helper); -BTRFS_WORK_HELPER(scrubparity_helper); - static struct __btrfs_workqueue * __btrfs_alloc_workqueue(struct btrfs_fs_info *fs_info, const char *name, unsigned int flags, int limit_active, int thresh) @@ -302,12 +269,13 @@ static void run_ordered_work(struct __btrfs_workqueue *wq, * original work item cannot depend on the recycled work * item in that case (see find_worker_executing_work()). * - * Note that the work of one Btrfs filesystem may depend - * on the work of another Btrfs filesystem via, e.g., a - * loop device. Therefore, we must not allow the current - * work item to be recycled until we are really done, - * otherwise we break the above assumption and can - * deadlock. + * Note that different types of Btrfs work can depend on + * each other, and one type of work on one Btrfs + * filesystem may even depend on the same type of work + * on another Btrfs filesystem via, e.g., a loop device. + * Therefore, we must not allow the current work item to + * be recycled until we are really done, otherwise we + * break the above assumption and can deadlock. */ free_self = true; } else { @@ -331,8 +299,10 @@ static void run_ordered_work(struct __btrfs_workqueue *wq, } } -static void normal_work_helper(struct btrfs_work *work) +static void btrfs_work_helper(struct work_struct *normal_work) { + struct btrfs_work *work = container_of(normal_work, struct btrfs_work, + normal_work); struct __btrfs_workqueue *wq; void *wtag; int need_order = 0; @@ -362,15 +332,13 @@ static void normal_work_helper(struct btrfs_work *work) trace_btrfs_all_work_done(wq->fs_info, wtag); } -void btrfs_init_work(struct btrfs_work *work, btrfs_work_func_t uniq_func, - btrfs_func_t func, - btrfs_func_t ordered_func, - btrfs_func_t ordered_free) +void btrfs_init_work(struct btrfs_work *work, btrfs_func_t func, + btrfs_func_t ordered_func, btrfs_func_t ordered_free) { work->func = func; work->ordered_func = ordered_func; work->ordered_free = ordered_free; - INIT_WORK(&work->normal_work, uniq_func); + INIT_WORK(&work->normal_work, btrfs_work_helper); INIT_LIST_HEAD(&work->ordered_list); work->flags = 0; } diff --git a/fs/btrfs/async-thread.h b/fs/btrfs/async-thread.h index 7861c9feba5f..c5bf2b117c05 100644 --- a/fs/btrfs/async-thread.h +++ b/fs/btrfs/async-thread.h @@ -29,42 +29,13 @@ struct btrfs_work { unsigned long flags; }; -#define BTRFS_WORK_HELPER_PROTO(name) \ -void btrfs_##name(struct work_struct *arg) - -BTRFS_WORK_HELPER_PROTO(worker_helper); -BTRFS_WORK_HELPER_PROTO(delalloc_helper); -BTRFS_WORK_HELPER_PROTO(flush_delalloc_helper); -BTRFS_WORK_HELPER_PROTO(cache_helper); -BTRFS_WORK_HELPER_PROTO(submit_helper); -BTRFS_WORK_HELPER_PROTO(fixup_helper); -BTRFS_WORK_HELPER_PROTO(endio_helper); -BTRFS_WORK_HELPER_PROTO(endio_meta_helper); -BTRFS_WORK_HELPER_PROTO(endio_meta_write_helper); -BTRFS_WORK_HELPER_PROTO(endio_raid56_helper); -BTRFS_WORK_HELPER_PROTO(endio_repair_helper); -BTRFS_WORK_HELPER_PROTO(rmw_helper); -BTRFS_WORK_HELPER_PROTO(endio_write_helper); -BTRFS_WORK_HELPER_PROTO(freespace_write_helper); -BTRFS_WORK_HELPER_PROTO(delayed_meta_helper); -BTRFS_WORK_HELPER_PROTO(readahead_helper); -BTRFS_WORK_HELPER_PROTO(qgroup_rescan_helper); -BTRFS_WORK_HELPER_PROTO(extent_refs_helper); -BTRFS_WORK_HELPER_PROTO(scrub_helper); -BTRFS_WORK_HELPER_PROTO(scrubwrc_helper); -BTRFS_WORK_HELPER_PROTO(scrubnc_helper); -BTRFS_WORK_HELPER_PROTO(scrubparity_helper); - - struct btrfs_workqueue *btrfs_alloc_workqueue(struct btrfs_fs_info *fs_info, const char *name, unsigned int flags, int limit_active, int thresh); -void btrfs_init_work(struct btrfs_work *work, btrfs_work_func_t helper, - btrfs_func_t func, - btrfs_func_t ordered_func, - btrfs_func_t ordered_free); +void btrfs_init_work(struct btrfs_work *work, btrfs_func_t func, + btrfs_func_t ordered_func, btrfs_func_t ordered_free); void btrfs_queue_work(struct btrfs_workqueue *wq, struct btrfs_work *work); void btrfs_destroy_workqueue(struct btrfs_workqueue *wq); diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c index 0d2da2366869..7dcfa7d7632a 100644 --- a/fs/btrfs/block-group.c +++ b/fs/btrfs/block-group.c @@ -695,8 +695,7 @@ int btrfs_cache_block_group(struct btrfs_block_group_cache *cache, caching_ctl->block_group = cache; caching_ctl->progress = cache->key.objectid; refcount_set(&caching_ctl->count, 1); - btrfs_init_work(&caching_ctl->work, btrfs_cache_helper, - caching_thread, NULL, NULL); + btrfs_init_work(&caching_ctl->work, caching_thread, NULL, NULL); spin_lock(&cache->lock); /* diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 57a9ad3e8c29..c7a53e79c66d 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -1367,8 +1367,8 @@ static int btrfs_wq_run_delayed_node(struct btrfs_delayed_root *delayed_root, return -ENOMEM; async_work->delayed_root = delayed_root; - btrfs_init_work(&async_work->work, btrfs_delayed_meta_helper, - btrfs_async_run_delayed_root, NULL, NULL); + btrfs_init_work(&async_work->work, btrfs_async_run_delayed_root, NULL, + NULL); async_work->nr = nr; btrfs_queue_work(fs_info->delayed_workers, &async_work->work); diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 3895c21853cc..bae334212ee2 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -706,43 +706,31 @@ static void end_workqueue_bio(struct bio *bio) struct btrfs_end_io_wq *end_io_wq = bio->bi_private; struct btrfs_fs_info *fs_info; struct btrfs_workqueue *wq; - btrfs_work_func_t func; fs_info = end_io_wq->info; end_io_wq->status = bio->bi_status; if (bio_op(bio) == REQ_OP_WRITE) { - if (end_io_wq->metadata == BTRFS_WQ_ENDIO_METADATA) { + if (end_io_wq->metadata == BTRFS_WQ_ENDIO_METADATA) wq = fs_info->endio_meta_write_workers; - func = btrfs_endio_meta_write_helper; - } else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_FREE_SPACE) { + else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_FREE_SPACE) wq = fs_info->endio_freespace_worker; - func = btrfs_freespace_write_helper; - } else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) { + else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) wq = fs_info->endio_raid56_workers; - func = btrfs_endio_raid56_helper; - } else { + else wq = fs_info->endio_write_workers; - func = btrfs_endio_write_helper; - } } else { - if (unlikely(end_io_wq->metadata == - BTRFS_WQ_ENDIO_DIO_REPAIR)) { + if (unlikely(end_io_wq->metadata == BTRFS_WQ_ENDIO_DIO_REPAIR)) wq = fs_info->endio_repair_workers; - func = btrfs_endio_repair_helper; - } else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) { + else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56) wq = fs_info->endio_raid56_workers; - func = btrfs_endio_raid56_helper; - } else if (end_io_wq->metadata) { + else if (end_io_wq->metadata) wq = fs_info->endio_meta_workers; - func = btrfs_endio_meta_helper; - } else { + else wq = fs_info->endio_workers; - func = btrfs_endio_helper; - } } - btrfs_init_work(&end_io_wq->work, func, end_workqueue_fn, NULL, NULL); + btrfs_init_work(&end_io_wq->work, end_workqueue_fn, NULL, NULL); btrfs_queue_work(wq, &end_io_wq->work); } @@ -835,8 +823,8 @@ blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, async->mirror_num = mirror_num; async->submit_bio_start = submit_bio_start; - btrfs_init_work(&async->work, btrfs_worker_helper, run_one_async_start, - run_one_async_done, run_one_async_free); + btrfs_init_work(&async->work, run_one_async_start, run_one_async_done, + run_one_async_free); async->bio_offset = bio_offset; diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index be9dc78aa727..33c6b191ca59 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -1899,7 +1899,7 @@ static int __process_pages_contig(struct address_space *mapping, if (page_ops & PAGE_SET_PRIVATE2) SetPagePrivate2(pages[i]); - if (pages[i] == locked_page) { + if (locked_page && pages[i] == locked_page) { put_page(pages[i]); pages_locked++; continue; diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index e5758f62e8d8..0b2758961b1c 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -712,10 +712,12 @@ cleanup_and_bail_uncompressed: * to our extent and set things up for the async work queue to run * cow_file_range to do the normal delalloc dance. */ - if (page_offset(async_chunk->locked_page) >= start && - page_offset(async_chunk->locked_page) <= end) + if (async_chunk->locked_page && + (page_offset(async_chunk->locked_page) >= start && + page_offset(async_chunk->locked_page)) <= end) { __set_page_dirty_nobuffers(async_chunk->locked_page); /* unlocked later on in the async handlers */ + } if (redirty) extent_range_redirty_for_io(inode, start, end); @@ -795,7 +797,7 @@ retry: async_extent->start + async_extent->ram_size - 1, WB_SYNC_ALL); - else if (ret) + else if (ret && async_chunk->locked_page) unlock_page(async_chunk->locked_page); kfree(async_extent); cond_resched(); @@ -1264,14 +1266,27 @@ static int cow_file_range_async(struct inode *inode, struct page *locked_page, async_chunk[i].inode = inode; async_chunk[i].start = start; async_chunk[i].end = cur_end; - async_chunk[i].locked_page = locked_page; async_chunk[i].write_flags = write_flags; INIT_LIST_HEAD(&async_chunk[i].extents); - btrfs_init_work(&async_chunk[i].work, - btrfs_delalloc_helper, - async_cow_start, async_cow_submit, - async_cow_free); + /* + * The locked_page comes all the way from writepage and its + * the original page we were actually given. As we spread + * this large delalloc region across multiple async_chunk + * structs, only the first struct needs a pointer to locked_page + * + * This way we don't need racey decisions about who is supposed + * to unlock it. + */ + if (locked_page) { + async_chunk[i].locked_page = locked_page; + locked_page = NULL; + } else { + async_chunk[i].locked_page = NULL; + } + + btrfs_init_work(&async_chunk[i].work, async_cow_start, + async_cow_submit, async_cow_free); nr_pages = DIV_ROUND_UP(cur_end - start, PAGE_SIZE); atomic_add(nr_pages, &fs_info->async_delalloc_pages); @@ -1439,10 +1454,10 @@ next_slot: disk_num_bytes = btrfs_file_extent_disk_num_bytes(leaf, fi); /* - * If extent we got ends before our range starts, skip - * to next extent + * If the extent we got ends before our current offset, + * skip to the next extent. */ - if (extent_end <= start) { + if (extent_end <= cur_offset) { path->slots[0]++; goto next_slot; } @@ -2264,8 +2279,7 @@ int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end) SetPageChecked(page); get_page(page); - btrfs_init_work(&fixup->work, btrfs_fixup_helper, - btrfs_writepage_fixup_worker, NULL, NULL); + btrfs_init_work(&fixup->work, btrfs_writepage_fixup_worker, NULL, NULL); fixup->page = page; btrfs_queue_work(fs_info->fixup_workers, &fixup->work); return -EBUSY; @@ -3258,7 +3272,6 @@ void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start, struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); struct btrfs_ordered_extent *ordered_extent = NULL; struct btrfs_workqueue *wq; - btrfs_work_func_t func; trace_btrfs_writepage_end_io_hook(page, start, end, uptodate); @@ -3267,16 +3280,12 @@ void btrfs_writepage_endio_finish_ordered(struct page *page, u64 start, end - start + 1, uptodate)) return; - if (btrfs_is_free_space_inode(BTRFS_I(inode))) { + if (btrfs_is_free_space_inode(BTRFS_I(inode))) wq = fs_info->endio_freespace_worker; - func = btrfs_freespace_write_helper; - } else { + else wq = fs_info->endio_write_workers; - func = btrfs_endio_write_helper; - } - btrfs_init_work(&ordered_extent->work, func, finish_ordered_fn, NULL, - NULL); + btrfs_init_work(&ordered_extent->work, finish_ordered_fn, NULL, NULL); btrfs_queue_work(wq, &ordered_extent->work); } @@ -8213,18 +8222,14 @@ static void __endio_write_update_ordered(struct inode *inode, struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); struct btrfs_ordered_extent *ordered = NULL; struct btrfs_workqueue *wq; - btrfs_work_func_t func; u64 ordered_offset = offset; u64 ordered_bytes = bytes; u64 last_offset; - if (btrfs_is_free_space_inode(BTRFS_I(inode))) { + if (btrfs_is_free_space_inode(BTRFS_I(inode))) wq = fs_info->endio_freespace_worker; - func = btrfs_freespace_write_helper; - } else { + else wq = fs_info->endio_write_workers; - func = btrfs_endio_write_helper; - } while (ordered_offset < offset + bytes) { last_offset = ordered_offset; @@ -8232,9 +8237,8 @@ static void __endio_write_update_ordered(struct inode *inode, &ordered_offset, ordered_bytes, uptodate)) { - btrfs_init_work(&ordered->work, func, - finish_ordered_fn, - NULL, NULL); + btrfs_init_work(&ordered->work, finish_ordered_fn, NULL, + NULL); btrfs_queue_work(wq, &ordered->work); } /* @@ -10119,8 +10123,7 @@ static struct btrfs_delalloc_work *btrfs_alloc_delalloc_work(struct inode *inode init_completion(&work->completion); INIT_LIST_HEAD(&work->list); work->inode = inode; - btrfs_init_work(&work->work, btrfs_flush_delalloc_helper, - btrfs_run_delalloc_work, NULL, NULL); + btrfs_init_work(&work->work, btrfs_run_delalloc_work, NULL, NULL); return work; } diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index 24b6c72b9a59..6240a5a1f2c0 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c @@ -547,7 +547,6 @@ u64 btrfs_wait_ordered_extents(struct btrfs_root *root, u64 nr, spin_unlock(&root->ordered_extent_lock); btrfs_init_work(&ordered->flush_work, - btrfs_flush_delalloc_helper, btrfs_run_ordered_extent_work, NULL, NULL); list_add_tail(&ordered->work_list, &works); btrfs_queue_work(fs_info->flush_workers, &ordered->flush_work); diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 3ad151655eb8..27a903aaf43b 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -3280,7 +3280,6 @@ qgroup_rescan_init(struct btrfs_fs_info *fs_info, u64 progress_objectid, memset(&fs_info->qgroup_rescan_work, 0, sizeof(fs_info->qgroup_rescan_work)); btrfs_init_work(&fs_info->qgroup_rescan_work, - btrfs_qgroup_rescan_helper, btrfs_qgroup_rescan_worker, NULL, NULL); return 0; } diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c index 57a2ac721985..8f47a85944eb 100644 --- a/fs/btrfs/raid56.c +++ b/fs/btrfs/raid56.c @@ -190,7 +190,7 @@ static void scrub_parity_work(struct btrfs_work *work); static void start_async_work(struct btrfs_raid_bio *rbio, btrfs_func_t work_func) { - btrfs_init_work(&rbio->work, btrfs_rmw_helper, work_func, NULL, NULL); + btrfs_init_work(&rbio->work, work_func, NULL, NULL); btrfs_queue_work(rbio->fs_info->rmw_workers, &rbio->work); } @@ -1743,8 +1743,7 @@ static void btrfs_raid_unplug(struct blk_plug_cb *cb, bool from_schedule) plug = container_of(cb, struct btrfs_plug_cb, cb); if (from_schedule) { - btrfs_init_work(&plug->work, btrfs_rmw_helper, - unplug_work, NULL, NULL); + btrfs_init_work(&plug->work, unplug_work, NULL, NULL); btrfs_queue_work(plug->info->rmw_workers, &plug->work); return; diff --git a/fs/btrfs/reada.c b/fs/btrfs/reada.c index dd4f9c2b7107..1feaeadc8cf5 100644 --- a/fs/btrfs/reada.c +++ b/fs/btrfs/reada.c @@ -819,8 +819,7 @@ static void reada_start_machine(struct btrfs_fs_info *fs_info) /* FIXME we cannot handle this properly right now */ BUG(); } - btrfs_init_work(&rmw->work, btrfs_readahead_helper, - reada_start_machine_worker, NULL, NULL); + btrfs_init_work(&rmw->work, reada_start_machine_worker, NULL, NULL); rmw->fs_info = fs_info; btrfs_queue_work(fs_info->readahead_workers, &rmw->work); diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index a0770a6aee00..a7b043fd7a57 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -598,8 +598,8 @@ static noinline_for_stack struct scrub_ctx *scrub_setup_ctx( sbio->index = i; sbio->sctx = sctx; sbio->page_count = 0; - btrfs_init_work(&sbio->work, btrfs_scrub_helper, - scrub_bio_end_io_worker, NULL, NULL); + btrfs_init_work(&sbio->work, scrub_bio_end_io_worker, NULL, + NULL); if (i != SCRUB_BIOS_PER_SCTX - 1) sctx->bios[i]->next_free = i + 1; @@ -1720,8 +1720,7 @@ static void scrub_wr_bio_end_io(struct bio *bio) sbio->status = bio->bi_status; sbio->bio = bio; - btrfs_init_work(&sbio->work, btrfs_scrubwrc_helper, - scrub_wr_bio_end_io_worker, NULL, NULL); + btrfs_init_work(&sbio->work, scrub_wr_bio_end_io_worker, NULL, NULL); btrfs_queue_work(fs_info->scrub_wr_completion_workers, &sbio->work); } @@ -2203,8 +2202,7 @@ static void scrub_missing_raid56_pages(struct scrub_block *sblock) raid56_add_scrub_pages(rbio, spage->page, spage->logical); } - btrfs_init_work(&sblock->work, btrfs_scrub_helper, - scrub_missing_raid56_worker, NULL, NULL); + btrfs_init_work(&sblock->work, scrub_missing_raid56_worker, NULL, NULL); scrub_block_get(sblock); scrub_pending_bio_inc(sctx); raid56_submit_missing_rbio(rbio); @@ -2742,8 +2740,8 @@ static void scrub_parity_bio_endio(struct bio *bio) bio_put(bio); - btrfs_init_work(&sparity->work, btrfs_scrubparity_helper, - scrub_parity_bio_endio_worker, NULL, NULL); + btrfs_init_work(&sparity->work, scrub_parity_bio_endio_worker, NULL, + NULL); btrfs_queue_work(fs_info->scrub_parity_workers, &sparity->work); } diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index e04409f85063..d8d7b1ee83ca 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -6676,8 +6676,7 @@ struct btrfs_device *btrfs_alloc_device(struct btrfs_fs_info *fs_info, else generate_random_uuid(dev->uuid); - btrfs_init_work(&dev->work, btrfs_submit_helper, - pending_bios_fn, NULL, NULL); + btrfs_init_work(&dev->work, pending_bios_fn, NULL, NULL); return dev; } diff --git a/fs/buffer.c b/fs/buffer.c index 39f4f884b201..801517eda2ee 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3031,8 +3031,6 @@ static void end_bio_bh_io_sync(struct bio *bio) void guard_bio_eod(int op, struct bio *bio) { sector_t maxsector; - struct bio_vec *bvec = bio_last_bvec_all(bio); - unsigned truncated_bytes; struct hd_struct *part; rcu_read_lock(); @@ -3058,28 +3056,7 @@ void guard_bio_eod(int op, struct bio *bio) if (likely((bio->bi_iter.bi_size >> 9) <= maxsector)) return; - /* Uhhuh. We've got a bio that straddles the device size! */ - truncated_bytes = bio->bi_iter.bi_size - (maxsector << 9); - - /* - * The bio contains more than one segment which spans EOD, just return - * and let IO layer turn it into an EIO - */ - if (truncated_bytes > bvec->bv_len) - return; - - /* Truncate the bio.. */ - bio->bi_iter.bi_size -= truncated_bytes; - bvec->bv_len -= truncated_bytes; - - /* ..and clear the end of the buffer for reads */ - if (op == REQ_OP_READ) { - struct bio_vec bv; - - mp_bvec_last_segment(bvec, &bv); - zero_user(bv.bv_page, bv.bv_offset + bv.bv_len, - truncated_bytes); - } + bio_truncate(bio, maxsector << 9); } static int submit_bh_wbc(int op, int op_flags, struct buffer_head *bh, diff --git a/fs/cifs/dfs_cache.c b/fs/cifs/dfs_cache.c index 1692c0c6c23a..2faa05860a48 100644 --- a/fs/cifs/dfs_cache.c +++ b/fs/cifs/dfs_cache.c @@ -1317,7 +1317,6 @@ static struct cifs_ses *find_root_ses(struct dfs_cache_vol_info *vi, int rc; struct dfs_info3_param ref = {0}; char *mdata = NULL, *devname = NULL; - bool is_smb3 = tcon->ses->server->vals->header_preamble_size == 0; struct TCP_Server_Info *server; struct cifs_ses *ses; struct smb_vol vol; @@ -1344,7 +1343,7 @@ static struct cifs_ses *find_root_ses(struct dfs_cache_vol_info *vi, goto out; } - rc = cifs_setup_volume_info(&vol, mdata, devname, is_smb3); + rc = cifs_setup_volume_info(&vol, mdata, devname, false); kfree(devname); if (rc) { diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index df9377828e2f..ed59e4a8db59 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -163,7 +163,7 @@ cifs_fattr_to_inode(struct inode *inode, struct cifs_fattr *fattr) spin_lock(&inode->i_lock); /* we do not want atime to be less than mtime, it broke some apps */ - if (timespec64_compare(&fattr->cf_atime, &fattr->cf_mtime)) + if (timespec64_compare(&fattr->cf_atime, &fattr->cf_mtime) < 0) inode->i_atime = fattr->cf_mtime; else inode->i_atime = fattr->cf_atime; diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index c985caa2d955..e1d8cec6ba2e 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -252,7 +252,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon) if (tcon == NULL) return 0; - if (smb2_command == SMB2_TREE_CONNECT || smb2_command == SMB2_IOCTL) + if (smb2_command == SMB2_TREE_CONNECT) return 0; if (tcon->tidStatus == CifsExiting) { @@ -426,16 +426,9 @@ fill_small_buf(__le16 smb2_command, struct cifs_tcon *tcon, void *buf, * SMB information in the SMB header. If the return code is zero, this * function must have filled in request_buf pointer. */ -static int -smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon, - void **request_buf, unsigned int *total_len) +static int __smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon, + void **request_buf, unsigned int *total_len) { - int rc; - - rc = smb2_reconnect(smb2_command, tcon); - if (rc) - return rc; - /* BB eventually switch this to SMB2 specific small buf size */ if (smb2_command == SMB2_SET_INFO) *request_buf = cifs_buf_get(); @@ -456,7 +449,31 @@ smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon, cifs_stats_inc(&tcon->num_smbs_sent); } - return rc; + return 0; +} + +static int smb2_plain_req_init(__le16 smb2_command, struct cifs_tcon *tcon, + void **request_buf, unsigned int *total_len) +{ + int rc; + + rc = smb2_reconnect(smb2_command, tcon); + if (rc) + return rc; + + return __smb2_plain_req_init(smb2_command, tcon, request_buf, + total_len); +} + +static int smb2_ioctl_req_init(u32 opcode, struct cifs_tcon *tcon, + void **request_buf, unsigned int *total_len) +{ + /* Skip reconnect only for FSCTL_VALIDATE_NEGOTIATE_INFO IOCTLs */ + if (opcode == FSCTL_VALIDATE_NEGOTIATE_INFO) { + return __smb2_plain_req_init(SMB2_IOCTL, tcon, request_buf, + total_len); + } + return smb2_plain_req_init(SMB2_IOCTL, tcon, request_buf, total_len); } /* For explanation of negotiate contexts see MS-SMB2 section 2.2.3.1 */ @@ -2661,7 +2678,7 @@ SMB2_ioctl_init(struct cifs_tcon *tcon, struct smb_rqst *rqst, int rc; char *in_data_buf; - rc = smb2_plain_req_init(SMB2_IOCTL, tcon, (void **) &req, &total_len); + rc = smb2_ioctl_req_init(opcode, tcon, (void **) &req, &total_len); if (rc) return rc; diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index a7ec2d3dff92..e0226b2138d6 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c @@ -1032,10 +1032,11 @@ COMPAT_SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, #endif case FICLONE: + goto do_ioctl; case FICLONERANGE: case FIDEDUPERANGE: case FS_IOC_FIEMAP: - goto do_ioctl; + goto found_handler; case FIBMAP: case FIGETBSZ: diff --git a/fs/io_uring.c b/fs/io_uring.c index 74e786578c77..a60c6315a348 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -239,7 +239,7 @@ struct io_ring_ctx { struct user_struct *user; - struct cred *creds; + const struct cred *creds; struct completion ctx_done; @@ -3876,7 +3876,7 @@ static int io_uring_create(unsigned entries, struct io_uring_params *p) ctx->account_mem = account_mem; ctx->user = user; - ctx->creds = prepare_creds(); + ctx->creds = get_current_cred(); if (!ctx->creds) { ret = -ENOMEM; goto err; diff --git a/fs/locks.c b/fs/locks.c index 6970f55daf54..44b6da032842 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -2853,7 +2853,7 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl, } if (inode) { /* userspace relies on this representation of dev_t */ - seq_printf(f, "%d %02x:%02x:%ld ", fl_pid, + seq_printf(f, "%d %02x:%02x:%lu ", fl_pid, MAJOR(inode->i_sb->s_dev), MINOR(inode->i_sb->s_dev), inode->i_ino); } else { diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index c65aeaa812d4..08f6eb2b73f8 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -3548,12 +3548,17 @@ static bool replay_matches_cache(struct svc_rqst *rqstp, (bool)seq->cachethis) return false; /* - * If there's an error than the reply can have fewer ops than - * the call. But if we cached a reply with *more* ops than the - * call you're sending us now, then this new call is clearly not - * really a replay of the old one: + * If there's an error then the reply can have fewer ops than + * the call. */ - if (slot->sl_opcnt < argp->opcnt) + if (slot->sl_opcnt < argp->opcnt && !slot->sl_status) + return false; + /* + * But if we cached a reply with *more* ops than the call you're + * sending us now, then this new call is clearly not really a + * replay of the old one: + */ + if (slot->sl_opcnt > argp->opcnt) return false; /* This is the only check explicitly called by spec: */ if (!same_creds(&rqstp->rq_cred, &slot->sl_cred)) diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index 6e774c5ea13b..8a2e284ccfcd 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c @@ -3282,6 +3282,7 @@ static void ocfs2_dlm_init_debug(struct ocfs2_super *osb) debugfs_create_u32("locking_filter", 0600, osb->osb_debug_root, &dlm_debug->d_filter_secs); + ocfs2_get_dlm_debug(dlm_debug); } static void ocfs2_dlm_shutdown_debug(struct ocfs2_super *osb) diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c index 8caff834f002..487ee39b438a 100644 --- a/fs/pstore/ram.c +++ b/fs/pstore/ram.c @@ -407,6 +407,17 @@ static int notrace ramoops_pstore_write(struct pstore_record *record) prz = cxt->dprzs[cxt->dump_write_cnt]; + /* + * Since this is a new crash dump, we need to reset the buffer in + * case it still has an old dump present. Without this, the new dump + * will get appended, which would seriously confuse anything trying + * to check dump file contents. Specifically, ramoops_read_kmsg_hdr() + * expects to find a dump header in the beginning of buffer data, so + * we must to reset the buffer values, in order to ensure that the + * header will be written to the beginning of the buffer. + */ + persistent_ram_zap(prz); + /* Build header and append record contents. */ hlen = ramoops_write_kmsg_hdr(prz, record); if (!hlen) @@ -577,6 +588,7 @@ static int ramoops_init_przs(const char *name, dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n", name, record_size, (unsigned long long)*paddr, err); + kfree(label); while (i > 0) { i--; @@ -622,6 +634,7 @@ static int ramoops_init_prz(const char *name, dev_err(dev, "failed to request %s mem region (0x%zx@0x%llx): %d\n", name, sz, (unsigned long long)*paddr, err); + kfree(label); return err; } diff --git a/fs/sdcardfs/inode.c b/fs/sdcardfs/inode.c index 4dd681e0d59d..edeca118cce5 100644 --- a/fs/sdcardfs/inode.c +++ b/fs/sdcardfs/inode.c @@ -87,6 +87,9 @@ static int sdcardfs_create(struct inode *dir, struct dentry *dentry, lower_dentry_mnt = lower_path.mnt; lower_parent_dentry = lock_parent(lower_dentry); + if (d_is_positive(lower_dentry)) + return -EEXIST; + /* set last 16bytes of mode field to 0664 */ mode = (mode & S_IFMT) | 00664; diff --git a/fs/sdcardfs/lookup.c b/fs/sdcardfs/lookup.c index a5c9686090e0..d2dfdf1028c6 100644 --- a/fs/sdcardfs/lookup.c +++ b/fs/sdcardfs/lookup.c @@ -257,7 +257,6 @@ static struct dentry *__sdcardfs_lookup(struct dentry *dentry, struct dentry *lower_dentry; const struct qstr *name; struct path lower_path; - struct qstr dname; struct dentry *ret_dentry = NULL; struct sdcardfs_sb_info *sbi; @@ -316,6 +315,7 @@ put_name: /* no error: handle positive dentries */ if (!err) { +found: /* check if the dentry is an obb dentry * if true, the lower_inode must be replaced with * the inode of the graft path @@ -362,28 +362,26 @@ put_name: if (err && err != -ENOENT) goto out; - /* instatiate a new negative dentry */ - dname.name = name->name; - dname.len = name->len; - - /* See if the low-level filesystem might want - * to use its own hash - */ - lower_dentry = d_hash_and_lookup(lower_dir_dentry, &dname); - if (IS_ERR(lower_dentry)) - return lower_dentry; - - if (!lower_dentry) { - /* We called vfs_path_lookup earlier, and did not get a negative - * dentry then. Don't confuse the lower filesystem by forcing - * one on it now... - */ - err = -ENOENT; + /* get a (very likely) new negative dentry */ + lower_dentry = lookup_one_len_unlocked(name->name, + lower_dir_dentry, name->len); + if (IS_ERR(lower_dentry)) { + err = PTR_ERR(lower_dentry); goto out; } lower_path.dentry = lower_dentry; lower_path.mnt = mntget(lower_dir_mnt); + + /* + * Check if someone sneakily filled in the dentry when + * we weren't looking. We'll check again in create. + */ + if (unlikely(d_inode_rcu(lower_dentry))) { + err = 0; + goto found; + } + sdcardfs_set_lower_path(dentry, &lower_path); /* diff --git a/fs/ubifs/tnc_commit.c b/fs/ubifs/tnc_commit.c index a384a0f9ff32..234be1c4dc87 100644 --- a/fs/ubifs/tnc_commit.c +++ b/fs/ubifs/tnc_commit.c @@ -212,7 +212,7 @@ static int is_idx_node_in_use(struct ubifs_info *c, union ubifs_key *key, /** * layout_leb_in_gaps - layout index nodes using in-the-gaps method. * @c: UBIFS file-system description object - * @p: return LEB number here + * @p: return LEB number in @c->gap_lebs[p] * * This function lays out new index nodes for dirty znodes using in-the-gaps * method of TNC commit. @@ -221,7 +221,7 @@ static int is_idx_node_in_use(struct ubifs_info *c, union ubifs_key *key, * This function returns the number of index nodes written into the gaps, or a * negative error code on failure. */ -static int layout_leb_in_gaps(struct ubifs_info *c, int *p) +static int layout_leb_in_gaps(struct ubifs_info *c, int p) { struct ubifs_scan_leb *sleb; struct ubifs_scan_node *snod; @@ -236,7 +236,7 @@ static int layout_leb_in_gaps(struct ubifs_info *c, int *p) * filled, however we do not check there at present. */ return lnum; /* Error code */ - *p = lnum; + c->gap_lebs[p] = lnum; dbg_gc("LEB %d", lnum); /* * Scan the index LEB. We use the generic scan for this even though @@ -355,7 +355,7 @@ static int get_leb_cnt(struct ubifs_info *c, int cnt) */ static int layout_in_gaps(struct ubifs_info *c, int cnt) { - int err, leb_needed_cnt, written, *p; + int err, leb_needed_cnt, written, p = 0, old_idx_lebs, *gap_lebs; dbg_gc("%d znodes to write", cnt); @@ -364,9 +364,9 @@ static int layout_in_gaps(struct ubifs_info *c, int cnt) if (!c->gap_lebs) return -ENOMEM; - p = c->gap_lebs; + old_idx_lebs = c->lst.idx_lebs; do { - ubifs_assert(c, p < c->gap_lebs + c->lst.idx_lebs); + ubifs_assert(c, p < c->lst.idx_lebs); written = layout_leb_in_gaps(c, p); if (written < 0) { err = written; @@ -392,9 +392,29 @@ static int layout_in_gaps(struct ubifs_info *c, int cnt) leb_needed_cnt = get_leb_cnt(c, cnt); dbg_gc("%d znodes remaining, need %d LEBs, have %d", cnt, leb_needed_cnt, c->ileb_cnt); + /* + * Dynamically change the size of @c->gap_lebs to prevent + * oob, because @c->lst.idx_lebs could be increased by + * function @get_idx_gc_leb (called by layout_leb_in_gaps-> + * ubifs_find_dirty_idx_leb) during loop. Only enlarge + * @c->gap_lebs when needed. + * + */ + if (leb_needed_cnt > c->ileb_cnt && p >= old_idx_lebs && + old_idx_lebs < c->lst.idx_lebs) { + old_idx_lebs = c->lst.idx_lebs; + gap_lebs = krealloc(c->gap_lebs, sizeof(int) * + (old_idx_lebs + 1), GFP_NOFS); + if (!gap_lebs) { + kfree(c->gap_lebs); + c->gap_lebs = NULL; + return -ENOMEM; + } + c->gap_lebs = gap_lebs; + } } while (leb_needed_cnt > c->ileb_cnt); - *p = -1; + c->gap_lebs[p] = -1; return 0; } diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index 02469d59c787..3f76da11197c 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -5300,7 +5300,7 @@ __xfs_bunmapi( * Make sure we don't touch multiple AGF headers out of order * in a single transaction, as that could cause AB-BA deadlocks. */ - if (!wasdel) { + if (!wasdel && !isrt) { agno = XFS_FSB_TO_AGNO(mp, del.br_startblock); if (prev_agno != NULLAGNUMBER && prev_agno > agno) break; diff --git a/fs/xfs/scrub/common.h b/fs/xfs/scrub/common.h index 003a772cd26c..2e50d146105d 100644 --- a/fs/xfs/scrub/common.h +++ b/fs/xfs/scrub/common.h @@ -14,8 +14,15 @@ static inline bool xchk_should_terminate( struct xfs_scrub *sc, - int *error) + int *error) { + /* + * If preemption is disabled, we need to yield to the scheduler every + * few seconds so that we don't run afoul of the soft lockup watchdog + * or RCU stall detector. + */ + cond_resched(); + if (fatal_signal_pending(current)) { if (*error == 0) *error = -EAGAIN; diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h index 6782f0d45ebe..49e5383d4222 100644 --- a/include/linux/ahci_platform.h +++ b/include/linux/ahci_platform.h @@ -19,6 +19,8 @@ struct ahci_host_priv; struct platform_device; struct scsi_host_template; +int ahci_platform_enable_phys(struct ahci_host_priv *hpriv); +void ahci_platform_disable_phys(struct ahci_host_priv *hpriv); int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); int ahci_platform_enable_regulators(struct ahci_host_priv *hpriv); diff --git a/include/linux/bio.h b/include/linux/bio.h index 63d0fee423fa..e5870aaa2d6c 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -471,6 +471,7 @@ extern struct bio *bio_copy_user_iov(struct request_queue *, gfp_t); extern int bio_uncopy_user(struct bio *); void zero_fill_bio_iter(struct bio *bio, struct bvec_iter iter); +void bio_truncate(struct bio *bio, unsigned new_size); static inline void zero_fill_bio(struct bio *bio) { diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 2846eeda3e92..db05277716e4 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -32,7 +32,8 @@ #define CLK_OPS_PARENT_ENABLE BIT(12) /* duty cycle call may be forwarded to the parent clock */ #define CLK_DUTY_CYCLE_PARENT BIT(13) -#define CLK_IS_MEASURE BIT(14) /* clock used for measurement only */ +#define CLK_DONT_HOLD_STATE BIT(14) /* Don't hold state */ +#define CLK_IS_MEASURE BIT(15) /* clock used for measurement only */ struct clk; struct clk_hw; @@ -824,6 +825,7 @@ void devm_clk_unregister(struct device *dev, struct clk *clk); void clk_hw_unregister(struct clk_hw *hw); void devm_clk_hw_unregister(struct device *dev, struct clk_hw *hw); +void clk_sync_state(struct device *dev); /* helper functions */ const char *__clk_get_name(const struct clk *clk); diff --git a/include/linux/device.h b/include/linux/device.h index 4babcf8f5d51..3f4aadf3d2cc 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -1518,6 +1518,17 @@ static inline struct device_node *dev_of_node(struct device *dev) return dev->of_node; } +static inline bool dev_has_sync_state(struct device *dev) +{ + if (!dev) + return false; + if (dev->driver && dev->driver->sync_state) + return true; + if (dev->bus && dev->bus->sync_state) + return true; + return false; +} + void driver_init(void); /* diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 8fcdee1c0cf9..dad4a68fa009 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -1364,8 +1364,11 @@ static inline int dma_get_slave_caps(struct dma_chan *chan, static inline int dmaengine_desc_set_reuse(struct dma_async_tx_descriptor *tx) { struct dma_slave_caps caps; + int ret; - dma_get_slave_caps(tx->chan, &caps); + ret = dma_get_slave_caps(tx->chan, &caps); + if (ret) + return ret; if (caps.descriptor_reuse) { tx->flags |= DMA_CTRL_REUSE; diff --git a/include/linux/libata.h b/include/linux/libata.h index 207e7ee764ce..fa0c3dae2094 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -1174,6 +1174,7 @@ extern unsigned int ata_do_dev_read_id(struct ata_device *dev, struct ata_taskfile *tf, u16 *id); extern void ata_qc_complete(struct ata_queued_cmd *qc); extern int ata_qc_complete_multiple(struct ata_port *ap, u64 qc_active); +extern u64 ata_qc_get_active(struct ata_port *ap); extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd); extern int ata_std_bios_param(struct scsi_device *sdev, struct block_device *bdev, diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h index fc1819b467b3..37fd9a733c4a 100644 --- a/include/linux/memory_hotplug.h +++ b/include/linux/memory_hotplug.h @@ -126,8 +126,8 @@ static inline bool movable_node_is_enabled(void) extern void arch_remove_memory(int nid, u64 start, u64 size, struct vmem_altmap *altmap); -extern void __remove_pages(struct zone *zone, unsigned long start_pfn, - unsigned long nr_pages, struct vmem_altmap *altmap); +extern void __remove_pages(unsigned long start_pfn, unsigned long nr_pages, + struct vmem_altmap *altmap); /* reasonably generic interface to expand the physical pages */ extern int __add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, @@ -351,6 +351,9 @@ extern int add_memory(int nid, u64 start, u64 size); extern int add_memory_resource(int nid, struct resource *resource); extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages, struct vmem_altmap *altmap); +extern void remove_pfn_range_from_zone(struct zone *zone, + unsigned long start_pfn, + unsigned long nr_pages); extern bool is_memblock_offlined(struct memory_block *mem); extern int sparse_add_section(int nid, unsigned long pfn, unsigned long nr_pages, struct vmem_altmap *altmap); diff --git a/include/linux/nvme-fc-driver.h b/include/linux/nvme-fc-driver.h index 10f81629b9ce..6d0d70f3219c 100644 --- a/include/linux/nvme-fc-driver.h +++ b/include/linux/nvme-fc-driver.h @@ -270,6 +270,8 @@ struct nvme_fc_remote_port { * * Host/Initiator Transport Entrypoints/Parameters: * + * @module: The LLDD module using the interface + * * @localport_delete: The LLDD initiates deletion of a localport via * nvme_fc_deregister_localport(). However, the teardown is * asynchronous. This routine is called upon the completion of the @@ -383,6 +385,8 @@ struct nvme_fc_remote_port { * Value is Mandatory. Allowed to be zero. */ struct nvme_fc_port_template { + struct module *module; + /* initiator-based functions */ void (*localport_delete)(struct nvme_fc_local_port *); void (*remoteport_delete)(struct nvme_fc_remote_port *); diff --git a/include/linux/pci.h b/include/linux/pci.h index f9088c89a534..be529d311122 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -2310,9 +2310,11 @@ struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus); void pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *)); +bool pci_pr3_present(struct pci_dev *pdev); #else static inline struct irq_domain * pci_host_bridge_acpi_msi_domain(struct pci_bus *bus) { return NULL; } +static inline bool pci_pr3_present(struct pci_dev *pdev) { return false; } #endif #ifdef CONFIG_EEH diff --git a/include/linux/regulator/ab8500.h b/include/linux/regulator/ab8500.h index 7cf8f797e13a..505e94a6e3e8 100644 --- a/include/linux/regulator/ab8500.h +++ b/include/linux/regulator/ab8500.h @@ -37,7 +37,6 @@ enum ab8505_regulator_id { AB8505_LDO_AUX6, AB8505_LDO_INTCORE, AB8505_LDO_ADC, - AB8505_LDO_USB, AB8505_LDO_AUDIO, AB8505_LDO_ANAMIC1, AB8505_LDO_ANAMIC2, diff --git a/include/net/neighbour.h b/include/net/neighbour.h index 5e679c8dae0b..8ec77bfdc1a4 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h @@ -467,7 +467,7 @@ static inline int neigh_hh_output(const struct hh_cache *hh, struct sk_buff *skb do { seq = read_seqbegin(&hh->hh_lock); - hh_len = hh->hh_len; + hh_len = READ_ONCE(hh->hh_len); if (likely(hh_len <= HH_DATA_MOD)) { hh_alen = HH_DATA_MOD; diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 47e61956168d..32e418dba133 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -149,8 +149,8 @@ static inline bool qdisc_is_percpu_stats(const struct Qdisc *q) static inline bool qdisc_is_empty(const struct Qdisc *qdisc) { if (qdisc_is_percpu_stats(qdisc)) - return qdisc->empty; - return !qdisc->q.qlen; + return READ_ONCE(qdisc->empty); + return !READ_ONCE(qdisc->q.qlen); } static inline bool qdisc_run_begin(struct Qdisc *qdisc) @@ -158,7 +158,7 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc) if (qdisc->flags & TCQ_F_NOLOCK) { if (!spin_trylock(&qdisc->seqlock)) return false; - qdisc->empty = false; + WRITE_ONCE(qdisc->empty, false); } else if (qdisc_is_running(qdisc)) { return false; } diff --git a/include/net/sock.h b/include/net/sock.h index e09e2886a836..6c5a3809483e 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2589,9 +2589,9 @@ static inline int sk_get_rmem0(const struct sock *sk, const struct proto *proto) */ static inline void sk_pacing_shift_update(struct sock *sk, int val) { - if (!sk || !sk_fullsock(sk) || sk->sk_pacing_shift == val) + if (!sk || !sk_fullsock(sk) || READ_ONCE(sk->sk_pacing_shift) == val) return; - sk->sk_pacing_shift = val; + WRITE_ONCE(sk->sk_pacing_shift, val); } /* if a socket is bound to a device, check that the given device diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 9e7cee5307e0..5c51021775af 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -852,7 +852,8 @@ static const int caller_saved[CALLER_SAVED_REGS] = { BPF_REG_0, BPF_REG_1, BPF_REG_2, BPF_REG_3, BPF_REG_4, BPF_REG_5 }; -static void __mark_reg_not_init(struct bpf_reg_state *reg); +static void __mark_reg_not_init(const struct bpf_verifier_env *env, + struct bpf_reg_state *reg); /* Mark the unknown part of a register (variable offset or scalar value) as * known to have the value @imm. @@ -890,7 +891,7 @@ static void mark_reg_known_zero(struct bpf_verifier_env *env, verbose(env, "mark_reg_known_zero(regs, %u)\n", regno); /* Something bad happened, let's kill all regs */ for (regno = 0; regno < MAX_BPF_REG; regno++) - __mark_reg_not_init(regs + regno); + __mark_reg_not_init(env, regs + regno); return; } __mark_reg_known_zero(regs + regno); @@ -999,7 +1000,8 @@ static void __mark_reg_unbounded(struct bpf_reg_state *reg) } /* Mark a register as having a completely unknown (scalar) value. */ -static void __mark_reg_unknown(struct bpf_reg_state *reg) +static void __mark_reg_unknown(const struct bpf_verifier_env *env, + struct bpf_reg_state *reg) { /* * Clear type, id, off, and union(map_ptr, range) and @@ -1009,6 +1011,8 @@ static void __mark_reg_unknown(struct bpf_reg_state *reg) reg->type = SCALAR_VALUE; reg->var_off = tnum_unknown; reg->frameno = 0; + reg->precise = env->subprog_cnt > 1 || !env->allow_ptr_leaks ? + true : false; __mark_reg_unbounded(reg); } @@ -1019,19 +1023,16 @@ static void mark_reg_unknown(struct bpf_verifier_env *env, verbose(env, "mark_reg_unknown(regs, %u)\n", regno); /* Something bad happened, let's kill all regs except FP */ for (regno = 0; regno < BPF_REG_FP; regno++) - __mark_reg_not_init(regs + regno); + __mark_reg_not_init(env, regs + regno); return; } - regs += regno; - __mark_reg_unknown(regs); - /* constant backtracking is enabled for root without bpf2bpf calls */ - regs->precise = env->subprog_cnt > 1 || !env->allow_ptr_leaks ? - true : false; + __mark_reg_unknown(env, regs + regno); } -static void __mark_reg_not_init(struct bpf_reg_state *reg) +static void __mark_reg_not_init(const struct bpf_verifier_env *env, + struct bpf_reg_state *reg) { - __mark_reg_unknown(reg); + __mark_reg_unknown(env, reg); reg->type = NOT_INIT; } @@ -1042,10 +1043,10 @@ static void mark_reg_not_init(struct bpf_verifier_env *env, verbose(env, "mark_reg_not_init(regs, %u)\n", regno); /* Something bad happened, let's kill all regs except FP */ for (regno = 0; regno < BPF_REG_FP; regno++) - __mark_reg_not_init(regs + regno); + __mark_reg_not_init(env, regs + regno); return; } - __mark_reg_not_init(regs + regno); + __mark_reg_not_init(env, regs + regno); } #define DEF_NOT_SUBREG (0) @@ -3066,7 +3067,7 @@ static int check_stack_boundary(struct bpf_verifier_env *env, int regno, } if (state->stack[spi].slot_type[0] == STACK_SPILL && state->stack[spi].spilled_ptr.type == SCALAR_VALUE) { - __mark_reg_unknown(&state->stack[spi].spilled_ptr); + __mark_reg_unknown(env, &state->stack[spi].spilled_ptr); for (j = 0; j < BPF_REG_SIZE; j++) state->stack[spi].slot_type[j] = STACK_MISC; goto mark; @@ -3706,7 +3707,7 @@ static void __clear_all_pkt_pointers(struct bpf_verifier_env *env, if (!reg) continue; if (reg_is_pkt_pointer_any(reg)) - __mark_reg_unknown(reg); + __mark_reg_unknown(env, reg); } } @@ -3734,7 +3735,7 @@ static void release_reg_references(struct bpf_verifier_env *env, if (!reg) continue; if (reg->ref_obj_id == ref_obj_id) - __mark_reg_unknown(reg); + __mark_reg_unknown(env, reg); } } @@ -4357,7 +4358,7 @@ static int adjust_ptr_min_max_vals(struct bpf_verifier_env *env, /* Taint dst register if offset had invalid bounds derived from * e.g. dead branches. */ - __mark_reg_unknown(dst_reg); + __mark_reg_unknown(env, dst_reg); return 0; } @@ -4609,13 +4610,13 @@ static int adjust_scalar_min_max_vals(struct bpf_verifier_env *env, /* Taint dst register if offset had invalid bounds derived from * e.g. dead branches. */ - __mark_reg_unknown(dst_reg); + __mark_reg_unknown(env, dst_reg); return 0; } if (!src_known && opcode != BPF_ADD && opcode != BPF_SUB && opcode != BPF_AND) { - __mark_reg_unknown(dst_reg); + __mark_reg_unknown(env, dst_reg); return 0; } @@ -6746,7 +6747,7 @@ static void clean_func_state(struct bpf_verifier_env *env, /* since the register is unused, clear its state * to make further comparison simpler */ - __mark_reg_not_init(&st->regs[i]); + __mark_reg_not_init(env, &st->regs[i]); } for (i = 0; i < st->allocated_stack / BPF_REG_SIZE; i++) { @@ -6754,7 +6755,7 @@ static void clean_func_state(struct bpf_verifier_env *env, /* liveness must not touch this stack slot anymore */ st->stack[i].spilled_ptr.live |= REG_LIVE_DONE; if (!(live & REG_LIVE_READ)) { - __mark_reg_not_init(&st->stack[i].spilled_ptr); + __mark_reg_not_init(env, &st->stack[i].spilled_ptr); for (j = 0; j < BPF_REG_SIZE; j++) st->stack[i].slot_type[j] = STACK_INVALID; } diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c index 7f83f4121d8d..aec171bcfedc 100644 --- a/kernel/cgroup/cgroup-v1.c +++ b/kernel/cgroup/cgroup-v1.c @@ -513,7 +513,8 @@ static ssize_t __cgroup1_procs_write(struct kernfs_open_file *of, tcred = get_task_cred(task); if (!uid_eq(cred->euid, GLOBAL_ROOT_UID) && !uid_eq(cred->euid, tcred->uid) && - !uid_eq(cred->euid, tcred->suid)) + !uid_eq(cred->euid, tcred->suid) && + !ns_capable(tcred->user_ns, CAP_SYS_NICE)) ret = -EACCES; put_cred(tcred); if (ret) diff --git a/kernel/cred.c b/kernel/cred.c index c0a4c12d38b2..9ed51b70ed80 100644 --- a/kernel/cred.c +++ b/kernel/cred.c @@ -223,7 +223,7 @@ struct cred *cred_alloc_blank(void) new->magic = CRED_MAGIC; #endif - if (security_cred_alloc_blank(new, GFP_KERNEL) < 0) + if (security_cred_alloc_blank(new, GFP_KERNEL_ACCOUNT) < 0) goto error; return new; @@ -282,7 +282,7 @@ struct cred *prepare_creds(void) new->security = NULL; #endif - if (security_prepare_creds(new, old, GFP_KERNEL) < 0) + if (security_prepare_creds(new, old, GFP_KERNEL_ACCOUNT) < 0) goto error; validate_creds(new); return new; @@ -715,7 +715,7 @@ struct cred *prepare_kernel_cred(struct task_struct *daemon) #ifdef CONFIG_SECURITY new->security = NULL; #endif - if (security_prepare_creds(new, old, GFP_KERNEL) < 0) + if (security_prepare_creds(new, old, GFP_KERNEL_ACCOUNT) < 0) goto error; put_cred(old); diff --git a/kernel/module.c b/kernel/module.c index 47f391bc9ca2..8dd3097c5932 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1033,6 +1033,8 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user, strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module)); free_module(mod); + /* someone could wait for the module in add_unformed_module() */ + wake_up_all(&module_wq); return 0; out: mutex_unlock(&module_mutex); diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c index 83105874f255..26b9168321e7 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c @@ -734,8 +734,15 @@ zone_found: * We have found the zone. Now walk the radix tree to find the leaf node * for our PFN. */ + + /* + * If the zone we wish to scan is the the current zone and the + * pfn falls into the current node then we do not need to walk + * the tree. + */ node = bm->cur.node; - if (((pfn - zone->start_pfn) & ~BM_BLOCK_MASK) == bm->cur.node_pfn) + if (zone == bm->cur.zone && + ((pfn - zone->start_pfn) & ~BM_BLOCK_MASK) == bm->cur.node_pfn) goto node_found; node = zone->rtree; diff --git a/kernel/seccomp.c b/kernel/seccomp.c index dba52a7db5e8..614a557a0814 100644 --- a/kernel/seccomp.c +++ b/kernel/seccomp.c @@ -1015,6 +1015,13 @@ static long seccomp_notify_recv(struct seccomp_filter *filter, struct seccomp_notif unotif; ssize_t ret; + /* Verify that we're not given garbage to keep struct extensible. */ + ret = check_zeroed_user(buf, sizeof(unotif)); + if (ret < 0) + return ret; + if (!ret) + return -EINVAL; + memset(&unotif, 0, sizeof(unotif)); ret = down_interruptible(&filter->notif->request); diff --git a/kernel/taskstats.c b/kernel/taskstats.c index 13a0f2e6ebc2..e2ac0e37c4ae 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c @@ -554,25 +554,33 @@ static int taskstats_user_cmd(struct sk_buff *skb, struct genl_info *info) static struct taskstats *taskstats_tgid_alloc(struct task_struct *tsk) { struct signal_struct *sig = tsk->signal; - struct taskstats *stats; + struct taskstats *stats_new, *stats; - if (sig->stats || thread_group_empty(tsk)) - goto ret; + /* Pairs with smp_store_release() below. */ + stats = smp_load_acquire(&sig->stats); + if (stats || thread_group_empty(tsk)) + return stats; /* No problem if kmem_cache_zalloc() fails */ - stats = kmem_cache_zalloc(taskstats_cache, GFP_KERNEL); + stats_new = kmem_cache_zalloc(taskstats_cache, GFP_KERNEL); spin_lock_irq(&tsk->sighand->siglock); - if (!sig->stats) { - sig->stats = stats; - stats = NULL; + stats = sig->stats; + if (!stats) { + /* + * Pairs with smp_store_release() above and order the + * kmem_cache_zalloc(). + */ + smp_store_release(&sig->stats, stats_new); + stats = stats_new; + stats_new = NULL; } spin_unlock_irq(&tsk->sighand->siglock); - if (stats) - kmem_cache_free(taskstats_cache, stats); -ret: - return sig->stats; + if (stats_new) + kmem_cache_free(taskstats_cache, stats_new); + + return stats; } /* Send pid data out on exit */ diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 3feec7020891..85d9f4931c3e 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -524,8 +524,7 @@ static int function_stat_show(struct seq_file *m, void *v) } #ifdef CONFIG_FUNCTION_GRAPH_TRACER - avg = rec->time; - do_div(avg, rec->counter); + avg = div64_ul(rec->time, rec->counter); if (tracing_thresh && (avg < tracing_thresh)) goto out; #endif @@ -551,7 +550,8 @@ static int function_stat_show(struct seq_file *m, void *v) * Divide only 1000 for ns^2 -> us^2 conversion. * trace_print_graph_duration will divide 1000 again. */ - do_div(stddev, rec->counter * (rec->counter - 1) * 1000); + stddev = div64_ul(stddev, + rec->counter * (rec->counter - 1) * 1000); } trace_seq_init(&s); diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index ca4e2ad843e3..5389123c6909 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -4603,6 +4603,10 @@ int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set) int set_tracer_flag(struct trace_array *tr, unsigned int mask, int enabled) { + if ((mask == TRACE_ITER_RECORD_TGID) || + (mask == TRACE_ITER_RECORD_CMD)) + lockdep_assert_held(&event_mutex); + /* do nothing if flag is already set */ if (!!(tr->trace_flags & mask) == !!enabled) return 0; @@ -4670,6 +4674,7 @@ static int trace_set_options(struct trace_array *tr, char *option) cmp += len; + mutex_lock(&event_mutex); mutex_lock(&trace_types_lock); ret = match_string(trace_options, -1, cmp); @@ -4680,6 +4685,7 @@ static int trace_set_options(struct trace_array *tr, char *option) ret = set_tracer_flag(tr, 1 << ret, !neg); mutex_unlock(&trace_types_lock); + mutex_unlock(&event_mutex); /* * If the first trailing whitespace is replaced with '\0' by strstrip, @@ -7988,9 +7994,11 @@ trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt, if (val != 0 && val != 1) return -EINVAL; + mutex_lock(&event_mutex); mutex_lock(&trace_types_lock); ret = set_tracer_flag(tr, 1 << index, val); mutex_unlock(&trace_types_lock); + mutex_unlock(&event_mutex); if (ret < 0) return ret; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 85b752b7596f..ab9835d2728d 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -320,7 +320,8 @@ void trace_event_enable_cmd_record(bool enable) struct trace_event_file *file; struct trace_array *tr; - mutex_lock(&event_mutex); + lockdep_assert_held(&event_mutex); + do_for_each_event_file(tr, file) { if (!(file->flags & EVENT_FILE_FL_ENABLED)) @@ -334,7 +335,6 @@ void trace_event_enable_cmd_record(bool enable) clear_bit(EVENT_FILE_FL_RECORDED_CMD_BIT, &file->flags); } } while_for_each_event_file(); - mutex_unlock(&event_mutex); } void trace_event_enable_tgid_record(bool enable) @@ -342,7 +342,8 @@ void trace_event_enable_tgid_record(bool enable) struct trace_event_file *file; struct trace_array *tr; - mutex_lock(&event_mutex); + lockdep_assert_held(&event_mutex); + do_for_each_event_file(tr, file) { if (!(file->flags & EVENT_FILE_FL_ENABLED)) continue; @@ -356,7 +357,6 @@ void trace_event_enable_tgid_record(bool enable) &file->flags); } } while_for_each_event_file(); - mutex_unlock(&event_mutex); } static int __ftrace_event_enable_disable(struct trace_event_file *file, diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c index c9a74f82b14a..bf44f6bbd0c3 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -1662,7 +1662,7 @@ static int process_system_preds(struct trace_subsystem_dir *dir, parse_error(pe, FILT_ERR_BAD_SUBSYS_FILTER, 0); return -EINVAL; fail_mem: - kfree(filter); + __free_filter(filter); /* If any call succeeded, we still need to sync */ if (!fail) tracepoint_synchronize_unregister(); diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index cef1b83b9005..58055d687a83 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -911,7 +911,26 @@ static notrace void trace_event_raw_event_synth(void *__data, strscpy(str_field, str_val, STR_VAR_LEN_MAX); n_u64 += STR_VAR_LEN_MAX / sizeof(u64); } else { - entry->fields[n_u64] = var_ref_vals[var_ref_idx + i]; + struct synth_field *field = event->fields[i]; + u64 val = var_ref_vals[var_ref_idx + i]; + + switch (field->size) { + case 1: + *(u8 *)&entry->fields[n_u64] = (u8)val; + break; + + case 2: + *(u16 *)&entry->fields[n_u64] = (u16)val; + break; + + case 4: + *(u32 *)&entry->fields[n_u64] = (u32)val; + break; + + default: + entry->fields[n_u64] = val; + break; + } n_u64++; } } diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c index 9a1c22310323..9e31bfc818ff 100644 --- a/kernel/trace/tracing_map.c +++ b/kernel/trace/tracing_map.c @@ -148,8 +148,8 @@ static int tracing_map_cmp_atomic64(void *val_a, void *val_b) #define DEFINE_TRACING_MAP_CMP_FN(type) \ static int tracing_map_cmp_##type(void *val_a, void *val_b) \ { \ - type a = *(type *)val_a; \ - type b = *(type *)val_b; \ + type a = (type)(*(u64 *)val_a); \ + type b = (type)(*(u64 *)val_b); \ \ return (a > b) ? 1 : ((a < b) ? -1 : 0); \ } diff --git a/lib/ubsan.c b/lib/ubsan.c index 0c4681118fcd..f007a406f89c 100644 --- a/lib/ubsan.c +++ b/lib/ubsan.c @@ -140,25 +140,21 @@ static void val_to_string(char *str, size_t size, struct type_descriptor *type, } } -static DEFINE_SPINLOCK(report_lock); - -static void ubsan_prologue(struct source_location *location, - unsigned long *flags) +static void ubsan_prologue(struct source_location *location) { current->in_ubsan++; - spin_lock_irqsave(&report_lock, *flags); pr_err("========================================" "========================================\n"); print_source_location("UBSAN: Undefined behaviour in", location); } -static void ubsan_epilogue(unsigned long *flags) +static void ubsan_epilogue(void) { dump_stack(); pr_err("========================================" "========================================\n"); - spin_unlock_irqrestore(&report_lock, *flags); + current->in_ubsan--; } @@ -167,14 +163,13 @@ static void handle_overflow(struct overflow_data *data, void *lhs, { struct type_descriptor *type = data->type; - unsigned long flags; char lhs_val_str[VALUE_LENGTH]; char rhs_val_str[VALUE_LENGTH]; if (suppress_report(&data->location)) return; - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); val_to_string(lhs_val_str, sizeof(lhs_val_str), type, lhs); val_to_string(rhs_val_str, sizeof(rhs_val_str), type, rhs); @@ -186,7 +181,7 @@ static void handle_overflow(struct overflow_data *data, void *lhs, rhs_val_str, type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); } void __ubsan_handle_add_overflow(struct overflow_data *data, @@ -214,20 +209,19 @@ EXPORT_SYMBOL(__ubsan_handle_mul_overflow); void __ubsan_handle_negate_overflow(struct overflow_data *data, void *old_val) { - unsigned long flags; char old_val_str[VALUE_LENGTH]; if (suppress_report(&data->location)) return; - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val); pr_err("negation of %s cannot be represented in type %s:\n", old_val_str, data->type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); } EXPORT_SYMBOL(__ubsan_handle_negate_overflow); @@ -235,13 +229,12 @@ EXPORT_SYMBOL(__ubsan_handle_negate_overflow); void __ubsan_handle_divrem_overflow(struct overflow_data *data, void *lhs, void *rhs) { - unsigned long flags; char rhs_val_str[VALUE_LENGTH]; if (suppress_report(&data->location)) return; - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); val_to_string(rhs_val_str, sizeof(rhs_val_str), data->type, rhs); @@ -251,58 +244,52 @@ void __ubsan_handle_divrem_overflow(struct overflow_data *data, else pr_err("division by zero\n"); - ubsan_epilogue(&flags); + ubsan_epilogue(); } EXPORT_SYMBOL(__ubsan_handle_divrem_overflow); static void handle_null_ptr_deref(struct type_mismatch_data_common *data) { - unsigned long flags; - if (suppress_report(data->location)) return; - ubsan_prologue(data->location, &flags); + ubsan_prologue(data->location); pr_err("%s null pointer of type %s\n", type_check_kinds[data->type_check_kind], data->type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); } static void handle_misaligned_access(struct type_mismatch_data_common *data, unsigned long ptr) { - unsigned long flags; - if (suppress_report(data->location)) return; - ubsan_prologue(data->location, &flags); + ubsan_prologue(data->location); pr_err("%s misaligned address %p for type %s\n", type_check_kinds[data->type_check_kind], (void *)ptr, data->type->type_name); pr_err("which requires %ld byte alignment\n", data->alignment); - ubsan_epilogue(&flags); + ubsan_epilogue(); } static void handle_object_size_mismatch(struct type_mismatch_data_common *data, unsigned long ptr) { - unsigned long flags; - if (suppress_report(data->location)) return; - ubsan_prologue(data->location, &flags); + ubsan_prologue(data->location); pr_err("%s address %p with insufficient space\n", type_check_kinds[data->type_check_kind], (void *) ptr); pr_err("for an object of type %s\n", data->type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); } static void ubsan_type_mismatch_common(struct type_mismatch_data_common *data, @@ -351,25 +338,23 @@ EXPORT_SYMBOL(__ubsan_handle_type_mismatch_v1); void __ubsan_handle_out_of_bounds(struct out_of_bounds_data *data, void *index) { - unsigned long flags; char index_str[VALUE_LENGTH]; if (suppress_report(&data->location)) return; - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); val_to_string(index_str, sizeof(index_str), data->index_type, index); pr_err("index %s is out of range for type %s\n", index_str, data->array_type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); } EXPORT_SYMBOL(__ubsan_handle_out_of_bounds); void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data, void *lhs, void *rhs) { - unsigned long flags; struct type_descriptor *rhs_type = data->rhs_type; struct type_descriptor *lhs_type = data->lhs_type; char rhs_str[VALUE_LENGTH]; @@ -379,7 +364,7 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data, if (suppress_report(&data->location)) goto out; - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); val_to_string(rhs_str, sizeof(rhs_str), rhs_type, rhs); val_to_string(lhs_str, sizeof(lhs_str), lhs_type, lhs); @@ -402,7 +387,7 @@ void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data, lhs_str, rhs_str, lhs_type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); out: user_access_restore(ua_flags); } @@ -411,11 +396,9 @@ EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds); void __ubsan_handle_builtin_unreachable(struct unreachable_data *data) { - unsigned long flags; - - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); pr_err("calling __builtin_unreachable()\n"); - ubsan_epilogue(&flags); + ubsan_epilogue(); panic("can't return from __builtin_unreachable()"); } EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable); @@ -423,19 +406,18 @@ EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable); void __ubsan_handle_load_invalid_value(struct invalid_value_data *data, void *val) { - unsigned long flags; char val_str[VALUE_LENGTH]; if (suppress_report(&data->location)) return; - ubsan_prologue(&data->location, &flags); + ubsan_prologue(&data->location); val_to_string(val_str, sizeof(val_str), data->type, val); pr_err("load of value %s is not a valid value for type %s\n", val_str, data->type->type_name); - ubsan_epilogue(&flags); + ubsan_epilogue(); } EXPORT_SYMBOL(__ubsan_handle_load_invalid_value); diff --git a/mm/filemap.c b/mm/filemap.c index b4f3c74e62b4..0e0405e2b019 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2344,27 +2344,6 @@ EXPORT_SYMBOL(generic_file_read_iter); #ifdef CONFIG_MMU #define MMAP_LOTSAMISS (100) -static struct file *maybe_unlock_mmap_for_io(struct vm_fault *vmf, - struct file *fpin) -{ - int flags = vmf->flags; - - if (fpin) - return fpin; - - /* - * FAULT_FLAG_RETRY_NOWAIT means we don't want to wait on page locks or - * anything, so we only pin the file and drop the mmap_sem if only - * FAULT_FLAG_ALLOW_RETRY is set. - */ - if ((flags & (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_RETRY_NOWAIT)) == - FAULT_FLAG_ALLOW_RETRY) { - fpin = get_file(vmf->vma->vm_file); - up_read(&vmf->vma->vm_mm->mmap_sem); - } - return fpin; -} - /* * lock_page_maybe_drop_mmap - lock the page, possibly dropping the mmap_sem * @vmf - the vm_fault for this fault. diff --git a/mm/gup_benchmark.c b/mm/gup_benchmark.c index 7dd602d7f8db..ad9d5b1c4473 100644 --- a/mm/gup_benchmark.c +++ b/mm/gup_benchmark.c @@ -26,6 +26,7 @@ static int __gup_benchmark_ioctl(unsigned int cmd, unsigned long i, nr_pages, addr, next; int nr; struct page **pages; + int ret = 0; if (gup->size > ULONG_MAX) return -EINVAL; @@ -63,7 +64,9 @@ static int __gup_benchmark_ioctl(unsigned int cmd, NULL); break; default: - return -1; + kvfree(pages); + ret = -EINVAL; + goto out; } if (nr <= 0) @@ -85,7 +88,8 @@ static int __gup_benchmark_ioctl(unsigned int cmd, gup->put_delta_usec = ktime_us_delta(end_time, start_time); kvfree(pages); - return 0; +out: + return ret; } static long gup_benchmark_ioctl(struct file *filep, unsigned int cmd, diff --git a/mm/hugetlb.c b/mm/hugetlb.c index b45a95363a84..e0afd582ca01 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -1255,7 +1256,7 @@ static inline void ClearPageHugeTemporary(struct page *page) page[2].mapping = NULL; } -void free_huge_page(struct page *page) +static void __free_huge_page(struct page *page) { /* * Can't pass hstate in here because it is called from the @@ -1318,6 +1319,54 @@ void free_huge_page(struct page *page) spin_unlock(&hugetlb_lock); } +/* + * As free_huge_page() can be called from a non-task context, we have + * to defer the actual freeing in a workqueue to prevent potential + * hugetlb_lock deadlock. + * + * free_hpage_workfn() locklessly retrieves the linked list of pages to + * be freed and frees them one-by-one. As the page->mapping pointer is + * going to be cleared in __free_huge_page() anyway, it is reused as the + * llist_node structure of a lockless linked list of huge pages to be freed. + */ +static LLIST_HEAD(hpage_freelist); + +static void free_hpage_workfn(struct work_struct *work) +{ + struct llist_node *node; + struct page *page; + + node = llist_del_all(&hpage_freelist); + + while (node) { + page = container_of((struct address_space **)node, + struct page, mapping); + node = node->next; + __free_huge_page(page); + } +} +static DECLARE_WORK(free_hpage_work, free_hpage_workfn); + +void free_huge_page(struct page *page) +{ + /* + * Defer freeing if in non-task context to avoid hugetlb_lock deadlock. + */ + if (!in_task()) { + /* + * Only call schedule_work() if hpage_freelist is previously + * empty. Otherwise, schedule_work() had been called but the + * workfn hasn't retrieved the list yet. + */ + if (llist_add((struct llist_node *)&page->mapping, + &hpage_freelist)) + schedule_work(&free_hpage_work); + return; + } + + __free_huge_page(page); +} + static void prep_new_huge_page(struct hstate *h, struct page *page, int nid) { INIT_LIST_HEAD(&page->lru); diff --git a/mm/internal.h b/mm/internal.h index 0d5f720c75ab..7dd7fbb577a9 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -362,6 +362,27 @@ vma_address(struct page *page, struct vm_area_struct *vma) return max(start, vma->vm_start); } +static inline struct file *maybe_unlock_mmap_for_io(struct vm_fault *vmf, + struct file *fpin) +{ + int flags = vmf->flags; + + if (fpin) + return fpin; + + /* + * FAULT_FLAG_RETRY_NOWAIT means we don't want to wait on page locks or + * anything, so we only pin the file and drop the mmap_sem if only + * FAULT_FLAG_ALLOW_RETRY is set. + */ + if ((flags & (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_RETRY_NOWAIT)) == + FAULT_FLAG_ALLOW_RETRY) { + fpin = get_file(vmf->vma->vm_file); + up_read(&vmf->vma->vm_mm->mmap_sem); + } + return fpin; +} + #else /* !CONFIG_MMU */ static inline void clear_page_mlock(struct page *page) { } static inline void mlock_vma_page(struct page *page) { } diff --git a/mm/memory.c b/mm/memory.c index 39bef90bc207..65a527f11b36 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2246,10 +2246,11 @@ static vm_fault_t do_page_mkwrite(struct vm_fault *vmf) * * The function expects the page to be locked and unlocks it. */ -static void fault_dirty_shared_page(struct vm_area_struct *vma, - struct page *page) +static vm_fault_t fault_dirty_shared_page(struct vm_fault *vmf) { + struct vm_area_struct *vma = vmf->vma; struct address_space *mapping; + struct page *page = vmf->page; bool dirtied; bool page_mkwrite = vma->vm_ops && vma->vm_ops->page_mkwrite; @@ -2264,16 +2265,30 @@ static void fault_dirty_shared_page(struct vm_area_struct *vma, mapping = page_rmapping(page); unlock_page(page); - if ((dirtied || page_mkwrite) && mapping) { - /* - * Some device drivers do not set page.mapping - * but still dirty their pages - */ - balance_dirty_pages_ratelimited(mapping); - } - if (!page_mkwrite) file_update_time(vma->vm_file); + + /* + * Throttle page dirtying rate down to writeback speed. + * + * mapping may be NULL here because some device drivers do not + * set page.mapping but still dirty their pages + * + * Drop the mmap_sem before waiting on IO, if we can. The file + * is pinning the mapping, as per above. + */ + if ((dirtied || page_mkwrite) && mapping) { + struct file *fpin; + + fpin = maybe_unlock_mmap_for_io(vmf, NULL); + balance_dirty_pages_ratelimited(mapping); + if (fpin) { + fput(fpin); + return VM_FAULT_RETRY; + } + } + + return 0; } /* @@ -2516,6 +2531,7 @@ static vm_fault_t wp_page_shared(struct vm_fault *vmf) __releases(vmf->ptl) { struct vm_area_struct *vma = vmf->vma; + vm_fault_t ret = VM_FAULT_WRITE; get_page(vmf->page); @@ -2539,10 +2555,10 @@ static vm_fault_t wp_page_shared(struct vm_fault *vmf) wp_page_reuse(vmf); lock_page(vmf->page); } - fault_dirty_shared_page(vma, vmf->page); + ret |= fault_dirty_shared_page(vmf); put_page(vmf->page); - return VM_FAULT_WRITE; + return ret; } /* @@ -3590,7 +3606,7 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf) return ret; } - fault_dirty_shared_page(vma, vmf->page); + ret |= fault_dirty_shared_page(vmf); return ret; } diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index fadddfdc6f9c..2b2d6ef150db 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -465,8 +465,9 @@ static void update_pgdat_span(struct pglist_data *pgdat) pgdat->node_spanned_pages = node_end_pfn - node_start_pfn; } -static void __remove_zone(struct zone *zone, unsigned long start_pfn, - unsigned long nr_pages) +void __ref remove_pfn_range_from_zone(struct zone *zone, + unsigned long start_pfn, + unsigned long nr_pages) { struct pglist_data *pgdat = zone->zone_pgdat; unsigned long flags; @@ -481,28 +482,30 @@ static void __remove_zone(struct zone *zone, unsigned long start_pfn, return; #endif + clear_zone_contiguous(zone); + pgdat_resize_lock(zone->zone_pgdat, &flags); shrink_zone_span(zone, start_pfn, start_pfn + nr_pages); update_pgdat_span(pgdat); pgdat_resize_unlock(zone->zone_pgdat, &flags); + + set_zone_contiguous(zone); } -static void __remove_section(struct zone *zone, unsigned long pfn, - unsigned long nr_pages, unsigned long map_offset, - struct vmem_altmap *altmap) +static void __remove_section(unsigned long pfn, unsigned long nr_pages, + unsigned long map_offset, + struct vmem_altmap *altmap) { struct mem_section *ms = __nr_to_section(pfn_to_section_nr(pfn)); if (WARN_ON_ONCE(!valid_section(ms))) return; - __remove_zone(zone, pfn, nr_pages); sparse_remove_section(ms, pfn, nr_pages, map_offset, altmap); } /** - * __remove_pages() - remove sections of pages from a zone - * @zone: zone from which pages need to be removed + * __remove_pages() - remove sections of pages * @pfn: starting pageframe (must be aligned to start of a section) * @nr_pages: number of pages to remove (must be multiple of section size) * @altmap: alternative device page map or %NULL if default memmap is used @@ -512,16 +515,14 @@ static void __remove_section(struct zone *zone, unsigned long pfn, * sure that pages are marked reserved and zones are adjust properly by * calling offline_pages(). */ -void __remove_pages(struct zone *zone, unsigned long pfn, - unsigned long nr_pages, struct vmem_altmap *altmap) +void __remove_pages(unsigned long pfn, unsigned long nr_pages, + struct vmem_altmap *altmap) { unsigned long map_offset = 0; unsigned long nr, start_sec, end_sec; map_offset = vmem_altmap_offset(altmap); - clear_zone_contiguous(zone); - if (check_pfn_span(pfn, nr_pages, "remove")) return; @@ -533,13 +534,11 @@ void __remove_pages(struct zone *zone, unsigned long pfn, cond_resched(); pfns = min(nr_pages, PAGES_PER_SECTION - (pfn & ~PAGE_SECTION_MASK)); - __remove_section(zone, pfn, pfns, map_offset, altmap); + __remove_section(pfn, pfns, map_offset, altmap); pfn += pfns; nr_pages -= pfns; map_offset = 0; } - - set_zone_contiguous(zone); } int set_online_page_callback(online_page_callback_t callback) @@ -867,6 +866,7 @@ failed_addition: (unsigned long long) pfn << PAGE_SHIFT, (((unsigned long long) pfn + nr_pages) << PAGE_SHIFT) - 1); memory_notify(MEM_CANCEL_ONLINE, &arg); + remove_pfn_range_from_zone(zone, pfn, nr_pages); mem_hotplug_done(); return ret; } @@ -1636,6 +1636,7 @@ static int __ref __offline_pages(unsigned long start_pfn, writeback_set_ratelimit(); memory_notify(MEM_OFFLINE, &arg); + remove_pfn_range_from_zone(zone, start_pfn, nr_pages); mem_hotplug_done(); return 0; diff --git a/mm/memremap.c b/mm/memremap.c index 03ccbdfeb697..c51c6bd2fe34 100644 --- a/mm/memremap.c +++ b/mm/memremap.c @@ -120,7 +120,7 @@ void memunmap_pages(struct dev_pagemap *pgmap) mem_hotplug_begin(); if (pgmap->type == MEMORY_DEVICE_PRIVATE) { - __remove_pages(page_zone(first_page), PHYS_PFN(res->start), + __remove_pages(PHYS_PFN(res->start), PHYS_PFN(resource_size(res)), NULL); } else { arch_remove_memory(nid, res->start, resource_size(res), diff --git a/mm/migrate.c b/mm/migrate.c index 8f02404673b6..5946c521385a 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1518,9 +1518,11 @@ static int do_move_pages_to_node(struct mm_struct *mm, /* * Resolves the given address to a struct page, isolates it from the LRU and * puts it to the given pagelist. - * Returns -errno if the page cannot be found/isolated or 0 when it has been - * queued or the page doesn't need to be migrated because it is already on - * the target node + * Returns: + * errno - if the page cannot be found/isolated + * 0 - when it doesn't have to be migrated because it is already on the + * target node + * 1 - when it has been queued */ static int add_page_for_migration(struct mm_struct *mm, unsigned long addr, int node, struct list_head *pagelist, bool migrate_all) @@ -1559,7 +1561,7 @@ static int add_page_for_migration(struct mm_struct *mm, unsigned long addr, if (PageHuge(page)) { if (PageHead(page)) { isolate_huge_page(page, pagelist); - err = 0; + err = 1; } } else { struct page *head; @@ -1569,7 +1571,7 @@ static int add_page_for_migration(struct mm_struct *mm, unsigned long addr, if (err) goto out_putpage; - err = 0; + err = 1; list_add_tail(&head->lru, pagelist); mod_node_page_state(page_pgdat(head), NR_ISOLATED_ANON + page_is_file_cache(head), @@ -1646,8 +1648,17 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, */ err = add_page_for_migration(mm, addr, current_node, &pagelist, flags & MPOL_MF_MOVE_ALL); - if (!err) + + if (!err) { + /* The page is already on the target node */ + err = store_status(status, i, current_node, 1); + if (err) + goto out_flush; continue; + } else if (err > 0) { + /* The page is successfully queued for migration */ + continue; + } err = store_status(status, i, err, 1); if (err) diff --git a/mm/mmap.c b/mm/mmap.c index fa75b568d481..c6ff45946dff 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -90,12 +90,6 @@ static void unmap_region(struct mm_struct *mm, * MAP_PRIVATE r: (no) no r: (yes) yes r: (no) yes r: (no) yes * w: (no) no w: (no) no w: (copy) copy w: (no) no * x: (no) no x: (no) yes x: (no) yes x: (yes) yes - * - * On arm64, PROT_EXEC has the following behaviour for both MAP_SHARED and - * MAP_PRIVATE: - * r: (no) no - * w: (no) no - * x: (yes) yes */ pgprot_t protection_map[16] __ro_after_init = { __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111, diff --git a/mm/oom_kill.c b/mm/oom_kill.c index d0cece9bdd15..de7040451ff3 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -914,7 +914,7 @@ static void __oom_kill_process(struct task_struct *victim, const char *message) K(get_mm_counter(mm, MM_FILEPAGES)), K(get_mm_counter(mm, MM_SHMEMPAGES)), from_kuid(&init_user_ns, task_uid(victim)), - mm_pgtables_bytes(mm), victim->signal->oom_score_adj); + mm_pgtables_bytes(mm) >> 10, victim->signal->oom_score_adj); task_unlock(victim); /* diff --git a/mm/shmem.c b/mm/shmem.c index 6366cf08c24d..fd1a04f46895 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2022,16 +2022,14 @@ static vm_fault_t shmem_fault(struct vm_fault *vmf) shmem_falloc->waitq && vmf->pgoff >= shmem_falloc->start && vmf->pgoff < shmem_falloc->next) { + struct file *fpin; wait_queue_head_t *shmem_falloc_waitq; DEFINE_WAIT_FUNC(shmem_fault_wait, synchronous_wake_function); ret = VM_FAULT_NOPAGE; - if ((vmf->flags & FAULT_FLAG_ALLOW_RETRY) && - !(vmf->flags & FAULT_FLAG_RETRY_NOWAIT)) { - /* It's polite to up mmap_sem if we can */ - up_read(&vma->vm_mm->mmap_sem); + fpin = maybe_unlock_mmap_for_io(vmf, NULL); + if (fpin) ret = VM_FAULT_RETRY; - } shmem_falloc_waitq = shmem_falloc->waitq; prepare_to_wait(shmem_falloc_waitq, &shmem_fault_wait, @@ -2049,6 +2047,9 @@ static vm_fault_t shmem_fault(struct vm_fault *vmf) spin_lock(&inode->i_lock); finish_wait(shmem_falloc_waitq, &shmem_fault_wait); spin_unlock(&inode->i_lock); + + if (fpin) + fput(fpin); return ret; } spin_unlock(&inode->i_lock); diff --git a/mm/sparse.c b/mm/sparse.c index f6891c1992b1..c2c01b6330af 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -647,7 +647,7 @@ void offline_mem_sections(unsigned long start_pfn, unsigned long end_pfn) #endif #ifdef CONFIG_SPARSEMEM_VMEMMAP -static struct page *populate_section_memmap(unsigned long pfn, +static struct page * __meminit populate_section_memmap(unsigned long pfn, unsigned long nr_pages, int nid, struct vmem_altmap *altmap) { return __populate_section_memmap(pfn, nr_pages, nid, altmap); @@ -669,7 +669,7 @@ static void free_map_bootmem(struct page *memmap) vmemmap_free(start, end, NULL); } #else -struct page *populate_section_memmap(unsigned long pfn, +struct page * __meminit populate_section_memmap(unsigned long pfn, unsigned long nr_pages, int nid, struct vmem_altmap *altmap) { struct page *page, *ret; diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 4fde9cf7ce95..1002aacc366c 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -2069,6 +2069,11 @@ static int zs_page_migrate(struct address_space *mapping, struct page *newpage, zs_pool_dec_isolated(pool); } + if (page_zone(newpage) != page_zone(page)) { + dec_zone_page_state(page, NR_ZSPAGES); + inc_zone_page_state(newpage, NR_ZSPAGES); + } + reset_page(page); put_page(page); page = newpage; diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 7ff92dd4c53c..87691404d0c6 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -1176,8 +1176,10 @@ struct hci_conn *hci_connect_le_scan(struct hci_dev *hdev, bdaddr_t *dst, if (!conn) return ERR_PTR(-ENOMEM); - if (hci_explicit_conn_params_set(hdev, dst, dst_type) < 0) + if (hci_explicit_conn_params_set(hdev, dst, dst_type) < 0) { + hci_conn_del(conn); return ERR_PTR(-EBUSY); + } conn->state = BT_CONNECT; set_bit(HCI_CONN_SCANNING, &conn->flags); diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index da7fdbdf9c41..a845786258a0 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -4936,10 +4936,8 @@ void __l2cap_physical_cfm(struct l2cap_chan *chan, int result) BT_DBG("chan %p, result %d, local_amp_id %d, remote_amp_id %d", chan, result, local_amp_id, remote_amp_id); - if (chan->state == BT_DISCONN || chan->state == BT_CLOSED) { - l2cap_chan_unlock(chan); + if (chan->state == BT_DISCONN || chan->state == BT_CLOSED) return; - } if (chan->state != BT_CONNECTED) { l2cap_do_create(chan, result, local_amp_id, remote_amp_id); diff --git a/net/core/dev.c b/net/core/dev.c index 046307445ece..3e11c6bb4dd6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3386,7 +3386,7 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, qdisc_calculate_pkt_len(skb, q); if (q->flags & TCQ_F_NOLOCK) { - if ((q->flags & TCQ_F_CAN_BYPASS) && q->empty && + if ((q->flags & TCQ_F_CAN_BYPASS) && READ_ONCE(q->empty) && qdisc_run_begin(q)) { if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) { diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 8dfc0d326d15..386f6da0a0a7 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -1194,7 +1194,7 @@ static void neigh_update_hhs(struct neighbour *neigh) if (update) { hh = &neigh->hh; - if (hh->hh_len) { + if (READ_ONCE(hh->hh_len)) { write_seqlock_bh(&hh->hh_lock); update(hh, neigh->dev, neigh->ha); write_sequnlock_bh(&hh->hh_lock); @@ -1473,7 +1473,7 @@ int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb) struct net_device *dev = neigh->dev; unsigned int seq; - if (dev->header_ops->cache && !neigh->hh.hh_len) + if (dev->header_ops->cache && !READ_ONCE(neigh->hh.hh_len)) neigh_hh_init(neigh); do { diff --git a/net/core/sock.c b/net/core/sock.c index ac78a570e43a..b4d1112174c1 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -2918,7 +2918,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) sk->sk_max_pacing_rate = ~0UL; sk->sk_pacing_rate = ~0UL; - sk->sk_pacing_shift = 10; + WRITE_ONCE(sk->sk_pacing_shift, 10); sk->sk_incoming_cpu = -1; sk_rx_queue_clear(sk); diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c index eb29e5adc84d..9f9e00ba3ad7 100644 --- a/net/core/sysctl_net_core.c +++ b/net/core/sysctl_net_core.c @@ -288,6 +288,7 @@ static int proc_dointvec_minmax_bpf_enable(struct ctl_table *table, int write, return ret; } +# ifdef CONFIG_HAVE_EBPF_JIT static int proc_dointvec_minmax_bpf_restricted(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, @@ -298,6 +299,7 @@ proc_dointvec_minmax_bpf_restricted(struct ctl_table *table, int write, return proc_dointvec_minmax(table, write, buffer, lenp, ppos); } +# endif /* CONFIG_HAVE_EBPF_JIT */ static int proc_dolongvec_minmax_bpf_restricted(struct ctl_table *table, int write, diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 17374afee28f..9040fe55e0f5 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -244,7 +244,12 @@ int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh, __be16 eth->h_proto = type; memcpy(eth->h_source, dev->dev_addr, ETH_ALEN); memcpy(eth->h_dest, neigh->ha, ETH_ALEN); - hh->hh_len = ETH_HLEN; + + /* Pairs with READ_ONCE() in neigh_resolve_output(), + * neigh_hh_output() and neigh_update_hhs(). + */ + smp_store_release(&hh->hh_len, ETH_HLEN); + return 0; } EXPORT_SYMBOL(eth_header_cache); diff --git a/net/hsr/hsr_debugfs.c b/net/hsr/hsr_debugfs.c index 94447974a3c0..6618a9d8e58e 100644 --- a/net/hsr/hsr_debugfs.c +++ b/net/hsr/hsr_debugfs.c @@ -64,7 +64,6 @@ hsr_node_table_open(struct inode *inode, struct file *filp) } static const struct file_operations hsr_fops = { - .owner = THIS_MODULE, .open = hsr_node_table_open, .read = seq_read, .llseek = seq_lseek, @@ -78,15 +77,14 @@ static const struct file_operations hsr_fops = { * When debugfs is configured this routine sets up the node_table file per * hsr device for dumping the node_table entries */ -int hsr_debugfs_init(struct hsr_priv *priv, struct net_device *hsr_dev) +void hsr_debugfs_init(struct hsr_priv *priv, struct net_device *hsr_dev) { - int rc = -1; struct dentry *de = NULL; de = debugfs_create_dir(hsr_dev->name, NULL); - if (!de) { + if (IS_ERR(de)) { pr_err("Cannot create hsr debugfs root\n"); - return rc; + return; } priv->node_tbl_root = de; @@ -94,13 +92,13 @@ int hsr_debugfs_init(struct hsr_priv *priv, struct net_device *hsr_dev) de = debugfs_create_file("node_table", S_IFREG | 0444, priv->node_tbl_root, priv, &hsr_fops); - if (!de) { + if (IS_ERR(de)) { pr_err("Cannot create hsr node_table directory\n"); - return rc; + debugfs_remove(priv->node_tbl_root); + priv->node_tbl_root = NULL; + return; } priv->node_tbl_file = de; - - return 0; } /* hsr_debugfs_term - Tear down debugfs intrastructure diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c index b01e1bae4ddc..62c03f0d0079 100644 --- a/net/hsr/hsr_device.c +++ b/net/hsr/hsr_device.c @@ -368,7 +368,7 @@ static void hsr_dev_destroy(struct net_device *hsr_dev) del_timer_sync(&hsr->prune_timer); del_timer_sync(&hsr->announce_timer); - hsr_del_self_node(&hsr->self_node_db); + hsr_del_self_node(hsr); hsr_del_nodes(&hsr->node_db); } @@ -440,11 +440,12 @@ int hsr_dev_finalize(struct net_device *hsr_dev, struct net_device *slave[2], INIT_LIST_HEAD(&hsr->ports); INIT_LIST_HEAD(&hsr->node_db); INIT_LIST_HEAD(&hsr->self_node_db); + spin_lock_init(&hsr->list_lock); ether_addr_copy(hsr_dev->dev_addr, slave[0]->dev_addr); /* Make sure we recognize frames from ourselves in hsr_rcv() */ - res = hsr_create_self_node(&hsr->self_node_db, hsr_dev->dev_addr, + res = hsr_create_self_node(hsr, hsr_dev->dev_addr, slave[1]->dev_addr); if (res < 0) return res; @@ -477,31 +478,32 @@ int hsr_dev_finalize(struct net_device *hsr_dev, struct net_device *slave[2], res = hsr_add_port(hsr, hsr_dev, HSR_PT_MASTER); if (res) - goto err_add_port; + goto err_add_master; res = register_netdevice(hsr_dev); if (res) - goto fail; + goto err_unregister; res = hsr_add_port(hsr, slave[0], HSR_PT_SLAVE_A); if (res) - goto fail; + goto err_add_slaves; + res = hsr_add_port(hsr, slave[1], HSR_PT_SLAVE_B); if (res) - goto fail; + goto err_add_slaves; + hsr_debugfs_init(hsr, hsr_dev); mod_timer(&hsr->prune_timer, jiffies + msecs_to_jiffies(PRUNE_PERIOD)); - res = hsr_debugfs_init(hsr, hsr_dev); - if (res) - goto fail; return 0; -fail: +err_add_slaves: + unregister_netdevice(hsr_dev); +err_unregister: list_for_each_entry_safe(port, tmp, &hsr->ports, port_list) hsr_del_port(port); -err_add_port: - hsr_del_self_node(&hsr->self_node_db); +err_add_master: + hsr_del_self_node(hsr); return res; } diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c index 292be446007b..27dc65d7de67 100644 --- a/net/hsr/hsr_framereg.c +++ b/net/hsr/hsr_framereg.c @@ -75,10 +75,11 @@ static struct hsr_node *find_node_by_addr_A(struct list_head *node_db, /* Helper for device init; the self_node_db is used in hsr_rcv() to recognize * frames from self that's been looped over the HSR ring. */ -int hsr_create_self_node(struct list_head *self_node_db, +int hsr_create_self_node(struct hsr_priv *hsr, unsigned char addr_a[ETH_ALEN], unsigned char addr_b[ETH_ALEN]) { + struct list_head *self_node_db = &hsr->self_node_db; struct hsr_node *node, *oldnode; node = kmalloc(sizeof(*node), GFP_KERNEL); @@ -88,33 +89,33 @@ int hsr_create_self_node(struct list_head *self_node_db, ether_addr_copy(node->macaddress_A, addr_a); ether_addr_copy(node->macaddress_B, addr_b); - rcu_read_lock(); + spin_lock_bh(&hsr->list_lock); oldnode = list_first_or_null_rcu(self_node_db, struct hsr_node, mac_list); if (oldnode) { list_replace_rcu(&oldnode->mac_list, &node->mac_list); - rcu_read_unlock(); - synchronize_rcu(); - kfree(oldnode); + spin_unlock_bh(&hsr->list_lock); + kfree_rcu(oldnode, rcu_head); } else { - rcu_read_unlock(); list_add_tail_rcu(&node->mac_list, self_node_db); + spin_unlock_bh(&hsr->list_lock); } return 0; } -void hsr_del_self_node(struct list_head *self_node_db) +void hsr_del_self_node(struct hsr_priv *hsr) { + struct list_head *self_node_db = &hsr->self_node_db; struct hsr_node *node; - rcu_read_lock(); + spin_lock_bh(&hsr->list_lock); node = list_first_or_null_rcu(self_node_db, struct hsr_node, mac_list); - rcu_read_unlock(); if (node) { list_del_rcu(&node->mac_list); - kfree(node); + kfree_rcu(node, rcu_head); } + spin_unlock_bh(&hsr->list_lock); } void hsr_del_nodes(struct list_head *node_db) @@ -130,30 +131,43 @@ void hsr_del_nodes(struct list_head *node_db) * seq_out is used to initialize filtering of outgoing duplicate frames * originating from the newly added node. */ -struct hsr_node *hsr_add_node(struct list_head *node_db, unsigned char addr[], - u16 seq_out) +static struct hsr_node *hsr_add_node(struct hsr_priv *hsr, + struct list_head *node_db, + unsigned char addr[], + u16 seq_out) { - struct hsr_node *node; + struct hsr_node *new_node, *node; unsigned long now; int i; - node = kzalloc(sizeof(*node), GFP_ATOMIC); - if (!node) + new_node = kzalloc(sizeof(*new_node), GFP_ATOMIC); + if (!new_node) return NULL; - ether_addr_copy(node->macaddress_A, addr); + ether_addr_copy(new_node->macaddress_A, addr); /* We are only interested in time diffs here, so use current jiffies * as initialization. (0 could trigger an spurious ring error warning). */ now = jiffies; for (i = 0; i < HSR_PT_PORTS; i++) - node->time_in[i] = now; + new_node->time_in[i] = now; for (i = 0; i < HSR_PT_PORTS; i++) - node->seq_out[i] = seq_out; - - list_add_tail_rcu(&node->mac_list, node_db); + new_node->seq_out[i] = seq_out; + spin_lock_bh(&hsr->list_lock); + list_for_each_entry_rcu(node, node_db, mac_list) { + if (ether_addr_equal(node->macaddress_A, addr)) + goto out; + if (ether_addr_equal(node->macaddress_B, addr)) + goto out; + } + list_add_tail_rcu(&new_node->mac_list, node_db); + spin_unlock_bh(&hsr->list_lock); + return new_node; +out: + spin_unlock_bh(&hsr->list_lock); + kfree(new_node); return node; } @@ -163,6 +177,7 @@ struct hsr_node *hsr_get_node(struct hsr_port *port, struct sk_buff *skb, bool is_sup) { struct list_head *node_db = &port->hsr->node_db; + struct hsr_priv *hsr = port->hsr; struct hsr_node *node; struct ethhdr *ethhdr; u16 seq_out; @@ -196,7 +211,7 @@ struct hsr_node *hsr_get_node(struct hsr_port *port, struct sk_buff *skb, seq_out = HSR_SEQNR_START; } - return hsr_add_node(node_db, ethhdr->h_source, seq_out); + return hsr_add_node(hsr, node_db, ethhdr->h_source, seq_out); } /* Use the Supervision frame's info about an eventual macaddress_B for merging @@ -206,10 +221,11 @@ struct hsr_node *hsr_get_node(struct hsr_port *port, struct sk_buff *skb, void hsr_handle_sup_frame(struct sk_buff *skb, struct hsr_node *node_curr, struct hsr_port *port_rcv) { - struct ethhdr *ethhdr; - struct hsr_node *node_real; + struct hsr_priv *hsr = port_rcv->hsr; struct hsr_sup_payload *hsr_sp; + struct hsr_node *node_real; struct list_head *node_db; + struct ethhdr *ethhdr; int i; ethhdr = (struct ethhdr *)skb_mac_header(skb); @@ -231,7 +247,7 @@ void hsr_handle_sup_frame(struct sk_buff *skb, struct hsr_node *node_curr, node_real = find_node_by_addr_A(node_db, hsr_sp->macaddress_A); if (!node_real) /* No frame received from AddrA of this node yet */ - node_real = hsr_add_node(node_db, hsr_sp->macaddress_A, + node_real = hsr_add_node(hsr, node_db, hsr_sp->macaddress_A, HSR_SEQNR_START - 1); if (!node_real) goto done; /* No mem */ @@ -252,7 +268,9 @@ void hsr_handle_sup_frame(struct sk_buff *skb, struct hsr_node *node_curr, } node_real->addr_B_port = port_rcv->type; + spin_lock_bh(&hsr->list_lock); list_del_rcu(&node_curr->mac_list); + spin_unlock_bh(&hsr->list_lock); kfree_rcu(node_curr, rcu_head); done: @@ -368,12 +386,13 @@ void hsr_prune_nodes(struct timer_list *t) { struct hsr_priv *hsr = from_timer(hsr, t, prune_timer); struct hsr_node *node; + struct hsr_node *tmp; struct hsr_port *port; unsigned long timestamp; unsigned long time_a, time_b; - rcu_read_lock(); - list_for_each_entry_rcu(node, &hsr->node_db, mac_list) { + spin_lock_bh(&hsr->list_lock); + list_for_each_entry_safe(node, tmp, &hsr->node_db, mac_list) { /* Don't prune own node. Neither time_in[HSR_PT_SLAVE_A] * nor time_in[HSR_PT_SLAVE_B], will ever be updated for * the master port. Thus the master node will be repeatedly @@ -421,7 +440,7 @@ void hsr_prune_nodes(struct timer_list *t) kfree_rcu(node, rcu_head); } } - rcu_read_unlock(); + spin_unlock_bh(&hsr->list_lock); /* Restart timer */ mod_timer(&hsr->prune_timer, diff --git a/net/hsr/hsr_framereg.h b/net/hsr/hsr_framereg.h index 89a3ce38151d..0f0fa12b4329 100644 --- a/net/hsr/hsr_framereg.h +++ b/net/hsr/hsr_framereg.h @@ -12,10 +12,8 @@ struct hsr_node; -void hsr_del_self_node(struct list_head *self_node_db); +void hsr_del_self_node(struct hsr_priv *hsr); void hsr_del_nodes(struct list_head *node_db); -struct hsr_node *hsr_add_node(struct list_head *node_db, unsigned char addr[], - u16 seq_out); struct hsr_node *hsr_get_node(struct hsr_port *port, struct sk_buff *skb, bool is_sup); void hsr_handle_sup_frame(struct sk_buff *skb, struct hsr_node *node_curr, @@ -33,7 +31,7 @@ int hsr_register_frame_out(struct hsr_port *port, struct hsr_node *node, void hsr_prune_nodes(struct timer_list *t); -int hsr_create_self_node(struct list_head *self_node_db, +int hsr_create_self_node(struct hsr_priv *hsr, unsigned char addr_a[ETH_ALEN], unsigned char addr_b[ETH_ALEN]); diff --git a/net/hsr/hsr_main.c b/net/hsr/hsr_main.c index b9988a662ee1..6deb8fa8d5c8 100644 --- a/net/hsr/hsr_main.c +++ b/net/hsr/hsr_main.c @@ -64,7 +64,7 @@ static int hsr_netdev_notify(struct notifier_block *nb, unsigned long event, /* Make sure we recognize frames from ourselves in hsr_rcv() */ port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); - res = hsr_create_self_node(&hsr->self_node_db, + res = hsr_create_self_node(hsr, master->dev->dev_addr, port ? port->dev->dev_addr : diff --git a/net/hsr/hsr_main.h b/net/hsr/hsr_main.h index 96fac696a1e1..9ec38e33b8b1 100644 --- a/net/hsr/hsr_main.h +++ b/net/hsr/hsr_main.h @@ -160,8 +160,9 @@ struct hsr_priv { int announce_count; u16 sequence_nr; u16 sup_sequence_nr; /* For HSRv1 separate seq_nr for supervision */ - u8 prot_version; /* Indicate if HSRv0 or HSRv1. */ - spinlock_t seqnr_lock; /* locking for sequence_nr */ + u8 prot_version; /* Indicate if HSRv0 or HSRv1. */ + spinlock_t seqnr_lock; /* locking for sequence_nr */ + spinlock_t list_lock; /* locking for node list */ unsigned char sup_multicast_addr[ETH_ALEN]; #ifdef CONFIG_DEBUG_FS struct dentry *node_tbl_root; @@ -184,15 +185,12 @@ static inline u16 hsr_get_skb_sequence_nr(struct sk_buff *skb) } #if IS_ENABLED(CONFIG_DEBUG_FS) -int hsr_debugfs_init(struct hsr_priv *priv, struct net_device *hsr_dev); +void hsr_debugfs_init(struct hsr_priv *priv, struct net_device *hsr_dev); void hsr_debugfs_term(struct hsr_priv *priv); #else -static inline int hsr_debugfs_init(struct hsr_priv *priv, - struct net_device *hsr_dev) -{ - return 0; -} - +static inline void hsr_debugfs_init(struct hsr_priv *priv, + struct net_device *hsr_dev) +{} static inline void hsr_debugfs_term(struct hsr_priv *priv) {} #endif diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index d8876f0e9672..e537a4b6531b 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1958,8 +1958,7 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock, struct sk_buff *skb, *last; u32 urg_hole = 0; struct scm_timestamping_internal tss; - bool has_tss = false; - bool has_cmsg; + int cmsg_flags; if (unlikely(flags & MSG_ERRQUEUE)) return inet_recv_error(sk, msg, len, addr_len); @@ -1974,7 +1973,7 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock, if (sk->sk_state == TCP_LISTEN) goto out; - has_cmsg = tp->recvmsg_inq; + cmsg_flags = tp->recvmsg_inq ? 1 : 0; timeo = sock_rcvtimeo(sk, nonblock); /* Urgent data needs to be handled specially. */ @@ -2157,8 +2156,7 @@ skip_copy: if (TCP_SKB_CB(skb)->has_rxtstamp) { tcp_update_recv_tstamps(skb, &tss); - has_tss = true; - has_cmsg = true; + cmsg_flags |= 2; } if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) goto found_fin_ok; @@ -2183,10 +2181,10 @@ found_fin_ok: release_sock(sk); - if (has_cmsg) { - if (has_tss) + if (cmsg_flags) { + if (cmsg_flags & 2) tcp_recv_timestamp(msg, sk, &tss); - if (tp->recvmsg_inq) { + if (cmsg_flags & 1) { inq = tcp_inq_hint(sk); put_cmsg(msg, SOL_TCP, TCP_CM_INQ, sizeof(inq), &inq); } diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c index 32772d6ded4e..a6545ef0d27b 100644 --- a/net/ipv4/tcp_bbr.c +++ b/net/ipv4/tcp_bbr.c @@ -306,7 +306,8 @@ static u32 bbr_tso_segs_goal(struct sock *sk) /* Sort of tcp_tso_autosize() but ignoring * driver provided sk_gso_max_size. */ - bytes = min_t(unsigned long, sk->sk_pacing_rate >> sk->sk_pacing_shift, + bytes = min_t(unsigned long, + sk->sk_pacing_rate >> READ_ONCE(sk->sk_pacing_shift), GSO_MAX_SIZE - 1 - MAX_TCP_HEADER); segs = max_t(u32, bytes / tp->mss_cache, bbr_min_tso_segs(sk)); diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 0269584e9cf7..e4ba915c4bb5 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -1728,7 +1728,7 @@ static u32 tcp_tso_autosize(const struct sock *sk, unsigned int mss_now, u32 bytes, segs; bytes = min_t(unsigned long, - sk->sk_pacing_rate >> sk->sk_pacing_shift, + sk->sk_pacing_rate >> READ_ONCE(sk->sk_pacing_shift), sk->sk_gso_max_size - 1 - MAX_TCP_HEADER); /* Goal is to send at least one packet per ms, @@ -2263,7 +2263,7 @@ static bool tcp_small_queue_check(struct sock *sk, const struct sk_buff *skb, limit = max_t(unsigned long, 2 * skb->truesize, - sk->sk_pacing_rate >> sk->sk_pacing_shift); + sk->sk_pacing_rate >> READ_ONCE(sk->sk_pacing_shift)); if (sk->sk_pacing_status == SK_PACING_NONE) limit = min_t(unsigned long, limit, sock_net(sk)->ipv4.sysctl_tcp_limit_output_bytes); diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c index a2b58de82600..f8f52ff99cfb 100644 --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c @@ -189,7 +189,7 @@ static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state, goto err; } - if (!skb_dst_force(skb) && state->hook != NF_INET_PRE_ROUTING) { + if (skb_dst(skb) && !skb_dst_force(skb)) { status = -ENETDOWN; goto err; } diff --git a/net/netfilter/nft_tproxy.c b/net/netfilter/nft_tproxy.c index f92a82c73880..95980154ef02 100644 --- a/net/netfilter/nft_tproxy.c +++ b/net/netfilter/nft_tproxy.c @@ -50,7 +50,7 @@ static void nft_tproxy_eval_v4(const struct nft_expr *expr, taddr = nf_tproxy_laddr4(skb, taddr, iph->daddr); if (priv->sreg_port) - tport = regs->data[priv->sreg_port]; + tport = nft_reg_load16(®s->data[priv->sreg_port]); if (!tport) tport = hp->dest; @@ -117,7 +117,7 @@ static void nft_tproxy_eval_v6(const struct nft_expr *expr, taddr = *nf_tproxy_laddr6(skb, &taddr, &iph->daddr); if (priv->sreg_port) - tport = regs->data[priv->sreg_port]; + tport = nft_reg_load16(®s->data[priv->sreg_port]); if (!tport) tport = hp->dest; diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 8769b4b8807d..7c3c5fdb82a9 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -657,7 +657,7 @@ static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc) if (likely(skb)) { qdisc_update_stats_at_dequeue(qdisc, skb); } else { - qdisc->empty = true; + WRITE_ONCE(qdisc->empty, true); } return skb; diff --git a/net/socket.c b/net/socket.c index 86f9836dab01..956f26813642 100644 --- a/net/socket.c +++ b/net/socket.c @@ -956,7 +956,7 @@ static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to) .msg_iocb = iocb}; ssize_t res; - if (file->f_flags & O_NONBLOCK) + if (file->f_flags & O_NONBLOCK || (iocb->ki_flags & IOCB_NOWAIT)) msg.msg_flags = MSG_DONTWAIT; if (iocb->ki_pos != 0) @@ -981,7 +981,7 @@ static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from) if (iocb->ki_pos != 0) return -ESPIPE; - if (file->f_flags & O_NONBLOCK) + if (file->f_flags & O_NONBLOCK || (iocb->ki_flags & IOCB_NOWAIT)) msg.msg_flags = MSG_DONTWAIT; if (sock->type == SOCK_SEQPACKET) diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index a349094f6fb7..f740cb51802a 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c @@ -53,9 +53,6 @@ static void cache_init(struct cache_head *h, struct cache_detail *detail) h->last_refresh = now; } -static inline int cache_is_valid(struct cache_head *h); -static void cache_fresh_locked(struct cache_head *head, time_t expiry, - struct cache_detail *detail); static void cache_fresh_unlocked(struct cache_head *head, struct cache_detail *detail); @@ -105,9 +102,6 @@ static struct cache_head *sunrpc_cache_add_entry(struct cache_detail *detail, if (cache_is_expired(detail, tmp)) { hlist_del_init_rcu(&tmp->cache_list); detail->entries --; - if (cache_is_valid(tmp) == -EAGAIN) - set_bit(CACHE_NEGATIVE, &tmp->flags); - cache_fresh_locked(tmp, 0, detail); freeme = tmp; break; } diff --git a/samples/seccomp/user-trap.c b/samples/seccomp/user-trap.c index 6d0125ca8af7..20291ec6489f 100644 --- a/samples/seccomp/user-trap.c +++ b/samples/seccomp/user-trap.c @@ -298,14 +298,14 @@ int main(void) req = malloc(sizes.seccomp_notif); if (!req) goto out_close; - memset(req, 0, sizeof(*req)); resp = malloc(sizes.seccomp_notif_resp); if (!resp) goto out_req; - memset(resp, 0, sizeof(*resp)); + memset(resp, 0, sizes.seccomp_notif_resp); while (1) { + memset(req, 0, sizes.seccomp_notif); if (ioctl(listener, SECCOMP_IOCTL_NOTIF_RECV, req)) { perror("ioctl recv"); goto out_resp; diff --git a/samples/trace_printk/trace-printk.c b/samples/trace_printk/trace-printk.c index 7affc3b50b61..cfc159580263 100644 --- a/samples/trace_printk/trace-printk.c +++ b/samples/trace_printk/trace-printk.c @@ -36,6 +36,7 @@ static int __init trace_printk_init(void) /* Kick off printing in irq context */ irq_work_queue(&irqwork); + irq_work_sync(&irqwork); trace_printk("This is a %s that will use trace_bprintk()\n", "static string"); diff --git a/scripts/gcc-plugins/Kconfig b/scripts/gcc-plugins/Kconfig index d33de0b9f4f5..e3569543bdac 100644 --- a/scripts/gcc-plugins/Kconfig +++ b/scripts/gcc-plugins/Kconfig @@ -14,8 +14,8 @@ config HAVE_GCC_PLUGINS An arch should select this symbol if it supports building with GCC plugins. -config GCC_PLUGINS - bool +menuconfig GCC_PLUGINS + bool "GCC plugins" depends on HAVE_GCC_PLUGINS depends on PLUGIN_HOSTCC != "" default y @@ -25,8 +25,7 @@ config GCC_PLUGINS See Documentation/core-api/gcc-plugins.rst for details. -menu "GCC plugins" - depends on GCC_PLUGINS +if GCC_PLUGINS config GCC_PLUGIN_CYC_COMPLEXITY bool "Compute the cyclomatic complexity of a function" if EXPERT @@ -113,4 +112,4 @@ config GCC_PLUGIN_ARM_SSP_PER_TASK bool depends on GCC_PLUGINS && ARM -endmenu +endif diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c index 45d13b6462aa..90d21675c3ad 100644 --- a/security/apparmor/apparmorfs.c +++ b/security/apparmor/apparmorfs.c @@ -593,7 +593,7 @@ static __poll_t ns_revision_poll(struct file *file, poll_table *pt) void __aa_bump_ns_revision(struct aa_ns *ns) { - ns->revision++; + WRITE_ONCE(ns->revision, ns->revision + 1); wake_up_interruptible(&ns->wait); } diff --git a/security/apparmor/domain.c b/security/apparmor/domain.c index 9e0492795267..039ca71872ce 100644 --- a/security/apparmor/domain.c +++ b/security/apparmor/domain.c @@ -317,6 +317,7 @@ static int aa_xattrs_match(const struct linux_binprm *bprm, if (!bprm || !profile->xattr_count) return 0; + might_sleep(); /* transition from exec match to xattr set */ state = aa_dfa_null_transition(profile->xmatch, state); @@ -361,10 +362,11 @@ out: } /** - * __attach_match_ - find an attachment match + * find_attach - do attachment search for unconfined processes * @bprm - binprm structure of transitioning task - * @name - to match against (NOT NULL) + * @ns: the current namespace (NOT NULL) * @head - profile list to walk (NOT NULL) + * @name - to match against (NOT NULL) * @info - info message if there was an error (NOT NULL) * * Do a linear search on the profiles in the list. There is a matching @@ -374,12 +376,11 @@ out: * * Requires: @head not be shared or have appropriate locks held * - * Returns: profile or NULL if no match found + * Returns: label or NULL if no match found */ -static struct aa_profile *__attach_match(const struct linux_binprm *bprm, - const char *name, - struct list_head *head, - const char **info) +static struct aa_label *find_attach(const struct linux_binprm *bprm, + struct aa_ns *ns, struct list_head *head, + const char *name, const char **info) { int candidate_len = 0, candidate_xattrs = 0; bool conflict = false; @@ -388,6 +389,8 @@ static struct aa_profile *__attach_match(const struct linux_binprm *bprm, AA_BUG(!name); AA_BUG(!head); + rcu_read_lock(); +restart: list_for_each_entry_rcu(profile, head, base.list) { if (profile->label.flags & FLAG_NULL && &profile->label == ns_unconfined(profile->ns)) @@ -413,16 +416,32 @@ static struct aa_profile *__attach_match(const struct linux_binprm *bprm, perm = dfa_user_allow(profile->xmatch, state); /* any accepting state means a valid match. */ if (perm & MAY_EXEC) { - int ret; + int ret = 0; if (count < candidate_len) continue; - ret = aa_xattrs_match(bprm, profile, state); - /* Fail matching if the xattrs don't match */ - if (ret < 0) - continue; + if (bprm && profile->xattr_count) { + long rev = READ_ONCE(ns->revision); + if (!aa_get_profile_not0(profile)) + goto restart; + rcu_read_unlock(); + ret = aa_xattrs_match(bprm, profile, + state); + rcu_read_lock(); + aa_put_profile(profile); + if (rev != + READ_ONCE(ns->revision)) + /* policy changed */ + goto restart; + /* + * Fail matching if the xattrs don't + * match + */ + if (ret < 0) + continue; + } /* * TODO: allow for more flexible best match * @@ -445,43 +464,28 @@ static struct aa_profile *__attach_match(const struct linux_binprm *bprm, candidate_xattrs = ret; conflict = false; } - } else if (!strcmp(profile->base.name, name)) + } else if (!strcmp(profile->base.name, name)) { /* * old exact non-re match, without conditionals such * as xattrs. no more searching required */ - return profile; + candidate = profile; + goto out; + } } - if (conflict) { - *info = "conflicting profile attachments"; + if (!candidate || conflict) { + if (conflict) + *info = "conflicting profile attachments"; + rcu_read_unlock(); return NULL; } - return candidate; -} - -/** - * find_attach - do attachment search for unconfined processes - * @bprm - binprm structure of transitioning task - * @ns: the current namespace (NOT NULL) - * @list: list to search (NOT NULL) - * @name: the executable name to match against (NOT NULL) - * @info: info message if there was an error - * - * Returns: label or NULL if no match found - */ -static struct aa_label *find_attach(const struct linux_binprm *bprm, - struct aa_ns *ns, struct list_head *list, - const char *name, const char **info) -{ - struct aa_profile *profile; - - rcu_read_lock(); - profile = aa_get_profile(__attach_match(bprm, name, list, info)); +out: + candidate = aa_get_newest_profile(candidate); rcu_read_unlock(); - return profile ? &profile->label : NULL; + return &candidate->label; } static const char *next_name(int xtype, const char *name) diff --git a/security/apparmor/policy.c b/security/apparmor/policy.c index ade333074c8e..06355717ee84 100644 --- a/security/apparmor/policy.c +++ b/security/apparmor/policy.c @@ -1124,8 +1124,8 @@ ssize_t aa_remove_profiles(struct aa_ns *policy_ns, struct aa_label *subj, if (!name) { /* remove namespace - can only happen if fqname[0] == ':' */ mutex_lock_nested(&ns->parent->lock, ns->level); - __aa_remove_ns(ns); __aa_bump_ns_revision(ns); + __aa_remove_ns(ns); mutex_unlock(&ns->parent->lock); } else { /* remove profile */ @@ -1137,9 +1137,9 @@ ssize_t aa_remove_profiles(struct aa_ns *policy_ns, struct aa_label *subj, goto fail_ns_lock; } name = profile->base.hname; + __aa_bump_ns_revision(ns); __remove_profile(profile); __aa_labelset_update_subtree(ns); - __aa_bump_ns_revision(ns); mutex_unlock(&ns->lock); } diff --git a/security/selinux/Kconfig b/security/selinux/Kconfig index 5711689deb6a..c9e576c430c2 100644 --- a/security/selinux/Kconfig +++ b/security/selinux/Kconfig @@ -85,3 +85,15 @@ config SECURITY_SELINUX_CHECKREQPROT_VALUE via /selinux/checkreqprot if authorized by policy. If you are unsure how to answer this question, answer 0. + +config SECURITY_SELINUX_SIDTAB_HASH_BITS + int "NSA SELinux sidtab hashtable size" + depends on SECURITY_SELINUX + range 8 13 + default 9 + help + This option sets the number of buckets used in the sidtab hashtable + to 2^SECURITY_SELINUX_SIDTAB_HASH_BITS buckets. The number of hash + collisions may be viewed at /sys/fs/selinux/ss/sidtab_hash_stats. If + chain lengths are high (e.g. > 20) then selecting a higher value here + will ensure that lookups times are short and stable. diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h index 111121281c47..ca75fe7ff4b1 100644 --- a/security/selinux/include/security.h +++ b/security/selinux/include/security.h @@ -394,5 +394,6 @@ extern int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm); extern void avtab_cache_init(void); extern void ebitmap_cache_init(void); extern void hashtab_cache_init(void); +extern int security_sidtab_hash_stats(struct selinux_state *state, char *page); #endif /* _SELINUX_SECURITY_H_ */ diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index e6c7643c3fc0..83f1b197a03d 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -1486,6 +1486,32 @@ static ssize_t sel_read_avc_hash_stats(struct file *filp, char __user *buf, return length; } +static ssize_t sel_read_sidtab_hash_stats(struct file *filp, char __user *buf, + size_t count, loff_t *ppos) +{ + struct selinux_fs_info *fsi = file_inode(filp)->i_sb->s_fs_info; + struct selinux_state *state = fsi->state; + char *page; + ssize_t length; + + page = (char *)__get_free_page(GFP_KERNEL); + if (!page) + return -ENOMEM; + + length = security_sidtab_hash_stats(state, page); + if (length >= 0) + length = simple_read_from_buffer(buf, count, ppos, page, + length); + free_page((unsigned long)page); + + return length; +} + +static const struct file_operations sel_sidtab_hash_stats_ops = { + .read = sel_read_sidtab_hash_stats, + .llseek = generic_file_llseek, +}; + static const struct file_operations sel_avc_cache_threshold_ops = { .read = sel_read_avc_cache_threshold, .write = sel_write_avc_cache_threshold, @@ -1603,6 +1629,37 @@ static int sel_make_avc_files(struct dentry *dir) return 0; } +static int sel_make_ss_files(struct dentry *dir) +{ + struct super_block *sb = dir->d_sb; + struct selinux_fs_info *fsi = sb->s_fs_info; + int i; + static struct tree_descr files[] = { + { "sidtab_hash_stats", &sel_sidtab_hash_stats_ops, S_IRUGO }, + }; + + for (i = 0; i < ARRAY_SIZE(files); i++) { + struct inode *inode; + struct dentry *dentry; + + dentry = d_alloc_name(dir, files[i].name); + if (!dentry) + return -ENOMEM; + + inode = sel_make_inode(dir->d_sb, S_IFREG|files[i].mode); + if (!inode) { + dput(dentry); + return -ENOMEM; + } + + inode->i_fop = files[i].ops; + inode->i_ino = ++fsi->last_ino; + d_add(dentry, inode); + } + + return 0; +} + static ssize_t sel_read_initcon(struct file *file, char __user *buf, size_t count, loff_t *ppos) { @@ -1967,6 +2024,14 @@ static int sel_fill_super(struct super_block *sb, struct fs_context *fc) } ret = sel_make_avc_files(dentry); + + dentry = sel_make_dir(sb->s_root, "ss", &fsi->last_ino); + if (IS_ERR(dentry)) { + ret = PTR_ERR(dentry); + goto err; + } + + ret = sel_make_ss_files(dentry); if (ret) goto err; diff --git a/security/selinux/ss/context.h b/security/selinux/ss/context.h index 2260c44a568c..69fd1943683c 100644 --- a/security/selinux/ss/context.h +++ b/security/selinux/ss/context.h @@ -31,6 +31,7 @@ struct context { u32 len; /* length of string in bytes */ struct mls_range range; char *str; /* string representation if context cannot be mapped. */ + u32 hash; /* a hash of the string representation */ }; static inline void mls_context_init(struct context *c) @@ -136,12 +137,13 @@ static inline int context_cpy(struct context *dst, struct context *src) kfree(dst->str); return rc; } + dst->hash = src->hash; return 0; } static inline void context_destroy(struct context *c) { - c->user = c->role = c->type = 0; + c->user = c->role = c->type = c->hash = 0; kfree(c->str); c->str = NULL; c->len = 0; @@ -150,6 +152,8 @@ static inline void context_destroy(struct context *c) static inline int context_cmp(struct context *c1, struct context *c2) { + if (c1->hash && c2->hash && (c1->hash != c2->hash)) + return 0; if (c1->len && c2->len) return (c1->len == c2->len && !strcmp(c1->str, c2->str)); if (c1->len || c2->len) @@ -160,5 +164,10 @@ static inline int context_cmp(struct context *c1, struct context *c2) mls_context_cmp(c1, c2)); } +static inline unsigned int context_compute_hash(const char *s) +{ + return full_name_hash(NULL, s, strlen(s)); +} + #endif /* _SS_CONTEXT_H_ */ diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 1260f5fb766e..ec269e39032c 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c @@ -873,6 +873,11 @@ int policydb_load_isids(struct policydb *p, struct sidtab *s) sidtab_destroy(s); goto out; } + rc = context_add_hash(p, &c->context[0]); + if (rc) { + sidtab_destroy(s); + goto out; + } rc = sidtab_set_initial(s, c->sid[0], &c->context[0]); if (rc) { diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c index a5813c7629c1..38fb6fdd65ca 100644 --- a/security/selinux/ss/services.c +++ b/security/selinux/ss/services.c @@ -1257,6 +1257,17 @@ static int context_struct_to_string(struct policydb *p, #include "initial_sid_to_string.h" +int security_sidtab_hash_stats(struct selinux_state *state, char *page) +{ + int rc; + + read_lock(&state->ss->policy_rwlock); + rc = sidtab_hash_stats(state->ss->sidtab, page); + read_unlock(&state->ss->policy_rwlock); + + return rc; +} + const char *security_get_initial_sid_context(u32 sid) { if (unlikely(sid > SECINITSID_NUM)) @@ -1449,6 +1460,42 @@ out: return rc; } +int context_add_hash(struct policydb *policydb, + struct context *context) +{ + int rc; + char *str; + int len; + + if (context->str) { + context->hash = context_compute_hash(context->str); + } else { + rc = context_struct_to_string(policydb, context, + &str, &len); + if (rc) + return rc; + context->hash = context_compute_hash(str); + kfree(str); + } + return 0; +} + +static int context_struct_to_sid(struct selinux_state *state, + struct context *context, u32 *sid) +{ + int rc; + struct sidtab *sidtab = state->ss->sidtab; + struct policydb *policydb = &state->ss->policydb; + + if (!context->hash) { + rc = context_add_hash(policydb, context); + if (rc) + return rc; + } + + return sidtab_context_to_sid(sidtab, context, sid); +} + static int security_context_to_sid_core(struct selinux_state *state, const char *scontext, u32 scontext_len, u32 *sid, u32 def_sid, gfp_t gfp_flags, @@ -1501,7 +1548,7 @@ static int security_context_to_sid_core(struct selinux_state *state, str = NULL; } else if (rc) goto out_unlock; - rc = sidtab_context_to_sid(sidtab, &context, sid); + rc = context_struct_to_sid(state, &context, sid); context_destroy(&context); out_unlock: read_unlock(&state->ss->policy_rwlock); @@ -1805,7 +1852,7 @@ static int security_compute_sid(struct selinux_state *state, goto out_unlock; } /* Obtain the sid for the context. */ - rc = sidtab_context_to_sid(sidtab, &newcontext, out_sid); + rc = context_struct_to_sid(state, &newcontext, out_sid); out_unlock: read_unlock(&state->ss->policy_rwlock); context_destroy(&newcontext); @@ -1957,6 +2004,7 @@ static int convert_context(struct context *oldc, struct context *newc, void *p) context_init(newc); newc->str = s; newc->len = oldc->len; + newc->hash = oldc->hash; return 0; } kfree(s); @@ -2033,6 +2081,10 @@ static int convert_context(struct context *oldc, struct context *newc, void *p) goto bad; } + rc = context_add_hash(args->newp, newc); + if (rc) + goto bad; + return 0; bad: /* Map old representation to string and save it. */ @@ -2042,6 +2094,7 @@ bad: context_destroy(newc); newc->str = s; newc->len = len; + newc->hash = context_compute_hash(s); pr_info("SELinux: Context %s became invalid (unmapped).\n", newc->str); return 0; @@ -2280,8 +2333,7 @@ int security_port_sid(struct selinux_state *state, if (c) { if (!c->sid[0]) { - rc = sidtab_context_to_sid(sidtab, - &c->context[0], + rc = context_struct_to_sid(state, &c->context[0], &c->sid[0]); if (rc) goto out; @@ -2306,14 +2358,12 @@ int security_ib_pkey_sid(struct selinux_state *state, u64 subnet_prefix, u16 pkey_num, u32 *out_sid) { struct policydb *policydb; - struct sidtab *sidtab; struct ocontext *c; int rc = 0; read_lock(&state->ss->policy_rwlock); policydb = &state->ss->policydb; - sidtab = state->ss->sidtab; c = policydb->ocontexts[OCON_IBPKEY]; while (c) { @@ -2327,7 +2377,7 @@ int security_ib_pkey_sid(struct selinux_state *state, if (c) { if (!c->sid[0]) { - rc = sidtab_context_to_sid(sidtab, + rc = context_struct_to_sid(state, &c->context[0], &c->sid[0]); if (rc) @@ -2374,8 +2424,7 @@ int security_ib_endport_sid(struct selinux_state *state, if (c) { if (!c->sid[0]) { - rc = sidtab_context_to_sid(sidtab, - &c->context[0], + rc = context_struct_to_sid(state, &c->context[0], &c->sid[0]); if (rc) goto out; @@ -2416,13 +2465,11 @@ int security_netif_sid(struct selinux_state *state, if (c) { if (!c->sid[0] || !c->sid[1]) { - rc = sidtab_context_to_sid(sidtab, - &c->context[0], - &c->sid[0]); + rc = context_struct_to_sid(state, &c->context[0], + &c->sid[0]); if (rc) goto out; - rc = sidtab_context_to_sid(sidtab, - &c->context[1], + rc = context_struct_to_sid(state, &c->context[1], &c->sid[1]); if (rc) goto out; @@ -2463,14 +2510,12 @@ int security_node_sid(struct selinux_state *state, u32 *out_sid) { struct policydb *policydb; - struct sidtab *sidtab; int rc; struct ocontext *c; read_lock(&state->ss->policy_rwlock); policydb = &state->ss->policydb; - sidtab = state->ss->sidtab; switch (domain) { case AF_INET: { @@ -2512,7 +2557,7 @@ int security_node_sid(struct selinux_state *state, if (c) { if (!c->sid[0]) { - rc = sidtab_context_to_sid(sidtab, + rc = context_struct_to_sid(state, &c->context[0], &c->sid[0]); if (rc) @@ -2596,12 +2641,17 @@ int security_get_user_sids(struct selinux_state *state, usercon.role = i + 1; ebitmap_for_each_positive_bit(&role->types, tnode, j) { usercon.type = j + 1; + /* + * The same context struct is reused here so the hash + * must be reset. + */ + usercon.hash = 0; if (mls_setup_user_range(policydb, fromcon, user, &usercon)) continue; - rc = sidtab_context_to_sid(sidtab, &usercon, &sid); + rc = context_struct_to_sid(state, &usercon, &sid); if (rc) goto out_unlock; if (mynel < maxnel) { @@ -2672,7 +2722,6 @@ static inline int __security_genfs_sid(struct selinux_state *state, u32 *sid) { struct policydb *policydb = &state->ss->policydb; - struct sidtab *sidtab = state->ss->sidtab; int len; u16 sclass; struct genfs *genfs; @@ -2707,7 +2756,7 @@ static inline int __security_genfs_sid(struct selinux_state *state, goto out; if (!c->sid[0]) { - rc = sidtab_context_to_sid(sidtab, &c->context[0], &c->sid[0]); + rc = context_struct_to_sid(state, &c->context[0], &c->sid[0]); if (rc) goto out; } @@ -2770,7 +2819,7 @@ int security_fs_use(struct selinux_state *state, struct super_block *sb) if (c) { sbsec->behavior = c->v.behavior; if (!c->sid[0]) { - rc = sidtab_context_to_sid(sidtab, &c->context[0], + rc = context_struct_to_sid(state, &c->context[0], &c->sid[0]); if (rc) goto out; @@ -3026,8 +3075,7 @@ int security_sid_mls_copy(struct selinux_state *state, goto out_unlock; } } - - rc = sidtab_context_to_sid(sidtab, &newcon, new_sid); + rc = context_struct_to_sid(state, &newcon, new_sid); out_unlock: read_unlock(&state->ss->policy_rwlock); context_destroy(&newcon); @@ -3620,7 +3668,7 @@ int security_netlbl_secattr_to_sid(struct selinux_state *state, if (!mls_context_isvalid(policydb, &ctx_new)) goto out_free; - rc = sidtab_context_to_sid(sidtab, &ctx_new, sid); + rc = context_struct_to_sid(state, &ctx_new, sid); if (rc) goto out_free; diff --git a/security/selinux/ss/services.h b/security/selinux/ss/services.h index 9a36de860368..fc40640a9725 100644 --- a/security/selinux/ss/services.h +++ b/security/selinux/ss/services.h @@ -8,7 +8,7 @@ #define _SS_SERVICES_H_ #include "policydb.h" -#include "sidtab.h" +#include "context.h" /* Mapping for a single class */ struct selinux_mapping { @@ -39,4 +39,6 @@ void services_compute_xperms_drivers(struct extended_perms *xperms, void services_compute_xperms_decision(struct extended_perms_decision *xpermd, struct avtab_node *node); +int context_add_hash(struct policydb *policydb, struct context *context); + #endif /* _SS_SERVICES_H_ */ diff --git a/security/selinux/ss/sidtab.c b/security/selinux/ss/sidtab.c index 7d49994e8d5f..d9d8599e8e63 100644 --- a/security/selinux/ss/sidtab.c +++ b/security/selinux/ss/sidtab.c @@ -17,26 +17,43 @@ #include "security.h" #include "sidtab.h" +#define index_to_sid(index) (index + SECINITSID_NUM + 1) +#define sid_to_index(sid) (sid - (SECINITSID_NUM + 1)) + int sidtab_init(struct sidtab *s) { u32 i; memset(s->roots, 0, sizeof(s->roots)); - /* max count is SIDTAB_MAX so valid index is always < SIDTAB_MAX */ - for (i = 0; i < SIDTAB_RCACHE_SIZE; i++) - s->rcache[i] = SIDTAB_MAX; - for (i = 0; i < SECINITSID_NUM; i++) s->isids[i].set = 0; s->count = 0; s->convert = NULL; + hash_init(s->context_to_sid); spin_lock_init(&s->lock); return 0; } +static u32 context_to_sid(struct sidtab *s, struct context *context) +{ + struct sidtab_entry_leaf *entry; + u32 sid = 0; + + rcu_read_lock(); + hash_for_each_possible_rcu(s->context_to_sid, entry, list, + context->hash) { + if (context_cmp(&entry->context, context)) { + sid = entry->sid; + break; + } + } + rcu_read_unlock(); + return sid; +} + int sidtab_set_initial(struct sidtab *s, u32 sid, struct context *context) { struct sidtab_isid_entry *entry; @@ -47,14 +64,60 @@ int sidtab_set_initial(struct sidtab *s, u32 sid, struct context *context) entry = &s->isids[sid - 1]; - rc = context_cpy(&entry->context, context); + rc = context_cpy(&entry->leaf.context, context); if (rc) return rc; entry->set = 1; + + /* + * Multiple initial sids may map to the same context. Check that this + * context is not already represented in the context_to_sid hashtable + * to avoid duplicate entries and long linked lists upon hash + * collision. + */ + if (!context_to_sid(s, context)) { + entry->leaf.sid = sid; + hash_add(s->context_to_sid, &entry->leaf.list, context->hash); + } + return 0; } +int sidtab_hash_stats(struct sidtab *sidtab, char *page) +{ + int i; + int chain_len = 0; + int slots_used = 0; + int entries = 0; + int max_chain_len = 0; + int cur_bucket = 0; + struct sidtab_entry_leaf *entry; + + rcu_read_lock(); + hash_for_each_rcu(sidtab->context_to_sid, i, entry, list) { + entries++; + if (i == cur_bucket) { + chain_len++; + if (chain_len == 1) + slots_used++; + } else { + cur_bucket = i; + if (chain_len > max_chain_len) + max_chain_len = chain_len; + chain_len = 0; + } + } + rcu_read_unlock(); + + if (chain_len > max_chain_len) + max_chain_len = chain_len; + + return scnprintf(page, PAGE_SIZE, "entries: %d\nbuckets used: %d/%d\n" + "longest chain: %d\n", entries, + slots_used, SIDTAB_HASH_BUCKETS, max_chain_len); +} + static u32 sidtab_level_from_count(u32 count) { u32 capacity = SIDTAB_LEAF_ENTRIES; @@ -88,7 +151,8 @@ static int sidtab_alloc_roots(struct sidtab *s, u32 level) return 0; } -static struct context *sidtab_do_lookup(struct sidtab *s, u32 index, int alloc) +static struct sidtab_entry_leaf *sidtab_do_lookup(struct sidtab *s, u32 index, + int alloc) { union sidtab_entry_inner *entry; u32 level, capacity_shift, leaf_index = index / SIDTAB_LEAF_ENTRIES; @@ -125,7 +189,7 @@ static struct context *sidtab_do_lookup(struct sidtab *s, u32 index, int alloc) if (!entry->ptr_leaf) return NULL; } - return &entry->ptr_leaf->entries[index % SIDTAB_LEAF_ENTRIES].context; + return &entry->ptr_leaf->entries[index % SIDTAB_LEAF_ENTRIES]; } static struct context *sidtab_lookup(struct sidtab *s, u32 index) @@ -136,12 +200,12 @@ static struct context *sidtab_lookup(struct sidtab *s, u32 index) if (index >= count) return NULL; - return sidtab_do_lookup(s, index, 0); + return &sidtab_do_lookup(s, index, 0)->context; } static struct context *sidtab_lookup_initial(struct sidtab *s, u32 sid) { - return s->isids[sid - 1].set ? &s->isids[sid - 1].context : NULL; + return s->isids[sid - 1].set ? &s->isids[sid - 1].leaf.context : NULL; } static struct context *sidtab_search_core(struct sidtab *s, u32 sid, int force) @@ -150,7 +214,7 @@ static struct context *sidtab_search_core(struct sidtab *s, u32 sid, int force) if (sid != 0) { if (sid > SECINITSID_NUM) - context = sidtab_lookup(s, sid - (SECINITSID_NUM + 1)); + context = sidtab_lookup(s, sid_to_index(sid)); else context = sidtab_lookup_initial(s, sid); if (context && (!context->len || force)) @@ -170,117 +234,30 @@ struct context *sidtab_search_force(struct sidtab *s, u32 sid) return sidtab_search_core(s, sid, 1); } -static int sidtab_find_context(union sidtab_entry_inner entry, - u32 *pos, u32 count, u32 level, - struct context *context, u32 *index) -{ - int rc; - u32 i; - - if (level != 0) { - struct sidtab_node_inner *node = entry.ptr_inner; - - i = 0; - while (i < SIDTAB_INNER_ENTRIES && *pos < count) { - rc = sidtab_find_context(node->entries[i], - pos, count, level - 1, - context, index); - if (rc == 0) - return 0; - i++; - } - } else { - struct sidtab_node_leaf *node = entry.ptr_leaf; - - i = 0; - while (i < SIDTAB_LEAF_ENTRIES && *pos < count) { - if (context_cmp(&node->entries[i].context, context)) { - *index = *pos; - return 0; - } - (*pos)++; - i++; - } - } - return -ENOENT; -} - -static void sidtab_rcache_update(struct sidtab *s, u32 index, u32 pos) -{ - while (pos > 0) { - WRITE_ONCE(s->rcache[pos], READ_ONCE(s->rcache[pos - 1])); - --pos; - } - WRITE_ONCE(s->rcache[0], index); -} - -static void sidtab_rcache_push(struct sidtab *s, u32 index) -{ - sidtab_rcache_update(s, index, SIDTAB_RCACHE_SIZE - 1); -} - -static int sidtab_rcache_search(struct sidtab *s, struct context *context, - u32 *index) -{ - u32 i; - - for (i = 0; i < SIDTAB_RCACHE_SIZE; i++) { - u32 v = READ_ONCE(s->rcache[i]); - - if (v >= SIDTAB_MAX) - continue; - - if (context_cmp(sidtab_do_lookup(s, v, 0), context)) { - sidtab_rcache_update(s, v, i); - *index = v; - return 0; - } - } - return -ENOENT; -} - -static int sidtab_reverse_lookup(struct sidtab *s, struct context *context, - u32 *index) +int sidtab_context_to_sid(struct sidtab *s, struct context *context, + u32 *sid) { unsigned long flags; - u32 count, count_locked, level, pos; + u32 count; struct sidtab_convert_params *convert; - struct context *dst, *dst_convert; + struct sidtab_entry_leaf *dst, *dst_convert; int rc; - rc = sidtab_rcache_search(s, context, index); - if (rc == 0) + *sid = context_to_sid(s, context); + if (*sid) return 0; - /* read entries only after reading count */ - count = smp_load_acquire(&s->count); - level = sidtab_level_from_count(count); - - pos = 0; - rc = sidtab_find_context(s->roots[level], &pos, count, level, - context, index); - if (rc == 0) { - sidtab_rcache_push(s, *index); - return 0; - } - /* lock-free search failed: lock, re-search, and insert if not found */ spin_lock_irqsave(&s->lock, flags); - convert = s->convert; - count_locked = s->count; - level = sidtab_level_from_count(count_locked); + rc = 0; + *sid = context_to_sid(s, context); + if (*sid) + goto out_unlock; - /* if count has changed before we acquired the lock, then catch up */ - while (count < count_locked) { - if (context_cmp(sidtab_do_lookup(s, count, 0), context)) { - sidtab_rcache_push(s, count); - *index = count; - rc = 0; - goto out_unlock; - } - ++count; - } + /* read entries only after reading count */ + count = smp_load_acquire(&s->count); + convert = s->convert; /* bail out if we already reached max entries */ rc = -EOVERFLOW; @@ -293,7 +270,9 @@ static int sidtab_reverse_lookup(struct sidtab *s, struct context *context, if (!dst) goto out_unlock; - rc = context_cpy(dst, context); + dst->sid = index_to_sid(count); + + rc = context_cpy(&dst->context, context); if (rc) goto out_unlock; @@ -305,29 +284,32 @@ static int sidtab_reverse_lookup(struct sidtab *s, struct context *context, rc = -ENOMEM; dst_convert = sidtab_do_lookup(convert->target, count, 1); if (!dst_convert) { - context_destroy(dst); + context_destroy(&dst->context); goto out_unlock; } - rc = convert->func(context, dst_convert, convert->args); + rc = convert->func(context, &dst_convert->context, + convert->args); if (rc) { - context_destroy(dst); + context_destroy(&dst->context); goto out_unlock; } - - /* at this point we know the insert won't fail */ + dst_convert->sid = index_to_sid(count); convert->target->count = count + 1; + + hash_add_rcu(convert->target->context_to_sid, + &dst_convert->list, dst_convert->context.hash); } if (context->len) pr_info("SELinux: Context %s is not valid (left unmapped).\n", context->str); - sidtab_rcache_push(s, count); - *index = count; + *sid = index_to_sid(count); - /* write entries before writing new count */ + /* write entries before updating count */ smp_store_release(&s->count, count + 1); + hash_add_rcu(s->context_to_sid, &dst->list, dst->context.hash); rc = 0; out_unlock: @@ -335,25 +317,19 @@ out_unlock: return rc; } -int sidtab_context_to_sid(struct sidtab *s, struct context *context, u32 *sid) +static void sidtab_convert_hashtable(struct sidtab *s, u32 count) { - int rc; + struct sidtab_entry_leaf *entry; u32 i; - for (i = 0; i < SECINITSID_NUM; i++) { - struct sidtab_isid_entry *entry = &s->isids[i]; + for (i = 0; i < count; i++) { + entry = sidtab_do_lookup(s, i, 0); + entry->sid = index_to_sid(i); + + hash_add_rcu(s->context_to_sid, &entry->list, + entry->context.hash); - if (entry->set && context_cmp(context, &entry->context)) { - *sid = i + 1; - return 0; - } } - - rc = sidtab_reverse_lookup(s, context, sid); - if (rc) - return rc; - *sid += SECINITSID_NUM + 1; - return 0; } static int sidtab_convert_tree(union sidtab_entry_inner *edst, @@ -400,6 +376,7 @@ static int sidtab_convert_tree(union sidtab_entry_inner *edst, } cond_resched(); } + return 0; } @@ -435,7 +412,7 @@ int sidtab_convert(struct sidtab *s, struct sidtab_convert_params *params) /* enable live convert of new entries */ s->convert = params; - /* we can safely do the rest of the conversion outside the lock */ + /* we can safely convert the tree outside the lock */ spin_unlock_irqrestore(&s->lock, flags); pr_info("SELinux: Converting %u SID table entries...\n", count); @@ -449,8 +426,17 @@ int sidtab_convert(struct sidtab *s, struct sidtab_convert_params *params) spin_lock_irqsave(&s->lock, flags); s->convert = NULL; spin_unlock_irqrestore(&s->lock, flags); + return rc; } - return rc; + /* + * The hashtable can also be modified in sidtab_context_to_sid() + * so we must re-acquire the lock here. + */ + spin_lock_irqsave(&s->lock, flags); + sidtab_convert_hashtable(params->target, count); + spin_unlock_irqrestore(&s->lock, flags); + + return 0; } static void sidtab_destroy_tree(union sidtab_entry_inner entry, u32 level) @@ -484,11 +470,16 @@ void sidtab_destroy(struct sidtab *s) for (i = 0; i < SECINITSID_NUM; i++) if (s->isids[i].set) - context_destroy(&s->isids[i].context); + context_destroy(&s->isids[i].leaf.context); level = SIDTAB_MAX_LEVEL; while (level && !s->roots[level].ptr_inner) --level; sidtab_destroy_tree(s->roots[level], level); + /* + * The context_to_sid hashtable's objects are all shared + * with the isids array and context tree, and so don't need + * to be cleaned up here. + */ } diff --git a/security/selinux/ss/sidtab.h b/security/selinux/ss/sidtab.h index 1f4763141aa1..e2809401c417 100644 --- a/security/selinux/ss/sidtab.h +++ b/security/selinux/ss/sidtab.h @@ -13,11 +13,14 @@ #include #include +#include #include "context.h" struct sidtab_entry_leaf { + u32 sid; struct context context; + struct hlist_node list; }; struct sidtab_node_inner; @@ -57,7 +60,7 @@ struct sidtab_node_inner { struct sidtab_isid_entry { int set; - struct context context; + struct sidtab_entry_leaf leaf; }; struct sidtab_convert_params { @@ -66,7 +69,8 @@ struct sidtab_convert_params { struct sidtab *target; }; -#define SIDTAB_RCACHE_SIZE 3 +#define SIDTAB_HASH_BITS CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS +#define SIDTAB_HASH_BUCKETS (1 << SIDTAB_HASH_BITS) struct sidtab { /* @@ -83,11 +87,11 @@ struct sidtab { struct sidtab_convert_params *convert; spinlock_t lock; - /* reverse lookup cache - access atomically via {READ|WRITE}_ONCE() */ - u32 rcache[SIDTAB_RCACHE_SIZE]; - /* index == SID - 1 (no entry for SECSID_NULL) */ struct sidtab_isid_entry isids[SECINITSID_NUM]; + + /* Hash table for fast reverse context-to-sid lookups. */ + DECLARE_HASHTABLE(context_to_sid, SIDTAB_HASH_BITS); }; int sidtab_init(struct sidtab *s); @@ -101,6 +105,8 @@ int sidtab_context_to_sid(struct sidtab *s, struct context *context, u32 *sid); void sidtab_destroy(struct sidtab *s); +int sidtab_hash_stats(struct sidtab *sidtab, char *page); + #endif /* _SS_SIDTAB_H_ */ diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 8673eacd6c36..079aa81e9062 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -3434,7 +3434,8 @@ int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream, #endif /* CONFIG_GENERIC_ALLOCATOR */ #ifndef CONFIG_X86 /* for avoiding warnings arch/x86/mm/pat.c */ if (IS_ENABLED(CONFIG_HAS_DMA) && !substream->ops->page && - substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV) + (substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV || + substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV_UC)) return dma_mmap_coherent(substream->dma_buffer.dev.dev, area, substream->runtime->dma_area, diff --git a/sound/firewire/motu/motu-proc.c b/sound/firewire/motu/motu-proc.c index ea46fb4c1b5a..126a7bd187bb 100644 --- a/sound/firewire/motu/motu-proc.c +++ b/sound/firewire/motu/motu-proc.c @@ -16,7 +16,7 @@ static const char *const clock_names[] = { [SND_MOTU_CLOCK_SOURCE_SPDIF_ON_OPT] = "S/PDIF on optical interface", [SND_MOTU_CLOCK_SOURCE_SPDIF_ON_OPT_A] = "S/PDIF on optical interface A", [SND_MOTU_CLOCK_SOURCE_SPDIF_ON_OPT_B] = "S/PDIF on optical interface B", - [SND_MOTU_CLOCK_SOURCE_SPDIF_ON_COAX] = "S/PCIF on coaxial interface", + [SND_MOTU_CLOCK_SOURCE_SPDIF_ON_COAX] = "S/PDIF on coaxial interface", [SND_MOTU_CLOCK_SOURCE_AESEBU_ON_XLR] = "AESEBU on XLR interface", [SND_MOTU_CLOCK_SOURCE_WORD_ON_BNC] = "Word clock on BNC interface", }; diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c index 78dd213589b4..fa3c39cff5f8 100644 --- a/sound/isa/cs423x/cs4236.c +++ b/sound/isa/cs423x/cs4236.c @@ -278,7 +278,8 @@ static int snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev) } else { mpu_port[dev] = pnp_port_start(pdev, 0); if (mpu_irq[dev] >= 0 && - pnp_irq_valid(pdev, 0) && pnp_irq(pdev, 0) >= 0) { + pnp_irq_valid(pdev, 0) && + pnp_irq(pdev, 0) != (resource_size_t)-1) { mpu_irq[dev] = pnp_irq(pdev, 0); } else { mpu_irq[dev] = -1; /* disable interrupt */ diff --git a/sound/pci/hda/hda_controller.c b/sound/pci/hda/hda_controller.c index 6387c7e90918..76b507058cb4 100644 --- a/sound/pci/hda/hda_controller.c +++ b/sound/pci/hda/hda_controller.c @@ -884,7 +884,7 @@ static int azx_rirb_get_response(struct hdac_bus *bus, unsigned int addr, return -EAGAIN; /* give a chance to retry */ } - dev_WARN(chip->card->dev, + dev_err(chip->card->dev, "azx_get_response timeout, switching to single_cmd mode: last cmd=0x%08x\n", bus->last_cmd[addr]); chip->single_cmd = 1; diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 86a416cdeb29..f6cbb831b86a 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -280,12 +280,13 @@ enum { /* quirks for old Intel chipsets */ #define AZX_DCAPS_INTEL_ICH \ - (AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE) + (AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE |\ + AZX_DCAPS_SYNC_WRITE) /* quirks for Intel PCH */ #define AZX_DCAPS_INTEL_PCH_BASE \ (AZX_DCAPS_NO_ALIGN_BUFSIZE | AZX_DCAPS_COUNT_LPIB_DELAY |\ - AZX_DCAPS_SNOOP_TYPE(SCH)) + AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE) /* PCH up to IVB; no runtime PM; bind with i915 gfx */ #define AZX_DCAPS_INTEL_PCH_NOPM \ @@ -300,13 +301,13 @@ enum { #define AZX_DCAPS_INTEL_HASWELL \ (/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_COUNT_LPIB_DELAY |\ AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\ - AZX_DCAPS_SNOOP_TYPE(SCH)) + AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE) /* Broadwell HDMI can't use position buffer reliably, force to use LPIB */ #define AZX_DCAPS_INTEL_BROADWELL \ (/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_POSFIX_LPIB |\ AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_COMPONENT |\ - AZX_DCAPS_SNOOP_TYPE(SCH)) + AZX_DCAPS_SNOOP_TYPE(SCH) | AZX_DCAPS_SYNC_WRITE) #define AZX_DCAPS_INTEL_BAYTRAIL \ (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_I915_COMPONENT) @@ -1280,11 +1281,17 @@ static void init_vga_switcheroo(struct azx *chip) { struct hda_intel *hda = container_of(chip, struct hda_intel, chip); struct pci_dev *p = get_bound_vga(chip->pci); + struct pci_dev *parent; if (p) { dev_info(chip->card->dev, "Handle vga_switcheroo audio client\n"); hda->use_vga_switcheroo = 1; - chip->bus.keep_power = 1; /* cleared in either gpu_bound op or codec probe */ + + /* cleared in either gpu_bound op or codec probe, or when its + * upstream port has _PR3 (i.e. dGPU). + */ + parent = pci_upstream_bridge(p); + chip->bus.keep_power = parent ? !pci_pr3_present(parent) : 1; chip->driver_caps |= AZX_DCAPS_PM_RUNTIME; pci_dev_put(p); } diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index e1229dbad6b2..252888f426de 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -501,6 +501,7 @@ static void alc_shutup_pins(struct hda_codec *codec) struct alc_spec *spec = codec->spec; switch (codec->core.vendor_id) { + case 0x10ec0283: case 0x10ec0286: case 0x10ec0288: case 0x10ec0298: @@ -5547,6 +5548,16 @@ static void alc295_fixup_disable_dac3(struct hda_codec *codec, } } +/* force NID 0x17 (Bass Speaker) to DAC1 to share it with the main speaker */ +static void alc285_fixup_speaker2_to_dac1(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PRE_PROBE) { + hda_nid_t conn[1] = { 0x02 }; + snd_hda_override_conn_list(codec, 0x17, 1, conn); + } +} + /* Hook to update amp GPIO4 for automute */ static void alc280_hp_gpio4_automute_hook(struct hda_codec *codec, struct hda_jack_callback *jack) @@ -5849,6 +5860,7 @@ enum { ALC225_FIXUP_DISABLE_MIC_VREF, ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, ALC295_FIXUP_DISABLE_DAC3, + ALC285_FIXUP_SPEAKER2_TO_DAC1, ALC280_FIXUP_HP_HEADSET_MIC, ALC221_FIXUP_HP_FRONT_MIC, ALC292_FIXUP_TPT460, @@ -5893,9 +5905,12 @@ enum { ALC256_FIXUP_ASUS_HEADSET_MIC, ALC256_FIXUP_ASUS_MIC_NO_PRESENCE, ALC299_FIXUP_PREDATOR_SPK, - ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC, ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, - ALC294_FIXUP_ASUS_INTSPK_GPIO, + ALC289_FIXUP_DELL_SPK2, + ALC289_FIXUP_DUAL_SPK, + ALC294_FIXUP_SPK2_TO_DAC1, + ALC294_FIXUP_ASUS_DUAL_SPK, + }; static const struct hda_fixup alc269_fixups[] = { @@ -6649,6 +6664,10 @@ static const struct hda_fixup alc269_fixups[] = { .type = HDA_FIXUP_FUNC, .v.func = alc295_fixup_disable_dac3, }, + [ALC285_FIXUP_SPEAKER2_TO_DAC1] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc285_fixup_speaker2_to_dac1, + }, [ALC256_FIXUP_DELL_INSPIRON_7559_SUBWOOFER] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { @@ -6966,16 +6985,6 @@ static const struct hda_fixup alc269_fixups[] = { { } } }, - [ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC] = { - .type = HDA_FIXUP_PINS, - .v.pins = (const struct hda_pintbl[]) { - { 0x14, 0x411111f0 }, /* disable confusing internal speaker */ - { 0x19, 0x04a11150 }, /* use as headset mic, without its own jack detect */ - { } - }, - .chained = true, - .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC - }, [ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE] = { .type = HDA_FIXUP_PINS, .v.pins = (const struct hda_pintbl[]) { @@ -6986,13 +6995,35 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE }, - [ALC294_FIXUP_ASUS_INTSPK_GPIO] = { + [ALC289_FIXUP_DELL_SPK2] = { + .type = HDA_FIXUP_PINS, + .v.pins = (const struct hda_pintbl[]) { + { 0x17, 0x90170130 }, /* bass spk */ + { } + }, + .chained = true, + .chain_id = ALC269_FIXUP_DELL4_MIC_NO_PRESENCE + }, + [ALC289_FIXUP_DUAL_SPK] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc285_fixup_speaker2_to_dac1, + .chained = true, + .chain_id = ALC289_FIXUP_DELL_SPK2 + }, + [ALC294_FIXUP_SPK2_TO_DAC1] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc285_fixup_speaker2_to_dac1, + .chained = true, + .chain_id = ALC294_FIXUP_ASUS_HEADSET_MIC + }, + [ALC294_FIXUP_ASUS_DUAL_SPK] = { .type = HDA_FIXUP_FUNC, /* The GPIO must be pulled to initialize the AMP */ .v.func = alc_fixup_gpio4, .chained = true, - .chain_id = ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC + .chain_id = ALC294_FIXUP_SPK2_TO_DAC1 }, + }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { @@ -7065,6 +7096,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1028, 0x08ad, "Dell WYSE AIO", ALC225_FIXUP_DELL_WYSE_AIO_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x08ae, "Dell WYSE NB", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x0935, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB), + SND_PCI_QUIRK(0x1028, 0x097e, "Dell Precision", ALC289_FIXUP_DUAL_SPK), + SND_PCI_QUIRK(0x1028, 0x097d, "Dell Precision", ALC289_FIXUP_DUAL_SPK), SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), @@ -7152,7 +7185,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK), SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A), SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), - SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_INTSPK_GPIO), + SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_DUAL_SPK), SND_PCI_QUIRK(0x1043, 0x18b1, "Asus MJ401TA", ALC256_FIXUP_ASUS_HEADSET_MIC), SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC), @@ -7224,6 +7257,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x17aa, 0x224c, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), SND_PCI_QUIRK(0x17aa, 0x224d, "Thinkpad", ALC298_FIXUP_TPT470_DOCK), SND_PCI_QUIRK(0x17aa, 0x225d, "Thinkpad T480", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), + SND_PCI_QUIRK(0x17aa, 0x2293, "Thinkpad X1 Carbon 7th", ALC285_FIXUP_SPEAKER2_TO_DAC1), SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), SND_PCI_QUIRK(0x17aa, 0x310c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION), @@ -7408,6 +7442,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { {.id = ALC255_FIXUP_DELL_SPK_NOISE, .name = "dell-spk-noise"}, {.id = ALC225_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "alc225-dell1"}, {.id = ALC295_FIXUP_DISABLE_DAC3, .name = "alc295-disable-dac3"}, + {.id = ALC285_FIXUP_SPEAKER2_TO_DAC1, .name = "alc285-speaker2-to-dac1"}, {.id = ALC280_FIXUP_HP_HEADSET_MIC, .name = "alc280-hp-headset"}, {.id = ALC221_FIXUP_HP_FRONT_MIC, .name = "alc221-hp-mic"}, {.id = ALC298_FIXUP_SPK_VOLUME, .name = "alc298-spk-volume"}, diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c index e62c11816683..f360b33a1042 100644 --- a/sound/pci/ice1712/ice1724.c +++ b/sound/pci/ice1712/ice1724.c @@ -647,6 +647,7 @@ static int snd_vt1724_set_pro_rate(struct snd_ice1712 *ice, unsigned int rate, unsigned long flags; unsigned char mclk_change; unsigned int i, old_rate; + bool call_set_rate = false; if (rate > ice->hw_rates->list[ice->hw_rates->count - 1]) return -EINVAL; @@ -670,7 +671,7 @@ static int snd_vt1724_set_pro_rate(struct snd_ice1712 *ice, unsigned int rate, * setting clock rate for internal clock mode */ old_rate = ice->get_rate(ice); if (force || (old_rate != rate)) - ice->set_rate(ice, rate); + call_set_rate = true; else if (rate == ice->cur_rate) { spin_unlock_irqrestore(&ice->reg_lock, flags); return 0; @@ -678,12 +679,14 @@ static int snd_vt1724_set_pro_rate(struct snd_ice1712 *ice, unsigned int rate, } ice->cur_rate = rate; + spin_unlock_irqrestore(&ice->reg_lock, flags); + + if (call_set_rate) + ice->set_rate(ice, rate); /* setting master clock */ mclk_change = ice->set_mclk(ice, rate); - spin_unlock_irqrestore(&ice->reg_lock, flags); - if (mclk_change && ice->gpio.i2s_mclk_changed) ice->gpio.i2s_mclk_changed(ice); if (ice->gpio.set_pro_rate) diff --git a/sound/usb/card.h b/sound/usb/card.h index 597ec53f1560..6aae28c8d331 100644 --- a/sound/usb/card.h +++ b/sound/usb/card.h @@ -145,6 +145,7 @@ struct snd_usb_substream { struct snd_usb_endpoint *sync_endpoint; unsigned long flags; bool need_setup_ep; /* (re)configure EP at prepare? */ + bool need_setup_fmt; /* (re)configure fmt after resume? */ unsigned int speed; /* USB_SPEED_XXX */ u64 formats; /* format bitmasks (all or'ed) */ diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 02d63a0df6fd..d2a414ccac5e 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -569,15 +569,15 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt) if (WARN_ON(!iface)) return -EINVAL; alts = usb_altnum_to_altsetting(iface, fmt->altsetting); - altsd = get_iface_desc(alts); - if (WARN_ON(altsd->bAlternateSetting != fmt->altsetting)) + if (WARN_ON(!alts)) return -EINVAL; + altsd = get_iface_desc(alts); - if (fmt == subs->cur_audiofmt) + if (fmt == subs->cur_audiofmt && !subs->need_setup_fmt) return 0; /* close the old interface */ - if (subs->interface >= 0 && subs->interface != fmt->iface) { + if (subs->interface >= 0 && (subs->interface != fmt->iface || subs->need_setup_fmt)) { if (!subs->stream->chip->keep_iface) { err = usb_set_interface(subs->dev, subs->interface, 0); if (err < 0) { @@ -591,6 +591,9 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt) subs->altset_idx = 0; } + if (subs->need_setup_fmt) + subs->need_setup_fmt = false; + /* set interface */ if (iface->cur_altsetting != alts) { err = snd_usb_select_mode_quirk(subs, fmt); @@ -1866,6 +1869,13 @@ static int snd_usb_substream_playback_trigger(struct snd_pcm_substream *substrea subs->data_endpoint->retire_data_urb = retire_playback_urb; subs->running = 0; return 0; + case SNDRV_PCM_TRIGGER_SUSPEND: + if (subs->stream->chip->setup_fmt_after_resume_quirk) { + stop_endpoints(subs, true); + subs->need_setup_fmt = true; + return 0; + } + break; } return -EINVAL; @@ -1898,6 +1908,13 @@ static int snd_usb_substream_capture_trigger(struct snd_pcm_substream *substream subs->data_endpoint->retire_data_urb = retire_capture_urb; subs->running = 1; return 0; + case SNDRV_PCM_TRIGGER_SUSPEND: + if (subs->stream->chip->setup_fmt_after_resume_quirk) { + stop_endpoints(subs, true); + subs->need_setup_fmt = true; + return 0; + } + break; } return -EINVAL; diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index 70c338f3ae24..d187aa6d50db 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -3466,7 +3466,8 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"), .vendor_name = "Dell", .product_name = "WD19 Dock", .profile_name = "Dell-WD15-Dock", - .ifnum = QUIRK_NO_INTERFACE + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_SETUP_FMT_AFTER_RESUME } }, /* MOTU Microbook II */ diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 349e1e52996d..a81c2066499f 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -508,6 +508,16 @@ static int create_standard_mixer_quirk(struct snd_usb_audio *chip, return snd_usb_create_mixer(chip, quirk->ifnum, 0); } + +static int setup_fmt_after_resume_quirk(struct snd_usb_audio *chip, + struct usb_interface *iface, + struct usb_driver *driver, + const struct snd_usb_audio_quirk *quirk) +{ + chip->setup_fmt_after_resume_quirk = 1; + return 1; /* Continue with creating streams and mixer */ +} + /* * audio-interface quirks * @@ -546,6 +556,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip, [QUIRK_AUDIO_EDIROL_UAXX] = create_uaxx_quirk, [QUIRK_AUDIO_ALIGN_TRANSFER] = create_align_transfer_quirk, [QUIRK_AUDIO_STANDARD_MIXER] = create_standard_mixer_quirk, + [QUIRK_SETUP_FMT_AFTER_RESUME] = setup_fmt_after_resume_quirk, }; if (quirk->type < QUIRK_TYPE_COUNT) { diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 8fdc6673babb..502000a641c6 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -33,7 +33,7 @@ struct snd_usb_audio { wait_queue_head_t shutdown_wait; unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */ unsigned int tx_length_quirk:1; /* Put length specifier in transfers */ - + unsigned int setup_fmt_after_resume_quirk:1; /* setup the format to interface after resume */ int num_interfaces; int num_suspended_intf; int sample_rate_read_error; @@ -101,6 +101,7 @@ enum quirk_type { QUIRK_AUDIO_EDIROL_UAXX, QUIRK_AUDIO_ALIGN_TRANSFER, QUIRK_AUDIO_STANDARD_MIXER, + QUIRK_SETUP_FMT_AFTER_RESUME, QUIRK_TYPE_COUNT }; diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 70a9f8716a4b..888814df758d 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -2403,7 +2403,7 @@ static int thread__resolve_callchain_sample(struct thread *thread, } check_calls: - if (callchain_param.order != ORDER_CALLEE) { + if (chain && callchain_param.order != ORDER_CALLEE) { err = find_prev_cpumode(chain, thread, cursor, parent, root_al, &cpumode, chain->nr - first_call); if (err) diff --git a/tools/testing/selftests/rseq/param_test.c b/tools/testing/selftests/rseq/param_test.c index eec2663261f2..e8a657a5f48a 100644 --- a/tools/testing/selftests/rseq/param_test.c +++ b/tools/testing/selftests/rseq/param_test.c @@ -15,7 +15,7 @@ #include #include -static inline pid_t gettid(void) +static inline pid_t rseq_gettid(void) { return syscall(__NR_gettid); } @@ -373,11 +373,12 @@ void *test_percpu_spinlock_thread(void *arg) rseq_percpu_unlock(&data->lock, cpu); #ifndef BENCHMARK if (i != 0 && !(i % (reps / 10))) - printf_verbose("tid %d: count %lld\n", (int) gettid(), i); + printf_verbose("tid %d: count %lld\n", + (int) rseq_gettid(), i); #endif } printf_verbose("tid %d: number of rseq abort: %d, signals delivered: %u\n", - (int) gettid(), nr_abort, signals_delivered); + (int) rseq_gettid(), nr_abort, signals_delivered); if (!opt_disable_rseq && thread_data->reg && rseq_unregister_current_thread()) abort(); @@ -454,11 +455,12 @@ void *test_percpu_inc_thread(void *arg) } while (rseq_unlikely(ret)); #ifndef BENCHMARK if (i != 0 && !(i % (reps / 10))) - printf_verbose("tid %d: count %lld\n", (int) gettid(), i); + printf_verbose("tid %d: count %lld\n", + (int) rseq_gettid(), i); #endif } printf_verbose("tid %d: number of rseq abort: %d, signals delivered: %u\n", - (int) gettid(), nr_abort, signals_delivered); + (int) rseq_gettid(), nr_abort, signals_delivered); if (!opt_disable_rseq && thread_data->reg && rseq_unregister_current_thread()) abort(); @@ -605,7 +607,7 @@ void *test_percpu_list_thread(void *arg) } printf_verbose("tid %d: number of rseq abort: %d, signals delivered: %u\n", - (int) gettid(), nr_abort, signals_delivered); + (int) rseq_gettid(), nr_abort, signals_delivered); if (!opt_disable_rseq && rseq_unregister_current_thread()) abort(); @@ -796,7 +798,7 @@ void *test_percpu_buffer_thread(void *arg) } printf_verbose("tid %d: number of rseq abort: %d, signals delivered: %u\n", - (int) gettid(), nr_abort, signals_delivered); + (int) rseq_gettid(), nr_abort, signals_delivered); if (!opt_disable_rseq && rseq_unregister_current_thread()) abort(); @@ -1011,7 +1013,7 @@ void *test_percpu_memcpy_buffer_thread(void *arg) } printf_verbose("tid %d: number of rseq abort: %d, signals delivered: %u\n", - (int) gettid(), nr_abort, signals_delivered); + (int) rseq_gettid(), nr_abort, signals_delivered); if (!opt_disable_rseq && rseq_unregister_current_thread()) abort(); diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index b505bb062d07..96bbda4f10fc 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c @@ -3147,7 +3147,18 @@ TEST(user_notification_basic) EXPECT_GT(poll(&pollfd, 1, -1), 0); EXPECT_EQ(pollfd.revents, POLLIN); - EXPECT_EQ(ioctl(listener, SECCOMP_IOCTL_NOTIF_RECV, &req), 0); + /* Test that we can't pass garbage to the kernel. */ + memset(&req, 0, sizeof(req)); + req.pid = -1; + errno = 0; + ret = ioctl(listener, SECCOMP_IOCTL_NOTIF_RECV, &req); + EXPECT_EQ(-1, ret); + EXPECT_EQ(EINVAL, errno); + + if (ret) { + req.pid = 0; + EXPECT_EQ(ioctl(listener, SECCOMP_IOCTL_NOTIF_RECV, &req), 0); + } pollfd.fd = listener; pollfd.events = POLLIN | POLLOUT; @@ -3267,6 +3278,7 @@ TEST(user_notification_signal) close(sk_pair[1]); + memset(&req, 0, sizeof(req)); EXPECT_EQ(ioctl(listener, SECCOMP_IOCTL_NOTIF_RECV, &req), 0); EXPECT_EQ(kill(pid, SIGUSR1), 0); @@ -3285,6 +3297,7 @@ TEST(user_notification_signal) EXPECT_EQ(ioctl(listener, SECCOMP_IOCTL_NOTIF_SEND, &resp), -1); EXPECT_EQ(errno, ENOENT); + memset(&req, 0, sizeof(req)); EXPECT_EQ(ioctl(listener, SECCOMP_IOCTL_NOTIF_RECV, &req), 0); resp.id = req.id; diff --git a/usr/gen_initramfs_list.sh b/usr/gen_initramfs_list.sh index 0aad760fcd8c..2bbac73e6477 100755 --- a/usr/gen_initramfs_list.sh +++ b/usr/gen_initramfs_list.sh @@ -128,7 +128,7 @@ parse() { str="${ftype} ${name} ${location} ${str}" ;; "nod") - local dev=`LC_ALL=C ls -l "${location}"` + local dev="`LC_ALL=C ls -l "${location}"`" local maj=`field 5 ${dev}` local min=`field 6 ${dev}` maj=${maj%,}