Back to report · Publisher record

Crowther et al. (2016). Quantifying global soil carbon losses in response to warming

Page 1

Figures and page graphics, page 1

 
© 2016 Macmillan Publishers Limited, part of Springer Nature 
 
This version available 

http://nora.nerc.ac.uk/id/eprint/515294/

 

 
NERC has developed NORA to enable users to access research outputs 
wholly or partially funded by NERC. Copyright and other rights for material 
on this site are retained by the rights owners. Users should read the terms 
and conditions of use of this material at 

http://nora.nerc.ac.uk/policies.html#access

  

 
 

This document is the author’s final manuscript version of the journal 
article following the peer review process. Some differences between 
this and the publisher’s version may remain. You are advised to 
consult the publisher’s version if you wish to cite from this article. 
 

https://www.nature.com/

  

  

 

 

 

Article (refereed) - postprint 

 

 

Crowther, T.W.; Todd-Brown, K.E.O.; Rowe, C.W.; Wieder, W.R.; Carey, 
J.C.; Machmuller, M.B.; Snoek, B.L.; Fang, S.; Zhou, G.; Allison, S.D.; Blair, 
J.M.; Bridgham, S.D.; Burton, A.J.; Carrillo, Y.; Reich, P.B.; Clark, J.S.; 
Classen, A.T.; Dijkstra, F.A.; Elberling, B.; Emmett, B.A.; Estiarte, M.; Frey, 
S.D.; Guo, J.; Harte, J.; Jiang, L.; Johnson, B.R.; Kröel-Dulay, G.; Larsen, 
K.S.; Laudon, H.; Lavallee, J.M.; Luo, Y.; Lupascu, M.; Ma, L.N.; Marhan, S.; 
Michelsen, A.; Mohan, J.; Niu, S.; Pendall, E.; Peñuelas, J.; Pfeifer-Meister, L.; 
Poll, C.; Reinsch, S.; Reynolds, L.L.; Schmidt, I.K.; Sistla, S.; Sokol, N.W.; 
Templer, P.H.; Treseder, K.K.; Welker, J.M.; Bradford, M.A.. 2016. 

Quantifying global soil carbon losses in response to warming.

 

Nature

, 540 

(7631). 104-108. 

https://doi.org/10.1038/nature20150

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Contact CEH NORA team at  

noraceh@ceh.ac.uk

 

 
 

The NERC and CEH  trademarks and logos (‘the Trademarks’) are registered trademarks of NERC in the UK and 
other countries, and may not be used without the prior written consent of the Trademark owner

. 

Page 2

Figures and page graphics, page 2

QUANTIFYING GLOBAL SOIL C LOSSES IN RESPONSE TO WARMING 

1   

 

2   

Crowther, T.W.

1,2

, Todd-Brown, K.E.O.

3

, Rowe, C.W.

2

, Wieder, W.R.

 4,5

, Carey, J.C.

6

, 

3   

Machmuller, M.B.

7

, Snoek, L.B.

1,8

,

  

Fang, S.

9,10

, Zhou, G.

9

, Allison, S.D.

11,12

, Blair, 

4   

J.M.

13

, Bridgham, S.D.

14

, Burton, A.J.

15

, Carrillo, Y.

15

, Reich, P.B.

16,17

,

 Clark, J.S.

18

, 

5   

Classen, A.T.

19,20

, Dijkstra, F.A.

21

, Elberling, B.

22

, Emmett, B.

23

, Estiarte, M.

24, 25

, Frey, 

6   

S.D.

26

, Guo, J.

27

, Harte, J.

28

,  Jiang, L.

29

, Johnson, B.R.

14

, Kröel-Dulay, G.

30

, Larsen, 

7   

K.S.

31

, Laudon, H.

32

, Lavallee, J.M.

7,33

, Luo, Y.

29

, Lupascu, M.

34

, Ma, L.N.

35

, Marhan, 

8   

S.

36

, Michelsen, A.

37

, Mohan, J.

38,39

,

 

Niu, S.

40

, Pendall, E.

16

, Peñuelas, J.

24

, Pfeifer-

9   

Meister, L.

14

, Poll, C.

36

, Reinsch, S.

23

, Reynolds, L.L.

14

, Schmidt, I.K.

30

, Sistla, S.

41

,  

10   

Sokol, N.W.

3

, Templer, P.H.

42

, Treseder, K.K.

12

, Welker, J.M.

43

, & Bradford, M.A.

1,2 

11   

 

12   

1.

 

 Netherlands Institute of Ecology, Droevendaalsesteeg 10, 6708 PB Wageningen, 

13   

The Netherlands 

14   

2.

 

 Yale School of Forestry & Environmental Studies, Yale University, 370 Prospect 

15   

St., New Haven, CT 06511, USA 

16   

3.

 

 Pacific Northwest National Laboratory, Richland, WA, USA 

17   

4.

 

Climate & Global Dynamics Laboratory, National Center for Atmospheric 

18   

Research, Boulder, CO 80307, USA 

19   

5.

 

Institute for Arctic & Alpine Research, University of Colorado, Boulder, CO 

20   

80303, USA 

21   

6.

 

Marine Biological Laboratory, 7 MBL St., Woods Hole, MA 02543, USA 

22   

7.

 

Natural Resource Ecology Laboratory, 1499 Campus Delivery, Colorado State 

23   

University, Fort Collins, CO, 80523-1499, USA 

24   

8.

 

Laboratory of Nematology, Wageningen University, Droevendaalsesteeg 1, 6708 

25   

PB Wageningen,  The Netherlands 

26   

9.

 

Chinese Academy of Meteorological Sciences, No.46 Zhongguancun South 

27   

Street, Beijing 100081, China 

28   

10.

 

Collaborative Innovation Center on Forecast Meteorological Disaster 

29   

Warning & Assessment, Nanjing University of Information Science & 

30   

Technology, Nanjing 210044, China 

31   

Page 3

Figures and page graphics, page 3

11.

 

Department of Earth System Science, University of California Irvine, 

32   

Irvine, CA 92697, USA 

33   

12.

 

Department of Ecology & Evolutionary Biology, University of California 

34   

Irvine, CA 92697, USA 

35   

13.

 

Division of Biology, Kansas State University, Manhattan, KS 66506, USA 

36   

14.

 

Institute of Ecology & Evolution, University of Oregon, Eugene, OR 

37   

97403, USA 

38   

15.

 

School of Forest Resources & Environmental Science, Michigan 

39   

Technological University, Houghton, MI 49931, USA 

40   

16.

 

Hawkesbury Institute for the Environment, Western Sydney University, Penrith,  

41   

2570 NSW, Australia  

42   

17.

 

Department of Forest Resources, University of Minnesota, St. Paul, MN 55108, 

43   

USA 

44   

18.

 

Nicholas School of the Environment, Duke University, Durham, NC 27708, USA 

45   

19.

 

Department of Ecology & Evolutionary Biology, University of Tennessee, 569 

46   

Dabney Hall, 1416 Circle Dr., Knoxville, TN 37996, USA 

47   

20.

 

The Natural History Museum of Denmark, University of Copenhagen, 

48   

Universitetsparken, 15, 2100, København Ø, Denmark 

49   

21.

 

Centre for Carbon, Water & Food, The University of Sydney, Camden, 2570 

50   

NSW, Australia 

51   

22.

 

Center for Permafrost (CENPERM), Department of Geosciences and Natural 

52   

Resource Management, University of Copenhagen, Øster Voldgade 10, 1350 

53   

Copenhagen K., Denmark 

54   

23.

 

Environment Centre Wales, Deiniol Rd, Bangor. LL57 2UW, UK 

55   

24.

 

CSIC, Global Ecology Unit CREAF-CSIC-UAB, Cerdanyola del Vallès, 08193 

56   

Catalonia, Spain 

57   

25.

 

CREF, 

Cerdanyola del Vallès, 08193 Catalonia, Spain.

 

58   

26.

 

Department of Natural Resources & the Environment, University of New 

59   

Hampshire, Durham, NH 03824, USA 

60   

27.

 

Key Laboratory of Vegetation Ecology, Ministry of Education, Northeast Normal 

61   

University, Changchun 130024, Jilin Province, China 

62   

Page 4

Figures and page graphics, page 4

28.

 

Energy & Resources Group, University of California at Berkeley, Berkeley, CA 

63   

94720, USA 

64   

29.

 

Department of Microbiology & Plant Biology, University of Oklahoma, Norman, 

65   

OK 73019, USA 

66   

30.

 

Institute of Ecology & Botany, MTA Centre for Ecological Research, 2-4. 

67   

Alkotmany U., Vacratot, 2163-Hungary 

68   

31.

 

Department of Geosciences & Natural Resource Management, University of 

69   

Copenhagen, Rolighedsvej 23, 1958 Frederiksberg C, Denmark 

70   

32.

 

Department of Forest Ecology & Management, Swedish University of 

71   

Agricultural Sciences, 90183 Umeå, Sweden 

72   

33.

 

Faculty of Life Sciences, University of Manchester, Dover Street, Manchester 

73   

M13 9PT, UK   

74   

34.

 

Department of Geography, National University of Singapore, 10 Kent Ridge 

75   

Crescent, 119260, Singapore 

76   

35.

 

State Key Laboratory of Vegetation & Environmental Change, Institute of 

77   

Botany, Chinese Academy of Sciences, Beijing, 100093, China 

78   

36.

 

Institute of Soil Science & Land Evaluation, University of Hohenheim, 70593 

79   

Stuttgart, Germany 

80   

37.

 

Department of Biology, University of Copenhagen, Universitetsparken 15, DK-

81   

2100 Copenhagen, Denmark 

82   

38.

 

Odum School of Ecology, University of Georgia, Athens, GA 30601, USA 

83   

39.

 

Center for Permafrost, University of Copenhagen, Øster Voldgade 10, DK-1350 

84   

Copenhagen K, Denmark 

85   

40.

 

Key Laboratory of Ecosystem Network Observation & Modeling, Institute of 

86   

Geographic Sciences and Natural Resources Research, Chinese Academy of 

87   

Sciences, Beijing, 100101, China 

88   

41.

 

School of Natural Science, Hampshire College, 893 West St., Amherst MA 

89   

01002, USA 

90   

42.

 

Department of Biology, Boston University, Boston, MA 02215, USA 

91   

43.

 

Department of Biological Sciences, University of Alaska, Anchorage, Anchorage, 

92   

AK 99508, USA

   

93   

Page 5

Figures and page graphics, page 5

Generating meaningful greenhouse gas (GHG) emission targets requires an 

94   

understanding of Earth system dynamics and projections about how they will 

95   

respond to global change

1–3

. 

If anthropogenic warming stimulates the loss of carbon 

96   

from the Earth’s surface into the atmosphere, it could drive additional planetary 

97   

warming. Despite growing evidence that warming enhances soil carbon fluxes to and 

98   

from the soil

8,12

, the net global balance between these responses remains uncertain

1

. 

99   

Here we present a comprehensive analysis of warming-induced changes in soil 

100   

carbon stocks by assembling data from 49 field experiments located across North 

101   

America, Europe and Asia. We find that the effects of warming are contingent upon 

102   

the size of the initial soil carbon stock, with considerable carbon losses occurring in 

103   

high-latitude areas. By extrapolating this empirical relationship to the global scale, 

104   

we provide estimates of global soil carbon sensitivity that may help to constrain 

105   

Earth System Model projections. Our empirical relationship suggests that global 

106   

soil carbon stocks in the upper soil horizons will fall by 30 (± 30) to 203 (± 161) Pg C 

107   

for 1 degree of continuous warming, depending upon the potential acclimatization 

108   

rate of soil organic matter decomposition. An assumption of annual acclimation 

109   

yields a conservative estimate that soil C stocks will fall by 55 (± 50) Pg C from the 

110   

upper soil horizons by 2050, a value that is 12-17% of anthropogenic emissions over 

111   

this period. Despite the uncertainty in these estimates, the direction of the global soil 

112   

carbon response is consistent across all acclimatization scenarios. Our analysis 

113   

provides strong empirical support for the assumption that rising temperatures will 

114   

stimulate the net loss of soil carbon to the atmosphere, driving a positive land 

115   

carbon-climate feedback that could accelerate climatic change. 

116   

 

117   

The majority of the Earth’s terrestrial C is stored in the soil and changes in the size of this 

118   

C stock represent a prominent control on atmospheric C concentrations

6–8

. If 

119   

anthropogenic warming stimulates the loss of even a small proportion of soil C, it could 

120   

drive substantive additional planetary warming

7,9

. Yet, despite considerable scientific 

121   

attention in recent decades, there remains no consensus on the direction or magnitude of 

122   

warming-induced changes in soil C

3,10

. Although there is growing confidence that 

123   

warming generally enhances fluxes to and from the soil

8,12

, the net global balance 

124   

Page 6

Figures and page graphics, page 6

between these responses remains uncertain and direct estimates of soil C stocks are 

125   

limited to single-site experiments that generally reveal no detectable effects

1,11–13

.  

126   

 

127   

Given the paucity of direct measurements of soil C stock responses to warming, Earth 

128   

System Models (ESMs) must rely heavily on short-term temperature responses of soil 

129   

respiration (

Q

10

) to infer long-term changes in global C stocks. Without empirical 

130   

observations that capture longer-term C dynamics, we are limited in our ability to 

131   

evaluate model performance, or constrain the uncertainty in model projections

14

. As such, 

132   

the land C-climate feedback remains one of the largest sources of uncertainty in current 

133   

ESMs

1–3

, restricting our capacity to develop C emissions targets that are compatible with 

134   

specific climate change scenarios. Direct field measurements of warming-induced 

135   

changes in soil C stocks are urgently needed to increase confidence in future climate 

136   

projections

14

.  

137   

 

138   

We take advantage of the growing number of climate change experiments around the 

139   

world to compile the first global database of soil C stock responses to warming. Soil 

140   

samples were collected from replicate plots in 49 climate change experiments conducted 

141   

across six biomes, ranging from arctic permafrost to dry Mediterranean forests (Extended 

142   

data Figure 1). We compared soil C stocks across ‘warmed’ (treatment) and ‘ambient’ 

143   

(control) plots to explore the effects of temperature across sites. The measured 

144   

differences in soil C stocks represent the net result of long-term changes in soil C inputs 

145   

(plant production) and outputs (respiration) in response to warming. By linking these soil 

146   

C responses to climatic and soil characteristics we are able to generate a spatial 

147   

understanding of the temperature-sensitivity of soil C stocks at a global scale. To 

148   

standardise collection protocols and account for the considerable variability in soil 

149   

horizon depths, we focus on C stocks in the top 10 cm of soil. At a global scale, this 

150   

upper soil horizon contains the greatest proportion of biologically active soil C by depth

6

.  

151   

 

152   

The effects of warming on soil C stocks were variable, with positive, negative and neutral 

153   

impacts observed across sites (Figure 1). However, the direction and magnitude of these 

154   

warming-induced changes were predictable (Figure 2), being contingent upon the size of 

155   

Page 7

Figures and page graphics, page 7

standing soil C stocks and the extent and duration of warming. The interaction between 

156   

‘control C stocks’ and ‘degree-years’ (the standardised metric to represent the 

157   

multiplicative product of the extent (

°

C) and duration (years) of warming) was a strong 

158   

explanatory variable when predicting warmed C stocks (additive model AIC=383 vs. 

159   

multiplicative model AIC=381; see SI and Equation 1). Specifically, the impacts of 

160   

warming were negligible in areas with small initial C stocks, but losses occured beyond a 

161   

threshold of 20 – 40 kg C m

-3

 and were considerable in soils with 

≥

 60 kg C m

-3

 (Figure 

162   

1). No other environmental characteristics

   

(mean annual temperature, precipitation, soil 

163   

texture or pH) significantly (

P

 > 0.1) influenced the responses of soil C stocks to 

164   

warming in our statistical models (additive enviromental with degree-year model 

165   

AIC=388; see SI).  

166   

 

167   

The dominant role of standing C stocks in governing the magnitude of warming-induced 

168   

soil C losses is in line with both empirical and theoretical expectations

2,15,16

. The thawing 

169   

of permafrost soils, where limited C decomposition has led to the accumulation of large 

170   

C stocks, will undoubtedly contribute to this phenomenon

17,18

. However, our analysis also 

171   

revealed considerable soil C losses in several non-permafrost regions, suggesting that 

172   

additional mechanisms may contribute to the vulnerability of large soil C stocks. 

173   

Presumably, the vulnerability of soils containing large C stocks stems from the high 

174   

temperature-sensitivity of C decomposition and biogeochemical restrictions on the 

175   

processes driving soil C inputs. In ecosystems with low initial soil C stocks, minor losses 

176   

that result from accelerated decomposition under warming may be offset by concurrent 

177   

increases in plant growth and soil C stabilization

12,19

. In contrast, in areas with larger 

178   

standing soil C stocks, accelerated decomposition outpaces potential C accumulation 

179   

from enhanced plant growth, driving considerable C losses into the atmosphere. 

180   

 

181   

By combining our measured soil C responses with spatially-explicit estimates of standing 

182   

C stocks

17

 and soil surface temperature change

20

 (using Equation 2), we reveal the global 

183   

patterns in the vulnerability of soil C stocks (Figure 3). Given that high-latitude regions 

184   

have the largest standing soil C stocks

17

 and the fastest expected rates of warming

15,20

, 

185   

our results suggest that the overwhelming majority of warming-induced soil C losses are 

186   

Page 8

Figures and page graphics, page 8

likely to occur in Arctic and sub-Arctic regions (Figure 3). These high-latitude C losses 

187   

drastically outweigh any minor changes expected in mid- and lower latitude regions, 

188   

providing additional support for the idea of Arctic amplification of climate change 

189   

feedbacks

15

 (Figure 3). These warming-induced soil C losses need to be considered in 

190   

light of future changes in moisture stress and vegetation growth, which are also likely to 

191   

respond disproportionately to climate change in high-latitude areas

15

. Notably, the spatial 

192   

distribution of soil C changes from our extrapolation contradicts projections from the 

193   

CMIP5 archive of Earth system models

21

, which show increases in soil C at high 

194   

latitudes, presumably due to the increases in plant producitity

22

. The warming-induced 

195   

losses of soil C that we observe have the potential to offset these vegetation responses, 

196   

emphasizing the importance of representing soil C vulnerability in the process-based 

197   

models used in climate change projections. 

198   

 

199   

We extrapolated this relationship over the next 35 years to indicate how global soil C 

200   

stocks might respond by 2050. The simple extrapolation of our empirical relationship 

201   

suggests that 1 degree of warming over 35 years would drive the loss of 203 (±161) Pg C 

202   

from the upper soil horizon (Figure 3). However, this approach implicitly assumes that 

203   

soil communities never acclimatize to changes in temperature, so are likely to drastically 

204   

over-estimate total soil C losses. Indeed, as with mechanistic models

23

, our assumptions 

205   

about the rate of soil C acclimatization will strongly influence the magnitude of our 

206   

predicted C losses (see Figure 3B). For example, a range of recent analyses suggest that 

207   

soil communities can acclimatize to warming within a year

24–26

. If we assume annual 

208   

acclimatization to warming in our extrapolation, then approximately 30 (± 30) Pg C 

209   

would be lost from the surface soil for 1 degree (ºC) of warming. Given that global 

210   

average soil surface temperatures are projected to increase by ~2 ºC over the next 35 

211   

years under a business-as-usual emissions scenario

16

, this annual time step extrapolation 

212   

would suggest that warming could drive the net loss of ~55 (± 50) Pg C from the upper 

213   

soil horizon. If, as expected, this C entered the atmospheric pool, it would increase the 

214   

atmospheric burden of CO

2

 by approximately 25 ppm over this period. 

215   

 

216   

Page 9

Figures and page graphics, page 9

The global extrapolation of our empirical data is broadly intended to contextualize our 

217   

measured changes in soil C stocks. We stress that such statistical approaches cannot be 

218   

used to project soil C losses far into the future because, unlike process-based models, 

219   

they cannot capture the complex processes that govern long-term C dynamics. For 

220   

example, extending the observed relationship over several centuries would lead to a 

221   

global convergence of soil C stocks. Conversely, soil C stocks would increase 

222   

exponentially in response to environmental cooling. Our linear extrapolation inherits 

223   

weaknesses from simple single pool models, which can over-predict the magnitude of 

224   

responses in the long term

2,27

. However, the value of such linear approximations lie in 

225   

their descriptive strength rather than their predictive capabilities: instead of using short-

226   

term flux estimates to project long-term changes in C stocks, our approach allows the 

227   

scaling of measured C differences over time frames (i.e. decades) represented by the 

228   

experimental studies. Our results capture the realised temperature-sensitivity of current 

229   

soil C stocks and can serve as a guideline (or target) for multi-pool process-based models. 

230   

Specifically, these models can run forward simulations that attempt to reflect the 

231   

outcomes of the warming experiments that we present. Those models which accurately 

232   

capture the observed relationships between standing soil C stocks and losses under 

233   

gradual step increases in global temperature are likely to be the most successful at 

234   

projecting the land C-climate feedback into the future.  

235   

 

236   

Our analysis reveals a number of outstanding challenges facing empiricists and modelers, 

237   

which currently limit the certainty of current land C-climate feedback predictions (see 

238   

Supplemenrary Table 1). These limitations fall into two distinct categories, as more data 

239   

are necessary to improve (i) our current global estimates of soil C temperature sensitivity, 

240   

and (ii) modelling efforts to project these soil C responses into the future. First, along 

241   

with the limited spatial and temporal scale of current warming experiments, perhaps the 

242   

most critical limitation to our present analysis is the paucity of information about the 

243   

responses of soil C stocks at depth (below 10 cm). Although the size of C stocks decrease 

244   

down the soil profile

28

, any additional C losses from these deeper soil horizons will 

245   

undoubtedly enhance the effects we present. Second, incorporating global soil C 

246   

information into modelling frameworks requires a mechanistic understanding of how 

247   

Page 10

Figures and page graphics, page 10

warming affects each of the individual components of the ecosystem C cycle. Now that 

248   

we are beginning to generate a global picture of the temperature-sensitivity of soil C 

249   

losses (respiration)

8

 and total C stocks, our limited understanding of how warming 

250   

influences global soil C inputs remains a major outstanding source of uncertainty for 

251   

modelling efforts

1,22

. These efforts also require more information about the interacting 

252   

effects of other global change factors that may simultaneously influence soil C dynamics. 

253   

This non-exclusive set of practical challenges calls for concerted, coordinated investment 

254   

in multi-factor climate change experiments for an extended period of time to generate the 

255   

data necessary to improve confidence in future climate projections. 

256   

 

257   

In conclusion, our global compilation of experimental data allows us to see past the 

258   

conflicting results from single-site studies and capture larger patterns in the sensitivity of 

259   

soil C to warming. The warming-induced changes in soil C stocks reflect the net result of 

260   

changes in C fluxes into and from the soil, which can augment modelling efforts to 

261   

project Earth system dynamics into the future. Ultimately, our analysis provides 

262   

empirical support for the long-held concern that rising temperatures stimulate the loss of 

263   

soil C into the atmosphere, driving a positive land C-climate feedback that could 

264   

accelerate planetary warming over the 21

st

 century. Reductions in greenhouse gas 

265   

emissions are essential if we are to avoid the most damaging impacts of the land C-

266   

climate feedback over the rest of this century. 

267   

 

268   

REFERENCES 

269   

 

270   

1. 

Todd-Brown, K. E. O. 

et al.

 Changes in soil organic carbon storage predicted by 

271   

Earth system models during the 21st century. 

Biogeosciences

 

11,

 2341–2356 

272   

(2014). 

273   

2. 

Jones, C. 

et al.

 Twenty-First-Century Compatible CO 

2

 Emissions and Airborne 

274   

Fraction Simulated by CMIP5 Earth System Models under Four Representative 

275   

Concentration Pathways. 

J. Clim.

 

26,

 4398–4413 (2013). 

276   

3. 

Arora, V. K. 

et al.

 Carbon–Concentration and Carbon–Climate Feedbacks in 

277   

CMIP5 Earth System Models. 

J. Clim.

 

26,

 5289–5314 (2013). 

278   

Page 11

Figures and page graphics, page 11

4. 

Ballantyne, A. P. 

et al.

 Audit of the global carbon budget: estimate errors and their 

279   

impact on uptake uncertainty. 

Biogeosciences

 

12,

 2565–2584 (2015). 

280   

5. 

Riahi, K. 

et al.

 RCP 8.5-A scenario of comparatively high greenhouse gas 

281   

emissions. 

Clim. Change

 

109,

 33–57 (2011). 

282   

6. 

Jobbágy, E. G. & Jackson, R. B. the Vertical Distribution of Soil Organic Carbon 

283   

and Its. 

Ecol. Appl.

 

10,

 423–436 (2000). 

284   

7. 

Bellamy, P. H., Loveland, P. J., Bradley, R. I., Lark, R. M. & Kirk, G. J. D. 

285   

Carbon losses from all soils across England and Wales 1978-2003. 

Nature

 

437,

 

286   

245–8 (2005). 

287   

8. 

Mahecha, M. D. 

et al.

 Global convergence in the temperature sensitivity of 

288   

respiration at ecosystem level. 

Science

 

329,

 838–40 (2010). 

289   

9. 

Davidson, E.A., Janssens, I. A. Temperature sensitivity of soil carbon 

290   

decomposition and feedbacks to climate change. 

Nature

 

440,

 165–73 (2006). 

291   

10. 

Crowther, T. W. 

et al.

 Biotic interactions mediate soil microbial feedbacks to 

292   

climate change. 

Proc. Natl. Acad. Sci.

 

112,

 7033–7038 (2015). 

293   

11. 

Lu, M. 

et al.

 Responses of ecosystem carbon cycle to experimental warming: a 

294   

meta-analysis. 

Ecology

 

94,

 726–738 (2013). 

295   

12. 

Day, T. a., Ruhland, C. T. & Xiong, F. S. Warming increases aboveground plant 

296   

biomass and C stocks in vascular-plant-dominated Antarctic tundra. 

Glob. Chang. 

297   

Biol.

 

14,

 1827–1843 (2008). 

298   

13. 

Sistla, S. a 

et al.

 Long-term warming restructures Arctic tundra without changing 

299   

net soil carbon storage. 

Nature

 

497,

 615–8 (2013). 

300   

14. 

Bradford, M. A., Wieder, W. R., Bonan, G. B., Fierer, N. Raymond, P. A. & 

301   

Crowther, T. W. Managing uncertainty in soil carbon feedbacks to climate change. 

302   

Nat. Clim. Chang.

 (2016). doi:10.1038/NCLIMATE3071 

303   

15. 

Serreze, M. C. & Barry, R. G. Processes and impacts of Arctic amplification: A 

304   

research synthesis. 

Glob. Planet. Change

 

77,

 85–96 (2011). 

305   

16. 

Koven, C. D. 

et al.

 A simplified, data-constrained approach to estimate the 

306   

permafrost carbon–climate feedback. 

Philos. Trans. R. Soc. A Math. Phys. Eng. 

307   

Sci.

 

373,

 20140423 (2015). 

308   

17. 

Hengl, T. 

et al.

 SoilGrids1km--global soil information based on automated 

309   

Page 12

Figures and page graphics, page 12

mapping. 

PLoS One

 

9,

 e105992 (2014). 

310   

18. 

Schuur, E. A. 

et al.

 Climate change and the permafrost carbon feedback. 

Nature

 

311   

520,

 171–179 (2015). 

312   

19. 

Macias-Fauria, M., Forbes, B. C., Zetterberg, P. & Kumpula, T. Eurasian Arctic 

313   

greening reveals teleconnections and the potential for structurally novel 

314   

ecosystems. 

Nat. Clim. Chang.

 

2,

 613–618 (2012). 

315   

20. 

Meehl, G. a. 

et al.

 Climate change projections in CESM1(CAM5) compared to 

316   

CCSM4. 

J. Clim.

 

26,

 6287–6308 (2013). 

317   

21. 

Ciais, P. 

et al.

 in 

Cli- mate Chang. 2013 Phys. Sci. Basis. Contrib. Work. Gr. I to 

318   

Fifth Assess. Rep. Intergov. Panel Clim. Chang.

 (Stocker, T. F. et al.) (Cambridge 

319   

University Press, Cambridge, United Kingdom and New York, NY, USA., 2013). 

320   

22. 

Koven, C. D. 

et al.

 Controls on terrestrial carbon feedbacks by productivity versus 

321   

turnover in the CMIP5 Earth System Models. 

Biogeosciences

 

12,

 5211–5228 

322   

(2015). 

323   

23. 

Wieder, W. R., Bonan, G. B. & Allison, S. D. Global soil carbon projections are 

324   

improved by modelling microbial processes. 

Nat. Clim. Chang.

 

3,

 909–912 (2013). 

325   

24. 

Crowther, T. W. & Bradford, M. A. Thermal acclimation in widespread 

326   

heterotrophic soil microbes. 

Ecol. Lett.

 

16,

 469–77 (2013). 

327   

25. 

Bradford, M. A. Thermal adaptation of decomposer communities in warming soils. 

328   

Front. Microbiol.

 (2013). 

329   

26. 

Luo, Y., Wan, S.Q., Hui, D.F. & Wallace, L. L. Acclimatization of soil respiration 

330   

to warming in a tall grass prairie. 

Nature

 

413,

 622–625 (2001). 

331   

27. 

Georgiou, K., Koven, C. D., Riley, W. J. & Torn, M. S. Toward improved model 

332   

structures for analyzing priming: potential pitfalls of using bulk turnover time. 

333   

Glob. Chang. Biol.

 

21,

 4298–4302 

334   

28. 

Conant, R. T. 

et al.

 Temperature and soil organic matter decomposition rates - 

335   

synthesis of current knowledge and a way forward. 

Glob. Chang. Biol.

 

17,

 3392–

336   

3404 (2011). 

337   

 

338   

 

339   

 

340   

Page 13

Figures and page graphics, page 13

 

341   

AUTHOR CONTRIBUTIONS 

342   

The study was conceived and designed by TWC and NS. Statistical analysis was 

343   

performed by KEOTB , MAB, and BLS. Spatial scaling and mapping was performed by 

344   

WRW and CWR. The manuscript was written by TWC with assistance from CWR, 

345   

MAB, WRW, KEOTB, SDA and PBR. All other authors reviewed and provided input on 

346   

the manuscript. Measurements of soil carbon, bulk density and geospatial data from 

347   

climate change experiments around the world were provided by JCC, MBM, SF, GZ, 

348   

AJB, BE, SR, AJH, HL, YL, AM, JP, ME, SDF, GK, CP, PHT, LLR, EP, SS, JML, 

349   

SDA, KKT, BE, LNM, IKS, KSL, YC, FAD, SM, SN, ATC, JMB, SB, JSC, FAD, JG, 

350   

BRJ, JM, LPM and PBR. 

351   

 

352   

ACKNOWLEDGEMENTS 

353   

We would like to thank the Global Soil Biodiversity Initiative (GSBI) for support during 

354   

this project. This project was largely funded by grants to TWC from Marie Sk

ł

odowska 

355   

Curie, the British Ecological Society and the Yale Climate and Energy Institute. MAB 

356   

and WRW were supported by grants from the US National Science Foundation and 

357   

WRW from the US Department of Energy and KEOTB by the Linus Pauling 

358   

Distinguished Postdoctoral Fellowship program.

      

The experiments that produced the data 

359   

were funded by grants too numerous to list here. 

360   

 

361   

 

362   

FIGURE LEGENDS

 

363   

 

364   

Figure 1:

 

The effect of warming on soil C losses depends on the initial standing soil 

365   

C stock. 

The interaction between warming (degree-years) and standing C stocks is a 

366   

primary determinant of final warmed soil C stocks (estimated using a mixed effects 

367   

model; n = 229; see SI). Here, each point represents the difference (mean±SE) between 

368   

soil C stocks in warmed and ambient plots within an individual experiment. The size of 

369   

points represents the length of each individual study, and the colour indicates the amount 

370   

Page 14

Figures and page graphics, page 14

of warming. The shaded area represents the bootstraped 95% conficence interval (R

2 

= 

371   

0.49: see supplemental for details). 

372   

 

373   

Figure 2: Validation plots highlighting the predictive strength of the statistical 

374   

model. 

Plate A: predicted vs. observed soil C stock values in warmed treatment plots 

375   

(estimated using statistical Equation 1: R

2 

= 0.95 – high value is driven by the correlation 

376   

between C values in control and warmed plots). Black points represent mean values for 

377   

each study, and the coloured area represents the density of 1000 simulated points 

378   

randomly selected from within the normal distribution for each study. The 1:1 line is 

379   

included to highlight perfect correspondence between predicted and observed points and 

380   

distributions. Plate B: Bootstrapped estimates of model (Equation 2) slope values for 

381   

different sample sizes. Studies were removed at random, the slope coefficient was 

382   

calculated and this was repeated 1000 times. Each point represents a bootstrapped 

383   

estimate of slope for the model that included any given number of studies, and we include 

384   

the interquartile range and median slope estimates an each number. The average slope 

385   

value remains unchanged until >38 studies have been removed from the initial analysis 

386   

(with 49 studies), highlighting that the relationship we present is not disproportionately 

387   

influenced by the effects of warming in any specific study(s) or site(s). 

388   

 

389   

Figure 3: Spatial and temporal extrapolation of the temperature-vulnerability of soil 

390   

C stocks. 

Plate A: Map of soil C vulnerability to warming. This map was generated by 

391   

extrapolating Equation 2 (i.e. the no-acclimation scenario) using spatially explicit 

392   

estimates of soil C stocks

17

, and soil surface temperature change

20

, and reveals the spatial 

393   

variation in projected surface soil C stock changes (0-15 cm) expected under a 1ºC rise in 

394   

global average soil surface temperature. Panel B: Total reductions in the global C pool 

395   

under a 1, and 2ºC global average soil surface warming by 2050, as expected under a full 

396   

range of different soil acclimatization scenarios (x axis). Shaded areas indicate 95% 

397   

confidence intervals around the average C losses (dots) for each scenario. The rapid 

398   

acclimatization scenarios (e.g. 1 week – 1 year) result in lower total soil C losses than the 

399   

no acclimatization scenario, but all simulations reveal considerable global losses of soil C 

400   

under warming over the next 35 years. Note that our map predicts some C gains in desert 

401   

Page 15

Figures and page graphics, page 15

regions that currently contain almost no soil C. Removing these biochemically 

402   

questionable responses would marginally enhance the size of the global C losses reported 

403   

in Pannel B. 

404   

 

405   

 

406   

METHODS 

407   

 

408   

Data collection and standardisation 

409   

Total percentage C and bulk density (BD) data (n=456) were collected from each of the 

410   

replicated warmed and ambient plots within 49 experimental warming studies located 

411   

across North America, Europe and Asia. In several of these sites, it was not possible to 

412   

access these data for deeper soil horizons. Therefore, we standardised collection 

413   

protocols and account for the considerable variability in soil horizon depths by focusing 

414   

on the top 10 cm of soil, which contains the majority of the biologically active C. Soil C 

415   

stocks were then calculated for each plot (percentage C * BD / 100), and expressed as the 

416   

total mass of C (kg m

-3

 soil) in each plot. Metadata for each study included the mean 

417   

annual difference in soil surface temperature between warmed and ambient plots and the 

418   

duration of experimental warming. These were multiplied together to generate the 

419   

standardised metric ‘degree-years’, (reflecting the extent and duration of warming) to 

420   

permit the comparison of warming effects across sites. Other collected data included a 

421   

site-specific geospatial reference (latitude and longitude), which was linked to spatially-

422   

explicit estimates of soil characteristics (pH and texture using the SoilGrids database

17

) 

423   

and climate (using the Bioclim database) following Crowther 

et al.

29

. These climate and 

424   

soil characteristics were then used to explore the dominant controls on soil C stock 

425   

sensitivity to warming across our global compilation of experimental studies. 

426   

 

427   

Some of the climate change studies in this analysis containted multiple separate warming 

428   

experiments. Degree-years and soil C were calculated independently for each study 

429   

within a site, but all other environmental data were shared. In addition, some sites 

430   

included multi-factor climate change studies. For these studies, ambient and warmed 

431   

Page 16

Figures and page graphics, page 16

plots were only compared under equivalent experimental conditions so that all other 

432   

conditions remained consistent between treatments.  

433   

 

434   

Statistical analysis 

435   

We fitted linear mixed models (LMMs) to evaluate the factors that correlate with the 

436   

measured soil C stocks following warming. Study site was included as a random factor 

437   

because clustering replicates by location could introduce spatial autocorrelation

30

. The 

438   

LMMs were fit assuming a Gaussian error distribution in the “lme4” package for the R 

439   

statistical program

31

.

 

We constructed LMMs that included all of the putative explanatory 

440   

variables to explain warmed soil C stocks including treatment variables (degrees warmed 

441   

and degrees warmed across years of study (degree-years)), and environmental 

442   

characteristics (Standing soil C stocks (control C stocks), Mean Annual Temperature 

443   

(MAT), Mean Annual Precipitation (MAP), pH (as H

+

 ion concentration) and soil texture 

444   

(with percentage clay as the representative variable)). Given the markedly different 

445   

ranges in magnitudes of the explanatory variables at a global scale, variables were 

446   

standardised using a z-transformation prior to use in final models

32

, though the response 

447   

variable (soil C stock) was not standardised. Further, given positive skew in the 

448   

distributions of degrees, degree-year and control soil C, these variables were also natural-

449   

log transformed. Neither of these data transformations significantly altered the statistical 

450   

outputs, so were retained in final models. The only independent variables that were 

451   

strongly correlated (pairwise coefficients >0.4) were MAT and MAP, and MAT and 

452   

percentage clay.  

453   

 

454   

Model selection was performed using maximum likelihood comparison of competing 

455   

models (see SI), using Akaike information criterion (AIC) and Bayesian information 

456   

criterion (BIC) approaches providing identical results.

 

Only warming (degrees and 

457   

degree-years) and standing C stock (control soil C) were the most parsimonious final 

458   

models, (full model AIC=381 vs. final model AIC=372; Tables S6, S7) and the best-fit 

459   

model included an interaction between these two variables (addItive model AIC=375 vs. 

460   

multiplicative model AIC=372; Table S7). All reported 

P

-values are quasi-Bayesian, 

461   

rather than the classical frequentist 

P

-values, but retain the same interpretation. We 

462   

Page 17

Figures and page graphics, page 17

considered coefficients with 

P

<0.05 significant and coefficients with 

P

<0.10 marginally 

463   

significant. Variance explained by the model was also estimated by calculating 

R

2

 

values 

464   

for the minimally-adequate LMM following Nakagawa and Schielzeth to retain the 

465   

random effects structure. 

466   

 

467   

The final statistical model was: 

468   

C

w

=

a

⋅

C

c

⋅ Δ

T

Δ

t

(

)

+

b

⋅

C

c

+

d

⋅ Δ

T

Δ

t

(

)

+

ε

    

 

 

 

Eqn 1 

469   

 

470   

where 

Cw

 is the carbon stock in the warmed treatment, Cc the carbon stock in the control 

471   

plots, 

Δ

T

Δ

t

 the degree-years calculated by multiplying the degrees warmed times the 

472   

length of the treatment, 

ε

 

 the random effects term controlling for study site (see SI), and 

473   

(a, b, d

) represent fitted coefficients for the statistical model. 

474   

 

475   

Statistical model development 

476   

To scale the changes in soil C stocks, we re-arranged our statistical equation in order to 

477   

describe the relationship between standing soil C stocks (control C stocks) and warming 

478   

(degree-years) over time: 

479   

 

480   

C

w

−

C

c

Δ

T

⋅ Δ

t

=

f

⋅

C

c

+

g

   

 

 

 

 

 

 

Eqn 2 

481   

 

482   

where 

Cw

 is the carbon stock in the warmed treatment, Cc the carbon stock in the control 

483   

plots, 

Δ

T

Δ

t

 the degree-years calculated by multiplying the degrees warmed times the 

484   

length of the tratement. This new model explained a considerable proportion (

R

2

=0.606; 

485   

SI Table 7) of the difference in soil C stocks between studies over treatment. This is 

486   

futher highlighted in Figure 2. 

487   

 

488   

We used sample-based bootstrapping (as opposed to the study-based bootstrapping in 

489   

Figure 2b) to evaluate the strength of this simple statistical relationship and to generate a 

490   

margin of error for global soil C stock projections. Equation 1 was extrapolated with 

491   

95%CI bounds by randomly selecting 200 samples from all studies, randomising the 

492   

Page 18

Figures and page graphics, page 18

control-warmed pairings, and repeating the regression 1000 times. This resulted in 

493   

normally distributed parameters (see SI Table 4) with the following 95%CI. The 

494   

intercept-slope pairs were then sampled to create the grey margin of error seen in Figure 

495   

1. 

496   

 

497   

The inclusion of a linear effect of ‘time’ in our analysis implicitly assumes that soils 

498   

never acclimatize to warming. However, recent studies suggest that soils can acclimatize 

499   

to warming within an annual time-frame

24–26

, so the assumption of no acclimatization is 

500   

likely to over-estimate total soil C losses. To explore the importance of this 

501   

acclimatization assumption in determining the magnitude of soil C losses in our 

502   

extrapolation, we repeated the analysis across a full range of acclimatization scenarios. 

503   

To simulate different acclimatization rates, we sucessively capped the study years (or 

504   

experiment duration) at 1 week, 1 month, 6 months, and 1, 5, 7, 8.75, 11.6, 17.5 years, 

505   

then re-ran the linear regression described above (Eqn 2) with the sample-based 

506   

bootstrapping. The resulting coefficients are in SI Table 4. 

507   

 

508   

Extrapolation

 

 

509   

To estimate changes in global soil C stocks under projected warming scenarios we 

510   

applied linear changes in soil temperature that result in 1 or 2

o

C mean warming by 2050 

511   

(35 years) that is spatially distributed in a manner consistent with surface soil temperature 

512   

projections from a single ensemble of the Community Earth System Model (CESM) that 

513   

was submitted to the CMIP5 archive under RCP8.5 run from 2005 to 2050. We estimated 

514   

initial soil C stocks in the upper soil horizon (0-15 cm) from the SoilGrids 50-

515   

km

2

 product

17

, that was regridded using bilinear interpolation to the same spatial scale of 

516   

soil surface temperature projections (roughly 1 degree).  

517   

 

518   

The temporal extrapolations across the 35 years (until 2050) were applied separately for 

519   

each of the possible acclimatization scenarios described above. First, the single time step 

520   

approach used the coefficients listed above and illustrated in Figure 1 to generate a 95% 

521   

confidence interval for projected C losses. On average, roughly 17.5 degree-years and 35 

522   

degree-years were seen cumulatively across the globe for the 1 and 2

o

C warming 

523   

Page 19

Figures and page graphics, page 19

scenarios, respectively. The exact warming seen by any individual grid was determined 

524   

by their relative temperature shifts predicted by the CESM run described above. Each 

525   

subsequent acclimatization scenario was then extrapolated using a given time step for a 

526   

forward integration where the change in soil C over that time was based on the soil C 

527   

stock at the beginning and the degree-year change experienced by that site over the 

528   

duration of at respective time step. For example, the 1-year acclimation scenario used the 

529   

coefficients from the analysis where or experimental duration was capped at 1 year (see 

530   

SI, Table 4), and was extrapolated to 2050 using the sum of 35 annual time steps. The 

531   

predicted soil C losses for a global average warming of 1 and 2

 

C by 35 years, based on 

532   

each of the full range of acclimatization scenarios, is presented in Figure 3B. This reveals 

533   

how our assumption about acclimatization time influences the magnitude of our final 

534   

expected C losses.  

535   

 

536   

The R code for the full analysis can be found in the Supplementary Material. 

537   

 

538   

References 

539   

29. 

Crowther, T. W. 

et al.

 Mapping tree density at a global scale. 

Nature

 

525,

 201–205 

540   

(2015). 

541   

30. 

Bolker, B. M. 

et al.

 Generalized linear mixed models: a practical guide for ecology 

542   

and evolution. 

Trends Ecol. Evol.

 

24,

 127–135 (2009). 

543   

31. 

Bates, D., Machler, M., Bolker, B. M. & Walker, S. C. Fitting Linear Mixed-

544   

Effects Models using lme4. 

J. Stat. Softw.

 

67,

 1–48 (2014). 

545   

32. 

Gelman, A. Scaling regression inputs by dividing by two standard deviations. 

Stat. 

546   

Med.

 

27,

 2865–2873 (2008). 

547   

 

548   

 

549   

 

550   

Extended data table 1: 

List of current limitations in the availability of global data that 

551   

restrict confidence in our current understanding of the land C-climate feedback. Each of 

552   

these limitations represents a practical challenge that can be adressed by empiricists to 

553   

improve the accuracy of benchmarking estimates or to perameterize process-based 

554   

Page 20

Figures and page graphics, page 20

models that project Earth system dynamics into the future.

 

555   

 

556   

Extended Data Figure 1:

 Map of study locations.

 

The size of points represents the 

557   

number of separate warming experiments at that location and colour indicates the biome, 

558   

as delineated by The Nature Conservancy (http://www.nature.org). 

559   

 

560   

Extended Data Figure 2: 

Extended extrapolation of our linear model that illustrates 

561   

some of the limitations of this statistical scaling approach. Figures show soil C 

562   

projections for initial stocks under (A) 1 degree warming per decade, which converge on 

563   

the same soil C stocks; or (B) 2 degree cooling per decade, which show exponential 

564   

increases in soil C stocks. Although both of these responses are unrealistic, we note the 

565   

time scales (and amount of warming) needed to observe such dynamics are well outside 

566   

the range of observed manipulations or climate change projections. This highlights that 

567   

our extrapolation cannot represent a substitute for process-based models, which capture 

568   

long-term C dynamics. However, under more realistic warming (< 5 degrees C) our 

569   

extrapolation makes plausible projections over decadal time scale that represent the 

570   

current temperature sensitivity of soil C stocks.

 

571   

 

572   

 

573   

 

574   

Page 21

Figures and page graphics, page 21

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

−6

−3

0

3

6

0

25

50

75

100

125

Standing Carbon stock

(kg m

−

3

)

Ann

ual change in Carbon stock per

 °

C

(kg m

−

3

 °

C

−

1

 

y

e

a

r

−

1

)

Duration (years)

●

●

●

5

10

15

20

25

Warming (

°

C)

●

●

●

●

●

●

<1 1 2 3 4 5

Page 22

Figures and page graphics, page 22

 

 

−

0.050

−

0.025

0.000

0.025

0.050

1

10

20

30

40 43

Datapoints removed in bootstrap

Slope

Studies removed 

Sl

op

e 

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

● ●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

● ●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

●

● ●

●

●

●

●

●

●

●

●

10

30

50

70

100

10

30

50

70

100

Observed C stock (kg.m

−

3

)

Predicted C stock (kg.

m

−

3

)

2

4

6

Point density

A 

B 

b 

a 

Page 23

Figures and page graphics, page 23

  

●●

●●

●

●

●

●

● ●

●●

●●

●

●

●

●

●

●

−

400

−

200

0

0

10

20

30

Acclimation time

Extr

apolated Carbon loss b

y 2050 (Pg)

Warming

 °

C

●

●

1

2

 

a 

b 

Page 24

Figures and page graphics, page 24

Supplemental for Crowther et al 2016

K Todd-Brown (

ktoddbrown@gmail.com

) with M Bradford, W Wieder, B Snoek and T

Crowther

July 19, 2016

Contents

LMER model selection

2

Linear regression models

8

CI for parameter range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

Global Extrapolations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

Figures

15

Change in carbon per degree year with bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

Model-data plot for interactive statisitcal model (Figure 2a) . . . . . . . . . . . . . . . . . . . . . .

17

Boot strap slope comparison (Figure 2b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

Global carbon vulnerability map (Figure 3a)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

Acclimatization assumptions affects soil carbon losses (Figure 3b) . . . . . . . . . . . . . . . . . . .

24

Data summary and basic visualizations

25

Helper functions

33

Bootstrap function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

Read data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

Construct study means and standard deviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

Convert R data.frame to netCDF file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

Main analysis script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

Extrapolation code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

Global carbon loss map code

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

List of Tables

1

Model fits comparing the statistical power gained by of treatment (degree-Years, and degree;
addative.treat and addative.dT respectively) vs enviromental variables (MAT, MAP, and pH;
addative.enviro) vs all variables include (addative.enviro) to explaining warmed soil carbon
stocks.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2

Model fits comparing the statistical power gained by multiplicative vs addative models using
the controlled soil carbon stocks and degree-years or degrees warmed to explain warmed soil
carbon stocks. The interactive degree-years model (interactive) signficantly better then the
alternative models (interactive.dT, addative.treat, and simple) considered.

. . . . . . . . . . .

7

1

Page 25

Figures and page graphics, page 25

3

R2 and p-value of the control soil carbon stock and degree-years or degrees to explain warmed
soil carbon stocks, the difference between warmed and control soil carbon stocks, and the rate
of change of soil carbon stocks per degree-year across samples and studies.

. . . . . . . . . . .

8

4

95%CI of the coefficents and R2 of the change in soil carbon stocks (warmed-controlled) per
degree-year explained by the control soil carbon stock [kg-C mˆ-3], constructed from samples.

The type key is as follows: dCperDegYr is the change in carbon stock regressed against the

degree-year, dCperDeg is the change in carbon stock regressed against the degrees warmed,
and the time notates a dC per degree-year regression where study times were capped at the
stated time (ie for yr1 any study that ran longer then a year was set to one year and then the
change in carbon stock agaist degree-year was calculated).

. . . . . . . . . . . . . . . . . . . .

9

5

Global soil carbon change across acclimatization assumptions. Type is analygous to the key
described above. Global warming is the average global warming applied linearlly over 35 years.

Time step is the size of the time step used in the numerical integration. dC is the change in the

soil carbon stock for the 5% quantile, 50% quantile, and 95% quantile respectively calcuated
form the parameter ranges described above.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

6

Description of study sites including mean annual temperature (MAT), mean annual precipitation

(MAP), soil pH, and soil percent clay (perClay). For standardization purposes, all climate

data were collected from Bioclim and all soil data were collected from SoilGrids.

. . . . . . .

27

7

Mean soil carbon [kg-C mˆ-3] values across control study site with number of samples in each
study for the control plots.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

8

Mean soil carbon [kg-C mˆ-3] values across warmed study site with number of samples in each
study for the warmed plots, their warming treatment [C], and length of treatment [years].

. .

30

9

Biome of study sites. For standardization purposes, biome allocations were generated using
the UNEP biomes map.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

LMER model selection

There were several LMER models which were considered as follows:

l_ply

(

names

(lmer.list), function(xx){

cat

(

'------------'

,xx,

'---------------\n'

)

print

(

summary

(lmer.list[[xx]]))

cat

(

'\n'

)})

## ------------ simple ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control + (1 | Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 355.9

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5629 -0.3810 0.0790 0.5306 3.5029

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.008552 0.09248

## Residual

0.267455 0.51716

2

Krycklan

Page 26

Figures and page graphics, page 26

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept) 0.16748

0.05222

3.207

## C.control

0.83498

0.03683 22.671

##

## Correlation of Fixed Effects:

##

(Intr)

## C.control -0.696

##

## ------------ addative.dT ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control + Tdelta + (1 | Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 360.5

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5572 -0.3849 0.0793 0.5225 3.4958

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.01022 0.1011

## Residual

0.26726 0.5170

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept) 0.178727

0.063246

2.826

## C.control

0.833247

0.037661 22.125

## Tdelta

-0.008932

0.038939 -0.229

##

## Correlation of Fixed Effects:

##

(Intr) C.cntr

## C.control -0.490

## Tdelta

-0.550 -0.151

##

## ------------ addative.all ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control + MAP + MAT + pH + degYr + perClay + (1 |

##

Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 372.7

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5934 -0.3706 0.0626 0.4693 3.5707

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.01607 0.1268

3

Page 27

Figures and page graphics, page 27

## Residual

0.26328 0.5131

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept) 0.16429

0.10930

1.503

## C.control

0.81814

0.04336 18.867

## MAP

0.09615

0.08783

1.095

## MAT

-0.11018

0.07926 -1.390

## pH

0.02757

0.06851

0.402

## degYr

-0.04959

0.04116 -1.205

## perClay

0.05873

0.06837

0.859

##

## Correlation of Fixed Effects:

##

(Intr) C.cntr MAP

MAT

pH

degYr

## C.control -0.318

## MAP

-0.450 -0.327

## MAT

-0.004 0.237 -0.666

## pH

-0.638 -0.145 0.710 -0.268

## degYr

-0.313 -0.132 0.064 0.067 0.142

## perClay

0.236 0.256 -0.340 -0.251 -0.589 -0.318

##

## ------------ addative.enviro ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control + MAP + MAT + pH + perClay + (1 | Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 369.5

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5907 -0.3791 0.0774 0.4715 3.5187

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.02268 0.1506

## Residual

0.25938 0.5093

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept) 0.14078

0.10887

1.293

## C.control

0.79712

0.04424 18.016

## MAP

0.11242

0.09108

1.234

## MAT

-0.11841

0.08329 -1.422

## pH

0.04011

0.07078

0.567

## perClay

0.03427

0.06789

0.505

##

## Correlation of Fixed Effects:

##

(Intr) C.cntr MAP

MAT

pH

## C.control -0.375

## MAP

-0.458 -0.317

## MAT

0.003 0.243 -0.662

## pH

-0.637 -0.124 0.710 -0.271

4

Page 28

Figures and page graphics, page 28

## perClay

0.165 0.222 -0.334 -0.260 -0.576

##

## ------------ addative.treat ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control + degYr + (1 | Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 359.5

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5558 -0.4998 0.0856 0.5315 3.5699

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.005076 0.07125

## Residual

0.270188 0.51980

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept) 0.19959

0.06188

3.225

## C.control

0.84291

0.03613 23.329

## degYr

-0.04100

0.03625 -1.131

##

## Correlation of Fixed Effects:

##

(Intr) C.cntr

## C.control -0.560

## degYr

-0.563 -0.032

##

## ------------ interactive ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control * degYr + (1 | Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 358.9

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5838 -0.3893 0.0504 0.5100 3.4128

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.006219 0.07886

## Residual

0.263818 0.51363

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept)

0.13997

0.06706

2.087

## C.control

0.91640

0.04852 18.887

## degYr

0.03077

0.04725

0.651

## C.control:degYr -0.08262

0.03538 -2.335

##

5

Page 29

Figures and page graphics, page 29

## Correlation of Fixed Effects:

##

(Intr) C.cntr degYr

## C.control

-0.644

## degYr

-0.648 0.411

## C.cntrl:dgY 0.392 -0.670 -0.643

##

## ------------ interactive.dT ---------------

## Linear mixed model fit by REML ['lmerMod']

## Formula: C.warmed ~ C.control * Tdelta + (1 | Study)

##

Data: data.sample.plus.rescaled

##

## REML criterion at convergence: 363.4

##

## Scaled residuals:

##

Min

1Q Median

3Q

Max

## -4.5711 -0.3686 0.0840 0.5444 3.5545

##

## Random effects:

## Groups

Name

Variance Std.Dev.

## Study

(Intercept) 0.005715 0.0756

## Residual

0.269722 0.5193

## Number of obs: 225, groups: Study, 47

##

## Fixed effects:

##

Estimate Std. Error t value

## (Intercept)

0.10244

0.07610

1.346

## C.control

0.89176

0.05028 17.737

## Tdelta

0.06505

0.06277

1.036

## C.control:Tdelta -0.05007

0.03434 -1.458

##

## Correlation of Fixed Effects:

##

(Intr) C.cntr Tdelta

## C.control

-0.702

## Tdelta

-0.738 0.483

## C.cntrl:Tdl 0.599 -0.684 -0.803

Comparing the BIC scores between the models, the simple regression between the carbon stock in the warmed
plots and the mean carbon stock of the control plots has the best score. The model with the addative
degree-years or degrees preforms best if we want more then just the basic correlation. There is no notable
difference between degree-years and degrees as a determinent for warmed soil carbon stocks.

pander

(

anova

(lmer.list$simple, lmer.list$addative.treat,

lmer.list$addative.dT, lmer.list$addative.enviro,

lmer.list$addative.all),

caption=

'Model fits comparing the statistical power

gained by of treatment (degree-Years, and degree; addative.treat and

addative.dT respectively) vs enviromental variables (MAT, MAP, and pH;

addative.enviro) vs all variables include (addative.enviro) to

explaining warmed soil carbon stocks.'

)

## refitting model(s) with ML (instead of REML)

6

Page 30

Figures and page graphics, page 30

Table 1: Model fits comparing the statistical power gained by

of treatment (degree-Years, and degree; addative.treat and adda-
tive.dT respectively) vs enviromental variables (MAT, MAP, and
pH; addative.enviro) vs all variables include (addative.enviro) to
explaining warmed soil carbon stocks.

Df

AIC

BIC

logLik

deviance

Chisq

Chi Df

Pr(>Chisq)

lmer.list$simple

4

354.4

368

-173.2

346.4

NA

NA

NA

lmer.list$addative.treat

5

355

372.1

-172.5

345

1.35

1

0.2453

lmer.list$addative.dT

5

356.3

373.4

-173.2

346.3

0

0

1

lmer.list$addative.enviro

8

360.3

387.6

-172.1

344.3

2.03

3

0.5663

lmer.list$addative.all

9

360.2

390.9

-171.1

342.2

2.097

1

0.1476

The interactive model has both a better AIC and BIC score then even the simple regression. Thus the

interative model is the most parsimonious.

pander

(

anova

(lmer.list$interactive, lmer.list$interactive.dT, lmer.list$addative.treat,

lmer.list$simple),

caption=

'Model fits comparing the statistical power gained by multiplicative

vs addative models using the controlled soil carbon stocks and degree-years or degrees

warmed to explain warmed soil carbon stocks. The interactive degree-years model

(interactive) signficantly better then the alternative models

(interactive.dT, addative.treat, and simple) considered.'

)

## refitting model(s) with ML (instead of REML)

Table 2: Model fits comparing the statistical power gained by multi-

plicative vs addative models using the controlled soil carbon stocks
and degree-years or degrees warmed to explain warmed soil carbon
stocks. The interactive degree-years model (interactive) signficantly
better then the alternative models (interactive.dT, addative.treat,
and simple) considered.

Df

AIC

BIC

logLik

deviance

Chisq

Chi Df

Pr(>Chisq)

lmer.list$simple

4

354.4

368

-173.2

346.4

NA

NA

NA

lmer.list$addative.treat

5

355

372.1

-172.5

345

1.35

1

0.2453

lmer.list$interactive

6

351.5

372

-169.8

339.5

5.466

1

0.01939

lmer.list$interactive.dT

6

356

376.5

-172

344

0

0

1

7

Page 31

Figures and page graphics, page 31

Linear regression models

pander

(

merge

(

subset

(modelFits, data==

'data.sample'

,

select=

-data),

subset

(modelFits, data==

'data.study'

,

select=

-data),

by=

c

(

'model'

),

suffixes=

c

(

'.sample'

,

'.study'

))[,

c

(

'model'

,

'adjR2.sample'

,

'pvalue.sample'

,

'adjR2.study'

,

'pvalue.study'

)] ,

caption=

'R2 and p-value of the control soil carbon stock and degree-years or degrees to

explain warmed soil carbon stocks, the difference between warmed and control soil carbon

stocks, and the rate of change of soil carbon stocks per degree-year across samples and

studies.'

)

Table 3: R2 and p-value of the control soil carbon stock and degree-
years or degrees to explain warmed soil carbon stocks, the difference

between warmed and control soil carbon stocks, and the rate of
change of soil carbon stocks per degree-year across samples and
studies.

model

adjR2.sample

pvalue.sample

adjR2.study

pvalue.study

(C.warmed - C.control)/(Years

* Tdelta) ~ C.control

0.139

4.16e-09

0.489

1.4e-08

(C.warmed - C.control)/Tdelta

~ C.control

0.123

3.38e-08

0.304

2.37e-05

C.warmed - C.control ~

C.control * degYr

0.421

6.13e-27

0.606

8.22e-10

C.warmed - C.control ~

C.control * Tdelta

0.374

3.28e-23

0.529

4.32e-08

C.warmed ~ C.control * degYr

0.765

1.61e-70

0.953

1.36e-30

C.warmed ~ C.control * Tdelta

0.746

8.98e-67

0.944

7.51e-29

CI for parameter range

ggplot

(

melt

(dCperDegYr.boot)) +

geom_histogram

(

aes

(

x=

value)) +

facet_wrap

(~variable,

scales=

'free'

) +

theme

(

axis.text=

element_text

(

angle =

45

,

hjust =

1

))

## No id variables; using all as measure variables

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

8

Page 32

Figures and page graphics, page 32

(Intercept)

C.control

p.value

adj.r.squared

r.squard

0

25

50

75

0

20

40

60

80

0

250

500

750

1000

0

25

50

75

0

25

50

75

100

0.75

1.00

1.25

−0.050 −0.045 −0.040 −0.035 −0.030

0.00000 0.00005 0.00010 0.00015

0.10

0.15

0.20

0.10

0.15

0.20

value

count

pander

(

subset

(parRange, type %in% resultsTable$type),

caption=

'95%CI of the coefficents and R2 of the change in soil carbon stocks

(warmed-controlled) per degree-year explained by the control soil carbon stock

[kg-C m^-3], constructed from samples. The type key is as follows: dCperDegYr is the

change in carbon stock regressed against the degree-year, dCperDeg is the change in

carbon stock regressed against the degrees warmed, and the time notates a dC per

degree-year regression where study times were capped at the stated time (ie for yr1 any

study that ran longer then a year was set to one year and then the change in carbon

stock agaist degree-year was calculated). '

)

Table 4: 95%CI of the coefficents and R2 of the change in soil

carbon stocks (warmed-controlled) per degree-year explained by the
control soil carbon stock [kg-C mˆ-3], constructed from samples.

The type key is as follows: dCperDegYr is the change in carbon

stock regressed against the degree-year, dCperDeg is the change in
carbon stock regressed against the degrees warmed, and the time
notates a dC per degree-year regression where study times were
capped at the stated time (ie for yr1 any study that ran longer then
a year was set to one year and then the change in carbon stock
agaist degree-year was calculated).

type

intercept

C

p.value

adj.r.squared

r.squard

qrt

1

dCperDegYr

0.8192

-0.04441

3.643e-10

0.1031

0.1076

0.05

2

dCperDegYr

1.034

-0.0384

4.189e-08

0.1379

0.1423

0.5

9

Page 33

Figures and page graphics, page 33

type

intercept

C

p.value

adj.r.squared

r.squard

qrt

3

dCperDegYr

1.255

-0.03213

2.344e-06

0.1777

0.1818

0.95

4

dCperDeg

2.774

-0.2133

8.372e-09

0.06361

0.06836

0.05

5

dCperDeg

4.874

-0.1824

4.51e-07

0.1175

0.122

0.5

6

dCperDeg

5.881

-0.1063

0.0001975

0.1518

0.1561

0.95

7

wk1

155.4

-11.08

9.189e-09

0.06995

0.07467

0.05

8

wk1

253.8

-9.541

4.464e-07

0.1176

0.1221

0.5

9

wk1

308.9

-5.75

9.814e-05

0.151

0.1553

0.95

10

mon1

35.1

-2.526

9.691e-09

0.06239

0.06715

0.05

11

mon1

58.24

-2.197

4.341e-07

0.1179

0.1224

0.5

12

mon1

70.01

-1.308

0.0002275

0.1502

0.1546

0.95

13

mon6

5.993

-0.4244

6.101e-09

0.06972

0.07444

0.05

14

mon6

9.759

-0.3667

3.105e-07

0.1206

0.1251

0.5

15

mon6

11.82

-0.2235

0.0001005

0.1544

0.1587

0.95

16

yr1

2.981

-0.2169

4.087e-09

0.06974

0.07446

0.05

17

yr1

4.985

-0.1872

2.859e-07

0.1214

0.1258

0.5

18

yr1

6.033

-0.1146

0.0001002

0.1577

0.162

0.95

22

yr5

0.9947

-0.05858

4.812e-10

0.09862

0.1032

0.05

23

yr5

1.345

-0.05089

2.455e-08

0.1425

0.1468

0.5

24

yr5

1.623

-0.03831

3.894e-06

0.1756

0.1798

0.95

25

yr7

0.9378

-0.05189

2.107e-10

0.1067

0.1113

0.05

26

yr7

1.191

-0.04502

1.102e-08

0.1494

0.1537

0.5

27

yr7

1.429

-0.03665

1.569e-06

0.1824

0.1865

0.95

31

yr8.75

0.8782

-0.04833

1.532e-10

0.1059

0.1104

0.05

32

yr8.75

1.108

-0.04217

1.219e-08

0.1485

0.1529

0.5

33

yr8.75

1.349

-0.03467

1.692e-06

0.1848

0.1889

0.95

37

yr11.6

0.8299

-0.04577

3.323e-10

0.1056

0.1102

0.05

10

Page 34

Figures and page graphics, page 34

type

intercept

C

p.value

adj.r.squared

r.squard

qrt

38

yr11.6

1.041

-0.03942

2.646e-08

0.142

0.1464

0.5

39

yr11.6

1.278

-0.03307

1.742e-06

0.1787

0.1828

0.95

43

yr17.5

0.8063

-0.04403

3.715e-10

0.09929

0.1039

0.05

44

yr17.5

1.033

-0.03833

3.842e-08

0.1388

0.1432

0.5

45

yr17.5

1.234

-0.0319

3.473e-06

0.1777

0.1819

0.95

55

yr35

0.8184

-0.04425

5.719e-10

0.1

0.1046

0.05

56

yr35

1.029

-0.0381

4.29e-08

0.1378

0.1422

0.5

57

yr35

1.249

-0.03161

3.368e-06

0.1736

0.1778

0.95

Global Extrapolations

temp <-

subset

(resultsTable, globalWarming %in%

c

(

1

,

2

),

c

(

'type'

,

'globalWarming'

,

'warmingDistribution'

,

'timeStep'

,

'dC_qrt05'

,

'dC_qrt50'

,

'dC_qrt95'

) )

row.names

(temp) <-

NULL

pander

(temp,

caption=

'Global soil carbon change across acclimatization assumptions. Type is analygous

to the key described above. Global warming is the average global warming applied

linearlly over 35 years. Time step is the size of the time step used in the numerical

integration. dC is the change in the soil carbon stock for the 5% quantile, 50% quantile,

and 95% quantile respectively calcuated form the parameter ranges described above.'

,

round=

c

(

1

,

1

,

1

,

3

,

0

,

0

,

0

))

Table 5: Global soil carbon change across acclimatization assump-

tions.

Type is analygous to the key described above.

Global

warming is the average global warming applied linearlly over 35
years. Time step is the size of the time step used in the numerical

integration. dC is the change in the soil carbon stock for the 5%
quantile, 50% quantile, and 95% quantile respectively calcuated
form the parameter ranges described above.

type

globalWarming

warmingDistribution

timeStep

dC_qrt05

dC_qrt50

dC_qrt95

dCperDeg

1

unif

NA

-131

-62

24

dCperDegYr

1

unif

0.019

0

0

0

dCperDegYr

1

unif

0.083

0

0

0

dCperDegYr

1

unif

0.5

0

0

0

dCperDegYr

1

unif

1

0

0

0

dCperDegYr

1

unif

10

-32

-19

-4

11

Page 35

Figures and page graphics, page 35

type

globalWarming

warmingDistribution

timeStep

dC_qrt05

dC_qrt50

dC_qrt95

dCperDegYr

1

unif

11.67

-44

-25

-6

dCperDegYr

1

unif

17.5

-99

-57

-13

dCperDegYr

1

unif

20

-129

-74

-17

dCperDegYr

1

unif

25

-201

-116

-27

dCperDegYr

1

unif

30

-290

-167

-39

dCperDegYr

1

unif

35

-394

-227

-53

dCperDegYr

1

unif

4

-5

-3

-1

dCperDegYr

1

unif

5

-8

-5

-1

dCperDegYr

1

unif

7

-16

-9

-2

dCperDegYr

1

unif

8

-21

-12

-3

dCperDegYr

1

unif

8.75

-25

-14

-3

mon1

1

unif

0.083

-58

-29

10

mon6

1

unif

0.5

-59

-30

10

wk1

1

unif

0.019

-59

-29

10

yr1

1

unif

1

-62

-31

10

yr11.6

1

unif

11.67

-125

-74

-19

yr17.5

1

unif

17.5

-177

-104

-27

yr35

1

unif

35

-392

-224

-48

yr5

1

unif

5

-74

-42

-3

yr7

1

unif

7

-87

-51

-12

yr8.75

1

unif

8.75

-100

-60

-14

dCperDeg

1

CESM

NA

-131

-62

24

dCperDegYr

1

CESM

0.019

0

0

0

dCperDegYr

1

CESM

0.083

0

0

0

dCperDegYr

1

CESM

0.5

0

0

0

dCperDegYr

1

CESM

1

0

0

0

dCperDegYr

1

CESM

10

-32

-19

-4

dCperDegYr

1

CESM

11.67

-44

-25

-6

dCperDegYr

1

CESM

17.5

-98

-57

-14

dCperDegYr

1

CESM

20

-127

-74

-18

dCperDegYr

1

CESM

25

-195

-112

-26

12

Page 36

Figures and page graphics, page 36

type

globalWarming

warmingDistribution

timeStep

dC_qrt05

dC_qrt50

dC_qrt95

dCperDegYr

1

CESM

30

-274

-157

-35

dCperDegYr

1

CESM

35

-360

-206

-43

dCperDegYr

1

CESM

4

-5

-3

-1

dCperDegYr

1

CESM

5

-8

-5

-1

dCperDegYr

1

CESM

7

-16

-9

-2

dCperDegYr

1

CESM

8

-21

-12

-3

dCperDegYr

1

CESM

8.75

-25

-14

-3

mon1

1

CESM

0.083

-57

-29

10

mon6

1

CESM

0.5

-58

-29

10

wk1

1

CESM

0.019

-58

-29

10

yr1

1

CESM

1

-61

-30

10

yr11.6

1

CESM

11.67

-121

-71

-17

yr17.5

1

CESM

17.5

-169

-98

-24

yr35

1

CESM

35

-358

-204

-37

yr5

1

CESM

5

-72

-41

-2

yr7

1

CESM

7

-85

-50

-11

yr8.75

1

CESM

8.75

-97

-58

-13

dCperDeg

2

unif

NA

-263

-125

49

dCperDegYr

2

unif

0.019

0

0

0

dCperDegYr

2

unif

0.083

0

0

0

dCperDegYr

2

unif

0.5

0

0

0

dCperDegYr

2

unif

1

-1

0

0

dCperDegYr

2

unif

10

-64

-37

-9

dCperDegYr

2

unif

11.67

-88

-50

-12

dCperDegYr

2

unif

17.5

-197

-113

-27

dCperDegYr

2

unif

20

-257

-148

-35

dCperDegYr

2

unif

25

-402

-232

-55

dCperDegYr

2

unif

30

-575

-334

-79

dCperDegYr

2

unif

35

-613

-419

-107

dCperDegYr

2

unif

4

-10

-6

-1

dCperDegYr

2

unif

5

-16

-9

-2

13

Page 37

Figures and page graphics, page 37

type

globalWarming

warmingDistribution

timeStep

dC_qrt05

dC_qrt50

dC_qrt95

dCperDegYr

2

unif

7

-32

-18

-4

dCperDegYr

2

unif

8

-41

-24

-6

dCperDegYr

2

unif

8.75

-49

-28

-7

mon1

2

unif

0.083

-111

-56

20

mon6

2

unif

0.5

-112

-57

19

wk1

2

unif

0.019

-111

-56

20

yr1

2

unif

1

-118

-59

19

yr11.6

2

unif

11.67

-228

-137

-35

yr17.5

2

unif

17.5

-317

-188

-49

yr35

2

unif

35

-612

-416

-95

yr5

2

unif

5

-139

-79

-5

yr7

2

unif

7

-162

-96

-22

yr8.75

2

unif

8.75

-185

-113

-27

dCperDeg

2

CESM

NA

-255

-120

49

dCperDegYr

2

CESM

0.019

0

0

0

dCperDegYr

2

CESM

0.083

0

0

0

dCperDegYr

2

CESM

0.5

0

0

0

dCperDegYr

2

CESM

1

-1

0

0

dCperDegYr

2

CESM

10

-65

-37

-9

dCperDegYr

2

CESM

11.67

-88

-51

-12

dCperDegYr

2

CESM

17.5

-191

-110

-26

dCperDegYr

2

CESM

20

-246

-141

-32

dCperDegYr

2

CESM

25

-366

-210

-43

dCperDegYr

2

CESM

30

-470

-277

-50

dCperDegYr

2

CESM

35

-525

-313

-45

dCperDegYr

2

CESM

4

-10

-6

-1

dCperDegYr

2

CESM

5

-16

-9

-2

dCperDegYr

2

CESM

7

-32

-18

-4

dCperDegYr

2

CESM

8

-41

-24

-6

dCperDegYr

2

CESM

8.75

-50

-29

-7

mon1

2

CESM

0.083

-107

-54

20

mon6

2

CESM

0.5

-109

-55

19

14

Page 38

Figures and page graphics, page 38

type

globalWarming

warmingDistribution

timeStep

dC_qrt05

dC_qrt50

dC_qrt95

wk1

2

CESM

0.019

-108

-54

20

yr1

2

CESM

1

-114

-57

20

yr11.6

2

CESM

11.67

-214

-127

-30

yr17.5

2

CESM

17.5

-282

-165

-37

yr35

2

CESM

35

-524

-310

-37

yr5

2

CESM

5

-133

-76

-4

yr7

2

CESM

7

-154

-91

-20

yr8.75

2

CESM

8.75

-175

-106

-23

Figures

Change in carbon per degree year with bootstrap

Fig1.theme <-

theme

(

axis.text.x=

element_text

(

size=

18

,

angle=

0

,

colour=

"black"

),

axis.text.y=

element_text

(

size=

18

,

angle=

0

,

colour=

"black"

),

axis.title=

element_text

(

size=

20

),

legend.text=

element_text

(

size=

12

),

axis.line.x=

element_line

(

color=

"black"

),

legend.position =

"top"

,

legend.key =

element_rect

(

fill=

"grey95"

,

size=

0

,

color=

"grey95"

),

legend.key.size =

unit

(

0.1

,

"cm"

),

legend.title =

element_text

(

size=

12

,

face=

"bold"

),

legend.background =

element_rect

(

fill=

"grey95"

,

color=

"black"

),

axis.line =

element_line

(

colour =

"black"

),

panel.grid.major =

element_blank

(),

panel.grid.minor =

element_blank

(),

strip.background =

element_rect

(

colour =

"black"

,

size =

0.5

),

panel.background =

element_rect

(

colour=

"black"

,

fill=

"white"

),

panel.border =

element_blank

(),

axis.ticks =

element_line

(

colour=

"black"

),

legend.box =

"horizontal"

,

axis.title.y=

element_text

(

vjust=

1.9

),

axis.title.x=

element_text

(

vjust=

-

0.4

))+

theme

(

legend.justification=

c

(

1

,

1

),

legend.position=

c

(

1

,

1

))

# set color gradient

ramp <-

colorRamp

(

c

(

"black"

,

"darkred"

,

"red"

))

use.col.points <-

c

(

rgb

(

ramp

(

seq

(

0

,

1

,

length =

500

)),

max =

255

))

# generate figure 1

Figure1 <-

ggplot

(data.study,

aes

(

x=

C.control,

y=

dC.perDegYr)) +

geom_abline

(

aes

(

intercept=

parBins$intercept,

slope=

parBins$slope),

colour=

"grey"

,

data=

parBins) +

geom_abline

(

intercept=

0

,

slope=

0

,

color=

"black"

) +

geom_errorbar

(

aes

(

ymax=

dC.perDegYr + dC.perDegYr.se,

ymin=

dC.perDegYr - dC.perDegYr.se),

width=

0

,

color=

"grey80"

,

size=

0.5

) +

geom_point

(

alpha=

1

,

aes

(

color=

Tdelta,

size=

Years)) +

15

Page 39

Figures and page graphics, page 39

scale_color_gradientn

(

limits=

range

(

c

(

0

,data.study$Tdelta)),

colours=

use.col.points,

space=

"Lab"

,

labels=

c

(

"<1"

,

1

,

2

,

3

,

4

,

5

))+

scale_size

(

range=

c

(

3

,

10

)) +

xlab

(

expression

(

atop

(

"Standing Carbon stock"

,

"(kg m"

^-

3

*

")"

))) +

ylab

(

expression

(

atop

(

"Annual change in Carbon stock per"

*

~

degree* C,

"(kg m"

^-

3

~degree*C^-

1

~year^-

1

*

")"

))) +

scale_x_continuous

(

limits=

c

(

0

,

0.130

*

1e3

),

expand =

c

(

0

,

0

)) +

scale_y_continuous

(

limits=

c

(-

6

,

6.25

),

expand =

c

(

0

,

0

)) +

geom_hline

(

yintercept=

6.25

) +

geom_vline

(

xintercept=

130

) +

guides

(

color =

guide_legend

(

by.row=

T,

nrow =

1

,

label.position =

"bottom"

,

label.hjust=

0.5

,

title.position=

"top"

,

title=

expression

(

"Warming ("

*degree*C*

")"

),

override.aes =

list

(

size =

5

),

legend.box =

"vertical"

))+

guides

(

size =

guide_legend

(

nrow =

1

,

label.position =

"bottom"

,

label.hjust=

0.5

,

title.position=

"top"

,

title=

expression

(

"Duration (years)"

),

legend.box =

"vertical"

)) +

Fig1.theme

print

(Figure1)

16

Page 40

Figures and page graphics, page 40

−6

−3

0

3

6

0

25

50

75

100

125

Standing Carbon stock

(kg m

−

3

)

Ann

ual change in Carbon stock per

 °

C

(kg m

−

3

 °

C

−

1

 

y

e

a

r

−

1

)

Duration (years)

5

10

15

20

25

Warming (

°

C)

<1 1 2 3 4 5

ggsave

(

plot =

Figure1,

filename=

'../figs/Figure01.pdf'

,

width=

7.5

,

height=

7.5

)

Model-data plot for interactive statisitcal model (Figure 2a)

print

(

summary

(lm.list$Cw.study))

##

## Call:

## lm(formula = C.warmed ~ C.control * degYr, data = data.study)

##

17

Page 41

Figures and page graphics, page 41

## Residuals:

##

Min

1Q

Median

3Q

Max

## -10.3269 -2.1202 -0.5347

0.8648 14.0377

##

## Coefficients:

##

Estimate Std. Error t value Pr(>|t|)

## (Intercept)

1.61837

1.56580

1.034

0.307

## C.control

0.96044

0.03789 25.350 < 2e-16 ***

## degYr

0.30065

0.12352

2.434

0.019 *

## C.control:degYr -0.01662

0.00321 -5.176 5.11e-06 ***

## ---

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

##

## Residual standard error: 4.924 on 45 degrees of freedom

## Multiple R-squared: 0.9563, Adjusted R-squared: 0.9534

## F-statistic: 328.4 on 3 and 45 DF, p-value: < 2.2e-16

ramp <-

colorRamp

(

c

(

"white"

,

"blue"

,

"gold"

,

"orange"

,

"red"

))

use.fill <-

rgb

(

ramp

(

seq

(

0

,

1

,

length =

255

)),

max =

255

)

fig2aTheme <-

theme

(

axis.text.x=

element_text

(

size=

18

,

angle=

0

,

colour=

"black"

),

axis.text.y=

element_text

(

size=

18

,

angle=

0

,

colour=

"black"

),

axis.title=

element_text

(

size=

20

),

axis.line =

element_line

(

colour =

"black"

),

panel.grid.major =

element_blank

(),

panel.grid.minor =

element_blank

(),

strip.background =

element_rect

(

colour =

"black"

,

size =

0.5

),

panel.background =

element_rect

(

colour=

"black"

,

fill=

"white"

),

panel.border =

element_blank

(),

axis.ticks =

element_line

(

colour=

"black"

),

legend.box =

"vertical"

,

legend.justification=

c

(

0.9

,

1

),

legend.position=

c

(

0.3

,

1

),

legend.key =

element_rect

(

fill=

"grey95"

,

size=

0

,

color=

"grey95"

),

legend.key.size =

unit

(

0.5

,

"cm"

),

legend.title =

element_text

(

size=

12

,

face=

"bold"

),

legend.background =

element_rect

(

fill=

"grey95"

,

color=

"black"

))

figure2a <-

ggplot

(modelData.df,

aes

(

x=

rnd.data,

y=

rnd.model)) +

stat_density2d

(

geom =

"raster"

,

aes

(

fill =

..density..),

contour =

FALSE

,

interpolate =

TRUE

,

n=

200

,

show.legend=

T) +

geom_point

(

size=

0.15

,

alpha=

0.2

,

col=

"grey"

) +

geom_point

(

data=

summaryMD.df,

aes

(

x=

data.mean,

y=

model.mean),

color=

"black"

,

size=

2

) +

scale_fill_gradientn

(

colours =

use.fill) +

geom_abline

(

intercept=

0

,

slope=

1

,

size=

1

)+

scale_x_log10

(

limits=

c

(

10

,

0.12

*

1e3

),

expand =

c

(

0

,

0

),

breaks=

c

(

1

:

10

)*

10

,

labels=

c

(

10

,

""

,

30

,

""

,

50

,

""

,

70

,

""

,

""

,

100

)) +

scale_y_log10

(

limits=

c

(

10

,

0.12

*

1e3

),

expand =

c

(

0

,

0

),

breaks=

c

(

1

:

10

)*

10

,

labels=

c

(

10

,

""

,

30

,

""

,

50

,

""

,

70

,

""

,

""

,

100

)) +

xlab

(

bquote

(

"Observed C stock (kg "

*m^-

3

*

")"

)) +

ylab

(

bquote

(

"Predicted C stock (kg "

*m^-

3

*

")"

)) +

guides

(

fill =

guide_colourbar

(

label.position =

"bottom"

,

label.hjust=

0.5

,

title.position=

"top"

,

title=

expression

(

"Point density"

),

direction =

"horizontal"

)) +

fig2aTheme

18

Page 42

Figures and page graphics, page 42

print

(figure2a)

10

30

50

70

100

10

30

50

70

100

Observed C stock (kg m

−

3

)

Predicted C stock (kg 

m

−

3

)

2.5 5.0 7.5

Point density

ggsave

(

plot=

figure2a,

file=

'../figs/Figure02a.pdf'

,

height=

7

,

width=

7

)

Boot strap slope comparison (Figure 2b)

ggplot

(selectSize.sample,

aes

(

x=

dim

(data.sample)[

1

]-sampleSize,

y=

C.control)) +

geom_jitter

(

alpha=

0.3

,

color=

"grey"

,

height=

0

,

size=

0.75

) +

scale_y_continuous

(

limits =

c

(-

0.05

,

0.025

)) +

geom_boxplot

(

aes

(

group =

cut_width

(

dim

(data.sample)[

1

]-sampleSize,

5

)),

19

Page 43

Figures and page graphics, page 43

outlier.size=

0

,

outlier.shape =

NA

,

fill=

"gold"

,

alpha=

0.5

,

color=

"black"

) +

geom_abline

(

intercept=

0

,

slope=

0

,

color=

"red"

) +

xlab

(

paste

(

"Samples removed from "

,

dim

(data.sample)[

1

])) +

ylab

(

"Slope"

)

−0.050

−0.025

0.000

0.025

0

50

100

150

200

Samples removed from  229

Slope

fig2b.pl <-

ggplot

(selectSize.study,

aes

(

x=

dim

(data.study)[

1

]-sampleSize,

y=

C.control)) +

geom_jitter

(

alpha=

0.3

,

color=

"grey"

,

height=

0

,

size=

0.75

) +

scale_y_continuous

(

limits =

c

(-

0.05

,

0.025

)) +

geom_boxplot

(

aes

(

group =

cut_width

(

dim

(data.study)[

1

]-sampleSize,

1

)),

outlier.size=

0

,

outlier.shape =

NA

,

fill=

"gold"

,

alpha=

0.5

,

color=

"black"

) +

geom_abline

(

intercept=

0

,

slope=

0

,

color=

"red"

) +

xlab

(

paste

(

"Studies removed from "

,

dim

(data.study)[

1

])) +

ylab

(

"Slope"

)

20

Page 44

Figures and page graphics, page 44

fig2bTheme <-

theme

(

axis.text.x=

element_text

(

size=

20

,

angle=

0

,

colour=

"black"

),

axis.text.y=

element_text

(

size=

20

,

angle=

0

,

colour=

"black"

),

axis.title=

element_text

(

size=

28

),

axis.line =

element_line

(

colour =

"black"

),

panel.grid.major =

element_blank

(),

panel.grid.minor =

element_blank

(),

strip.background =

element_rect

(

colour =

"black"

,

size =

0.5

),

panel.background =

element_rect

(

colour=

"black"

,

fill=

"white"

),

panel.border =

element_blank

(),

axis.ticks =

element_line

(

colour=

"black"

))

print

(fig2b.pl + fig2bTheme)

−0.050

−0.025

0.000

0.025

0

10

20

30

40

Studies removed from  49

Slope

21

Page 45

Figures and page graphics, page 45

ggsave

(

'../figs/Figure02b.pdf'

, fig2b.pl + fig2bTheme,

width=

7

,

height=

7

)

22

Page 46

Figures and page graphics, page 46

Global carbon vulnerability map (Figure 3a)

See Section “Global carbon loss map code”

23

Page 47

Figures and page graphics, page 47

Acclimatization assumptions affects soil carbon losses (Figure 3b)

degYrStepIntSimple.pl <-

ggplot

(

subset

(resultsTable, !

grepl

(

'dCperDeg'

, type) &

warmingDistribution ==

'CESM'

&

globalWarming %in%

c

(

1

,

2

))) +

geom_hline

(

yintercept=

0

,

col=

"grey"

,

size=

1

) +

geom_line

(

aes

(

x=

timeStep,

y=

dC_qrt50,

group=

warming,

fill=

globalWarming)) +

geom_point

(

aes

(

x=

timeStep,

y=

dC_qrt50,

fill=

globalWarming),

size=

4

,

shape=

21

) +

geom_ribbon

(

aes

(

x=

timeStep,

y=

dC_qrt50,

ymin=

dC_qrt05,

ymax=

dC_qrt95,

fill=

globalWarming,

guide=

NA

),

alpha=

0.2

) +

scale_x_continuous

(

limits=

c

(

0

,

35

),

expand=

c

(

0

,

0

))+

scale_fill_manual

(

values=

c

(

'#FF9900'

,

'#FF3300'

),

guide =

guide_legend

(

direction =

"horizontal"

,

title =

expression

(

"Warming"

*

~

degree*C))) +

labs

(

title=

''

,

x=

'Acclimation time'

,

y=

"Extrapolated Carbon loss by 2050 (Pg)"

) +

theme_bw

() +

theme

(

axis.title=

element_text

(

size=

16

),

axis.text=

element_text

(

size=

14

),

legend.position=

c

(

0.2

,

0.1

),

panel.grid.major=

element_line

(

color=

NA

),

panel.grid.minor=

element_line

(

color=

NA

),

panel.border=

element_rect

(

color=

"black"

,

fill=

NA

,

size=

1

),

axis.ticks=

element_line

(

size=

0.25

),

legend.key=

element_rect

(

color=

"black"

,

fill=

NA

,

size=

0.25

))

print

(degYrStepIntSimple.pl)

−400

−200

0

0

10

20

30

Acclimation time

Extr

apolated Carbon loss b

y 2050 (Pg)

Warming

 °

C

1

2

24

Page 48

Figures and page graphics, page 48

ggsave

(degYrStepIntSimple.pl,

filename=

'../figs/Figure03b.pdf'

,

height=

4.5

,

width=

6.5

)

Data summary and basic visualizations

0

25

50

75

100

125

0

50

100

150

Control [kg−C m^−3]

W

ar

med [kg−C m^−3]

SOC samples by random within study sample pairs and study mean/sd

## No id variables; using all as measure variables

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

25

Page 49

Figures and page graphics, page 49

Tdelta

Years

C.warmed

C.control

degYr

MAP

MAT

pH

perClay

0

10

20

30

0

10

20

30

40

0

10

20

30

0

10

20

30

40

0

20

40

60

0

10

20

0

10

20

30

0

10

20

30

40

0

10

20

0

2

4

0

10

20

0

50

100

0

50

100

150

0

20

40

0

500

1000

−10

0

10

5

6

7

8

10

20

value

count

## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

26

Page 50

Figures and page graphics, page 50

Tdelta

Years

C.warmed

C.control

degYr

MAT

MAP

pH

perClay

0

10

20

30

40

0

10

20

30

0

5

10

15

20

0

5

10

15

20

0

10

20

30

40

0

10

20

30

0

10

20

0

10

20

30

0

10

20

−1

0

1

2

3

−1

0

1

2

3

−2

0

2

−2

0

2

4

−1

0

1

2

3

−1

0

1

2

0

1

2

3

0

1

2

3

4

−1

0

1

2

3

value

count

Table 6: Description of study sites including mean annual tempera-

ture (MAT), mean annual precipitation (MAP), soil pH, and soil
percent clay (perClay). For standardization purposes, all climate
data were collected from Bioclim and all soil data were collected
from SoilGrids.

Study Description

MAP

MAT

pH

perClay

Delta Junction, AK, USA

298

-3.2

6.6

12

Ford Forest, MI, USA

824

4.4

5.3

8

Ford Forest, MI, USA [precipitation]

824

4.4

5.3

8

FRAGILE Experiment, Svalbard,

Norway [grazed]

226

-5.7

6

10

FRAGILE Experiment, Svalbard,

Norway

226

-5.7

6

10

INCREASE Clocaenog, Wales, UK

1215

7.1

5.2

11

Gucheng, Hebei, China

543

12.7

7

17

Soil Warming x Nitrogen Addition

Study, NH, USA

1142

6.8

4.9

7

Rocky Mountain Biological Laboratory,

CO, USA

519

0.5

5.8

14

INCREASE Kiskunsag, Hungary

536

10.9

7.1

18

Krycklan, Sweden

603

8.2

5.5

8

INCREASE Brandbjerg, Demark

609

1

4.6

5

Jasper Ridge, CA, USA

635

13.7

6.2

18

Jasper Ridge, CA, USA [CO2]

635

13.7

6.2

18

Oak Ridge, Tennessee, USA

1347

13.9

5.6

27

Oak Ridge, Tennessee, USA [CO2]

1347

13.9

5.6

27

27

Page 51

Figures and page graphics, page 51

Study Description

MAP

MAT

pH

perClay

Oklahoma Tall Grass Prairie, OK, USA

[clipped grass]

906

16.3

6.7

24

Oklahoma Tall Grass Prairie, OK, USA

906

16.3

6.7

24

Research Station of Songnen Grassland

Ecosystem, China

436

5.2

7.9

17

Duke Forest, NC, USA [3 degrees]

1161

14.4

4.9

22

Duke Forest, NC, USA [5 degrees]

1161

14.4

4.9

22

Konza Prarie, KS, USA

872

12

6.4

24

Whitehall, GA, USA [3 degrees]

1230

16.5

4.6

21

Whitehall, GA, USA [5 degrees]

1230

16.5

4.6

21

Dry Heath Env. Control, Sweden

390

-0.1

5.1

6

Prairie Heating and CO2 Enrichment,

CO, USA

384

7

7.4

23

INCREASE Garraf, Spain

632

15.5

6.8

25

HOCC-Experiment, Germany

729

8.9

6.3

20

HOCC-Experiment, Germany

[precipitation 1]

729

8.9

6.3

20

HOCC-Experiment, Germany

[precipitation 2]

729

8.9

6.3

20

HOCC-Experiment, Germany

[precipitation 3]

729

8.9

6.3

20

HOCC-Experiment, Germany

[precipitation 4]

729

8.9

6.3

20

BioCON, MN, USA [elevated C02,

ambient N, negative H20]

761

3.8

5.5

11

BioCON, MN, USA [elevated C02,

elevated N, negative H20]

761

3.8

5.5

11

BioCON, MN, USA [elevated C02,

elevated N, ambient H20]

761

3.8

5.5

11

BioCON, MN, USA [ambient C02,

ambient N, ambient H20]

761

3.8

5.5

11

BioCON, MN, USA [ambient C02,

elevated N, negative H20]

761

3.8

5.5

11

BioCON, MN, USA [ambient C02,

elevated N, ambient H20]

761

3.8

5.5

11

Heat of Prarie Species 1, OR, USA

1194

11.4

5.3

19

Heat of Prarie Species 1, OR, USA

[precipitation]

1194

11.4

5.3

19

Heat of Prarie Species 2, OR, USA

[precipitation]

1364

11.4

5.5

15

Heat of Prarie Species 3, WA, USA

[precipitation]

1199

10.1

5.3

18

Heat of Prarie Species 2, OR, USA

1364

11.4

5.5

15

Heat of Prarie Species 3, WA, USA

1199

10.1

5.3

18

INCREASE Mols, Denmark

592

7.4

5.3

6

Arctic LTER, AK, USA

237

-11.2

6

15

Hubbard Brook, NH, USA

1082

5.4

5

9

ITEX, Greenland

112

-11.3

NA

NA

ITEX, Greenland [vegetated]

112

-11.3

NA

NA

28

Page 52

Figures and page graphics, page 52

Table 7: Mean soil carbon [kg-C mˆ-3] values across control study

site with number of samples in each study for the control plots.

Study Description

count.control

C.control

C.sd.control

Delta Junction, AK, USA

5

32.05

NA

Ford Forest, MI, USA

3

36.19

NA

Ford Forest, MI, USA [precipitation]

3

50.72

NA

FRAGILE Experiment, Svalbard,

Norway [grazed]

5

58.64

NA

FRAGILE Experiment, Svalbard,

Norway

5

73.87

NA

INCREASE Clocaenog, Wales, UK

3

119.9

NA

Gucheng, Hebei, China

3

101.8

NA

Soil Warming x Nitrogen Addition Study,

NH, USA

6

119.6

NA

Rocky Mountain Biological Laboratory,

CO, USA

5

17.02

NA

INCREASE Kiskunsag, Hungary

3

5.32

NA

Krycklan, Sweden

6

10.13

NA

INCREASE Brandbjerg, Demark

9

44.85

NA

Jasper Ridge, CA, USA

4

14.04

NA

Jasper Ridge, CA, USA [CO2]

4

15.53

NA

Oak Ridge, Tennessee, USA

3

27.96

NA

Oak Ridge, Tennessee, USA [CO2]

3

27.32

NA

Oklahoma Tall Grass Prairie, OK, USA

[clipped grass]

6

27.42

NA

Oklahoma Tall Grass Prairie, OK, USA

6

25.27

NA

Research Station of Songnen Grassland

Ecosystem, China

6

20.29

NA

Duke Forest, NC, USA [3 degrees]

3

36.89

NA

Duke Forest, NC, USA [5 degrees]

3

36.89

NA

Konza Prarie, KS, USA

12

47.36

NA

Whitehall, GA, USA [3 degrees]

6

12.44

NA

Whitehall, GA, USA [5 degrees]

5

13.16

NA

Dry Heath Env. Control, Sweden

6

51.25

NA

Prairie Heating and CO2 Enrichment,

CO, USA

5

17.51

NA

INCREASE Garraf, Spain

3

24.42

NA

HOCC-Experiment, Germany

4

13.84

NA

HOCC-Experiment, Germany

[precipitation 1]

4

13.26

NA

HOCC-Experiment, Germany

[precipitation 2]

4

11.63

NA

HOCC-Experiment, Germany

[precipitation 3]

4

14.55

NA

HOCC-Experiment, Germany

[precipitation 4]

4

13.95

NA

BioCON, MN, USA [elevated C02,

ambient N, negative H20]

3

13.59

NA

BioCON, MN, USA [elevated C02,

elevated N, negative H20]

3

19.6

NA

BioCON, MN, USA [elevated C02,

elevated N, ambient H20]

3

14.91

NA

29

Page 53

Figures and page graphics, page 53

Study Description

count.control

C.control

C.sd.control

BioCON, MN, USA [ambient C02,

ambient N, ambient H20]

3

14.13

NA

BioCON, MN, USA [ambient C02,

elevated N, negative H20]

3

14.8

NA

BioCON, MN, USA [ambient C02,

elevated N, ambient H20]

3

13.54

NA

Heat of Prarie Species 1, OR, USA

5

42.6

NA

Heat of Prarie Species 1, OR, USA

[precipitation]

5

42.66

NA

Heat of Prarie Species 2, OR, USA

[precipitation]

5

31.82

NA

Heat of Prarie Species 3, WA, USA

[precipitation]

5

36.38

NA

Heat of Prarie Species 2, OR, USA

5

35.57

NA

Heat of Prarie Species 3, WA, USA

5

41.31

NA

INCREASE Mols, Denmark

3

47.64

NA

Arctic LTER, AK, USA

16

24.64

NA

Hubbard Brook, NH, USA

8

76.38

NA

ITEX, Greenland

1

2.071

NA

ITEX, Greenland [vegetated]

1

21.36

NA

Table 8: Mean soil carbon [kg-C mˆ-3] values across warmed study

site with number of samples in each study for the warmed plots,
their warming treatment [C], and length of treatment [years].

Study Description

Tdelta

Years

count.warmed

C.warmed

C.sd.warmed

Delta Junction, AK, USA

0.5

10.25

5

43.48

18.56

Ford Forest, MI, USA

4.581

5

3

30.27

6.201

Ford Forest, MI, USA

[precipitation]

4.581

5

3

27.59

5.819

FRAGILE Experiment,

Svalbard, Norway [grazed]

1

4

5

55.28

5.773

FRAGILE Experiment,

Svalbard, Norway

1

4

5

67.37

21.31

INCREASE Clocaenog, Wales,

UK

0.198

15

3

110.9

14.04

Gucheng, Hebei, China

2.34

0.6667

3

99.14

3.645

Soil Warming x Nitrogen

Addition Study, NH, USA

3.989

5

5

77.85

14.91

Rocky Mountain Biological

Laboratory, CO, USA

2

25

5

16.74

3.056

INCREASE Kiskunsag,

Hungary

0.44

14

3

5.227

1.773

Krycklan, Sweden

0.9

6

6

8.075

1.399

INCREASE Brandbjerg,

Demark

1

2

9

43.89

4.177

Jasper Ridge, CA, USA

1.773

2

4

13.09

2.205

Jasper Ridge, CA, USA [CO2]

1.773

2

4

15.65

3.289

Oak Ridge, Tennessee, USA

2.6

5

3

29.1

3.886

30

Page 54

Figures and page graphics, page 54

Study Description

Tdelta

Years

count.warmed

C.warmed

C.sd.warmed

Oak Ridge, Tennessee, USA

[CO2]

2.6

5

3

30.94

2.625

Oklahoma Tall Grass Prairie,

OK, USA [clipped grass]

1.479

10

6

21.78

11.09

Oklahoma Tall Grass Prairie,

OK, USA

1.479

10

6

23.69

12.93

Research Station of Songnen

Grassland Ecosystem, China

1.75

3

6

19.47

0.3409

Duke Forest, NC, USA [3

degrees]

3

4

3

47.34

18.54

Duke Forest, NC, USA [5

degrees]

5

4

3

42.64

3.876

Konza Prarie, KS, USA

1

4

12

47.61

6.327

Whitehall, GA, USA [3 degrees]

2.096

3

6

12.87

8.818

Whitehall, GA, USA [5 degrees]

4.27

4

6

10.05

4.062

Dry Heath Env. Control,

Sweden

1.5

14

6

50.53

4.366

Prairie Heating and CO2

Enrichment, CO, USA

2.8

6

5

20.03

2.494

INCREASE Garraf, Spain

0.94

4.5

3

24.81

8.746

HOCC-Experiment, Germany

1.954

3

4

15.47

2.457

HOCC-Experiment, Germany

[precipitation 1]

1.954

3

4

15.25

1.427

HOCC-Experiment, Germany

[precipitation 2]

1.954

3

4

14.28

2.466

HOCC-Experiment, Germany

[precipitation 3]

1.954

3

4

16.14

2.043

HOCC-Experiment, Germany

[precipitation 4]

1.954

3

4

14.81

2.861

BioCON, MN, USA [elevated

C02, ambient N, negative H20]

2.5

0.42

3

13.94

2.312

BioCON, MN, USA [elevated

C02, elevated N, negative H20]

2.5

0.42

3

20.74

11.53

BioCON, MN, USA [elevated

C02, elevated N, ambient H20]

2.5

0.42

3

13.82

0.1774

BioCON, MN, USA [ambient

C02, ambient N, ambient H20]

2.5

0.42

3

14.15

4.641

BioCON, MN, USA [ambient

C02, elevated N, negative H20]

2.5

0.42

3

15.35

4.115

BioCON, MN, USA [ambient

C02, elevated N, ambient H20]

2.5

0.42

3

13.9

2.389

Heat of Prarie Species 1, OR,

USA

2.75

2.2

5

38.6

4.242

Heat of Prarie Species 1, OR,

USA [precipitation]

2.75

2.2

5

41.04

4.821

Heat of Prarie Species 2, OR,

USA [precipitation]

2.98

2.16

5

32.97

2.909

Heat of Prarie Species 3, WA,

USA [precipitation]

2.94

1.75

5

40.8

6.846

Heat of Prarie Species 2, OR,

USA

2.98

2.16

5

34.42

8.201

31

Page 55

Figures and page graphics, page 55

Study Description

Tdelta

Years

count.warmed

C.warmed

C.sd.warmed

Heat of Prarie Species 3, WA,

USA

2.94

1.75

5

39.01

7.942

INCREASE Mols, Denmark

0.9

4

3

38.8

8.516

Arctic LTER, AK, USA

0.53

20

16

21.14

5.913

Hubbard Brook, NH, USA

4.83

0.8333

8

63.48

12.36

ITEX, Greenland

2

9

1

1.635

NA

ITEX, Greenland [vegetated]

2

9

1

20.02

NA

Table 9: Biome of study sites. For standardization purposes, biome

allocations were generated using the UNEP biomes map.

Study Description

Biome

Delta Junction, AK, USA

Boreal Forests/Taiga

Ford Forest, MI, USA

Temperate Broadleaf and Mixed Forests

Ford Forest, MI, USA [precipitation]

Temperate Broadleaf and Mixed Forests

FRAGILE Experiment, Svalbard, Norway

[grazed]

Tundra

FRAGILE Experiment, Svalbard, Norway

Tundra

INCREASE Clocaenog, Wales, UK

Temperate Broadleaf and Mixed Forests

Gucheng, Hebei, China

Temperate Broadleaf and Mixed Forests

Soil Warming x Nitrogen Addition Study,

NH, USA

Temperate Broadleaf and Mixed Forests

Rocky Mountain Biological Laboratory, CO,

USA

Temperate Conifer Forests

INCREASE Kiskunsag, Hungary

Temperate Broadleaf and Mixed Forests

Krycklan, Sweden

Temperate Broadleaf and Mixed Forests

INCREASE Brandbjerg, Demark

Boreal Forests/Taiga

Jasper Ridge, CA, USA

Mediterranean Forests, Woodlands and

Scrub

Jasper Ridge, CA, USA [CO2]

Mediterranean Forests, Woodlands and

Scrub

Oak Ridge, Tennessee, USA

Temperate Broadleaf and Mixed Forests

Oak Ridge, Tennessee, USA [CO2]

Temperate Broadleaf and Mixed Forests

Oklahoma Tall Grass Prairie, OK, USA

[clipped grass]

Temperate Grasslands, Savannas and

Shrublands

Oklahoma Tall Grass Prairie, OK, USA

Temperate Grasslands, Savannas and

Shrublands

Research Station of Songnen Grassland

Ecosystem, China

Temperate Grasslands, Savannas and

Shrublands

Duke Forest, NC, USA [3 degrees]

Temperate Broadleaf and Mixed Forests

Duke Forest, NC, USA [5 degrees]

Temperate Broadleaf and Mixed Forests

Konza Prarie, KS, USA

Temperate Grasslands, Savannas and

Shrublands

Whitehall, GA, USA [3 degrees]

Temperate Broadleaf and Mixed Forests

Whitehall, GA, USA [5 degrees]

Temperate Broadleaf and Mixed Forests

Dry Heath Env. Control, Sweden

Tundra

Prairie Heating and CO2 Enrichment, CO,

USA

Temperate Grasslands, Savannas and

Shrublands

INCREASE Garraf, Spain

Mediterranean Forests, Woodlands and

Scrub

32

Page 56

Figures and page graphics, page 56

Study Description

Biome

HOCC-Experiment, Germany

Temperate Broadleaf and Mixed Forests

HOCC-Experiment, Germany [precipitation

1]

Temperate Broadleaf and Mixed Forests

HOCC-Experiment, Germany [precipitation

2]

Temperate Broadleaf and Mixed Forests

HOCC-Experiment, Germany [precipitation

3]

Temperate Broadleaf and Mixed Forests

HOCC-Experiment, Germany [precipitation

4]

Temperate Broadleaf and Mixed Forests

BioCON, MN, USA [elevated C02, ambient

N, negative H20]

Temperate Broadleaf and Mixed Forests

BioCON, MN, USA [elevated C02, elevated

N, negative H20]

Temperate Broadleaf and Mixed Forests

BioCON, MN, USA [elevated C02, elevated

N, ambient H20]

Temperate Broadleaf and Mixed Forests

BioCON, MN, USA [ambient C02, ambient

N, ambient H20]

Temperate Broadleaf and Mixed Forests

BioCON, MN, USA [ambient C02, elevated

N, negative H20]

Temperate Broadleaf and Mixed Forests

BioCON, MN, USA [ambient C02, elevated

N, ambient H20]

Temperate Broadleaf and Mixed Forests

Heat of Prarie Species 1, OR, USA

Temperate Broadleaf and Mixed Forests

Heat of Prarie Species 1, OR, USA

[precipitation]

Temperate Broadleaf and Mixed Forests

Heat of Prarie Species 2, OR, USA

[precipitation]

Temperate Conifer Forests

Heat of Prarie Species 3, WA, USA

[precipitation]

Temperate Conifer Forests

Heat of Prarie Species 2, OR, USA

Temperate Conifer Forests

Heat of Prarie Species 3, WA, USA

Temperate Conifer Forests

INCREASE Mols, Denmark

Temperate Broadleaf and Mixed Forests

Arctic LTER, AK, USA

Tundra

Hubbard Brook, NH, USA

Temperate Broadleaf and Mixed Forests

ITEX, Greenland

Tundra

ITEX, Greenland [vegetated]

Tundra

Helper functions

Bootstrap function

print

(bootStrap.fn)

## function (data, myFormula, nRuns, sampleSize, lm.weights = NULL,

##

shuffleFn = NULL, numCoef, verbose = FALSE)

## {

##

sampleIndex <- matrix(NA, nrow = nRuns, ncol = sampleSize)

##

lmStats <- matrix(NA, nrow = nRuns, ncol = numCoef + 3)

##

for (ii in 1:nRuns) {

##

if (verbose)

33

Page 57

Figures and page graphics, page 57

##

cat(ii, "\n")

##

if (!is.null(shuffleFn))

##

data <- shuffleFn(data)

##

if (verbose)

##

print(head(data))

##

sampleIndex[ii, ] <- sample(1:(dim(data)[1]), size = sampleSize)

##

temp.lm <- lm(myFormula, data[sampleIndex[ii, ], ])

##

fstatArr <- summary(temp.lm)$fstatistic

##

if (verbose)

##

print(summary(temp.lm))

##

lmStats[ii, ] <- c(temp.lm$coefficients, pf(fstatArr[1],

##

fstatArr[2], fstatArr[3], lower.tail = FALSE), adj.r.squared = summary(temp.lm)$adj.r.squared,

##

r.squared = summary(temp.lm)$r.squared)

##

}

##

lmStats <- as.data.frame(lmStats)

##

names(lmStats) <- c(names(temp.lm$coefficients), "p.value",

##

"adj.r.squared", "r.squard")

##

if (verbose)

##

cat("\n")

##

if (verbose)

##

print(lmStats)

##

return(lmStats)

## }

Read data

print

(readSamples)

## function (useMeanBD = TRUE, readControlMeans = FALSE)

## {

##

data <- read.xlsx2("../data/Soil Data Compiled_January 26.xlsx",

##

sheetIndex = 1, colIndex = c(1, 7, 9, 10, 11, 12))

##

names(data) <- c("Study", "Treatment", "Tdelta", "Years",

##

"perC", "bulk_density")

##

data$Tdelta <- round(data$Tdelta, 3)

##

data$perC <- round(data$perC, 3)

##

data$bulk_density <- round(data$bulk_density, 3)

##

if (useMeanBD) {

##

study.bd <- ddply(data[, c("Study", "bulk_density")],

##

.(Study), summarize, bulk_density.sd = sd(bulk_density),

##

bulk_density = mean(bulk_density))

##

data$bulk_density.sd <- NULL

##

data$bulk_density <- NULL

##

data <- merge(study.bd, data)

##

}

##

data$C <- data$perC/100 * data$bulk_density

##

data.sample <- ddply(data, c("Study", "Tdelta", "Years"),

##

function(xx) {

##

warmed <- xx$C[xx$Treatment == "W"]

##

control <- xx$C[xx$Treatment == "C"]

##

if (readControlMeans) {

##

return(data.frame(C.warmed = warmed, C.control = mean(control)))

34

Page 58

Figures and page graphics, page 58

##

}

##

else {

##

mismatch <- length(warmed) - length(control)

##

if (mismatch > 0) {

##

control <- c(control, rep(NA, mismatch))

##

}

##

else {

##

warmed <- c(warmed, rep(NA, abs(mismatch)))

##

}

##

return(data.frame(C.warmed = warmed, C.control = sample(control)))

##

}

##

})

##

data.sample$degYr <- data.sample$Years * data.sample$Tdelta

##

return(data.sample)

## }

Construct study means and standard deviations

print

(readStudyMeans)

## function (includeBD.sd = FALSE, includeControl.sd = FALSE)

## {

##

data <- read.xlsx2("../data/Soil Data Compiled_January 26.xlsx",

##

sheetIndex = 1, colIndex = c(1, 7, 9, 10, 11, 12))

##

names(data) <- c("Study", "Treatment", "Tdelta", "Years",

##

"perC", "bulk_density")

##

data$Tdelta <- round(as.numeric(data$Tdelta), 3)

##

data$perC <- as.numeric(data$perC)

##

data$bulk_density <- as.numeric(data$bulk_density)

##

data.study <- ddply(data, .(Study, Tdelta, Years, Treatment),

##

summarize, bulk_density.sd = sd(bulk_density), bulk_density = mean(bulk_density),

##

perC.sd = sd(perC), perC = mean(perC), count = length(Treatment))

##

if (includeBD.sd) {

##

data.study$C.sd <- sqrt(data.study$perC/100^2 * data.study$bulk_density.sd^2 +

##

data.study$perC.sd/100^2 * data.study$bulk_density^2)

##

}

##

else {

##

study.bd <- ddply(data[, c("Study", "bulk_density")],

##

.(Study), summarize, bulk_density = mean(bulk_density))

##

data.study$bulk_density.sd <- NULL

##

data.study$bulk_density <- NULL

##

data.study <- merge(study.bd, data.study)

##

data.study$C.sd <- sqrt((data.study$perC.sd/100 * data.study$bulk_density)^2)

##

}

##

data.study$C <- data.study$perC/100 * data.study$bulk_density

##

data.study <- merge(subset(data.study, Treatment == "W",

##

select = -Treatment), subset(data.study, Treatment ==

##

"C", select = -Treatment), by = c("Study", "Years", "Tdelta"),

##

suffixes = c(".warmed", ".control"))

##

if (!includeControl.sd)

##

data.study$C.sd.control <- 0

##

data.study$degYr <- data.study$Years * data.study$Tdelta

35

Page 59

Figures and page graphics, page 59

##

data.study$dC <- data.study$C.warmed - data.study$C.control

##

data.study$dC.sd <- sqrt(data.study$C.sd.warmed^2 + data.study$C.sd.control^2)

##

data.study$dC.perDegYr <- data.study$dC/data.study$degYr

##

data.study$dC.perDegYr.sd <- data.study$dC.sd/data.study$degYr

##

if (!includeControl.sd)

##

data.study$C.sd.control <- NA

##

data.study$C.se.control <- data.study$C.sd.control/data.study$count.control

##

data.study$C.se.warmed <- data.study$C.sd.warmed/data.study$count.warmed

##

data.study$dC.perDegYr.se <- data.study$dC.perDegYr.sd/sqrt(rowMeans(data.study[,

##

c("count.warmed", "count.control")]))

##

return(data.study)

## }

Convert R data.frame to netCDF file

cat

(

readLines

(

'../R/Crowther_dSOC_35yr_makeNC.R'

),

sep =

'\n'

)

## # Crowther_dSOC_35yr_makeNC.r

## # Will Wieder

## # July 2016

## # converts .csv to .nc file

## # data reordered go give increasing lat & lon values

##

## library(ncdf)

## library(reshape2)

## library(raster)

## library(rgdal)

##

## #dir <- getwd() #"/Users/wwieder/Desktop/Working_files/Crowther_warming/KTB_results/"

## #setwd(dir)

## file

<- "../R/Crowther_dSOC_35yr_makeNC.R"

## fin

<- "../data/Crowther_dSOC_35yr.csv"

## Data <- read.csv(fin)

## names(Data)

##

## minLAT <- min(Data$lat)

## maxLAT <- max(Data$lat)

## minLON <- min(Data$lon)

## maxLON <- max(Data$lon)

##

## attach(Data)

## names(Data)

##

## #set up depth, lat, lon coordinates

## nLAT

<- length(as.numeric(levels(as.factor(lat))))

## nLON

<- length(as.numeric(levels(as.factor(lon))))

##

## #LAT

<- seq(minLAT,maxLAT,(90 - 89.05759))

## latDATA <- read.csv('../data/LAT.csv') # some rounding errors, read in CSV of LAT from CLM

## LAT <- latDATA$LAT

## LON

<- seq(minLON,maxLON,(360/nLON))

## nOBS

<- length(Data$dC.single)

36

Page 60

Figures and page graphics, page 60

## dims

<- c(nLAT, nLON)

##

## #something wrong w/ how lat values ordered in .csv file

## #rewrite lat so values have a regular step (as I thing they should...)

## lat2 <- rep(NA, length(lat))

## start <- 1

## for (i in 1:nLAT) {

##

end

<- start + nLON-1

##

lat2[start:end] <- LAT[i]

##

start

<- end + 1

## }

## #-------------------------------------------------------------

## #

Define Variables

## #-------------------------------------------------------------

##

## VARS <- c('SOC','landArea','dC.single','dC.multi')

## nVARS <- length(VARS)

##

# close VARS loop

## gridSOC <- rasterFromXYZ(data.frame(Data$lon,lat2,Data$SOC), digits=2)

## gridSOC <- t(flip(gridSOC, direction='y') )

##

## gridArea <- rasterFromXYZ(data.frame(Data$lon,lat2,Data$landArea), digits=2)

## gridArea <- t(flip(gridArea, direction='y') )

##

## gridSingle <- rasterFromXYZ(data.frame(Data$lon,lat2,Data$dC.single), digits=2)

## gridSingle <- t(flip(gridSingle, direction='y') )

##

## gridMulti <- rasterFromXYZ(data.frame(Data$lon,lat2,Data$dC.multi), digits=2)

## gridMulti <- t(flip(gridMulti, direction='y') )

##

## #-------------------------------------------------------------

## #---------------write out .nc file----------------------------

## #-------------------------------------------------------------

## # define the netcdf coordinate variables (name, units, type)

## lat

<- dim.def.ncdf("lat","degrees_north", as.double(LAT), create_dimvar=TRUE)

## lon

<- dim.def.ncdf("lon","degrees_east", as.double(LON), create_dimvar=TRUE)

## mv

<- -9999.

# missing value to use

## LATIXY

<- var.def.ncdf("LATIXY", "degrees N", list(lat), mv,

##

longname="latitude", prec="double")

## LONGXY

<- var.def.ncdf("LONGXY", "degrees E", list(lon), mv,

##

longname="longitude", prec="double")

## SOC_i

<- var.def.ncdf("SOC_i", units="kg C/m2", list(lon,lat), mv,

##

longname="Soil C", prec="double")

## area

<- var.def.ncdf("Area", units="m2", list(lon,lat), mv,

##

longname="grid_area", prec="double")

## dC_Single <- var.def.ncdf("dC_Single", units="kg C/m2", list(lon,lat), mv,

##

longname="Single Step", prec="double")

## dC_Multi <- var.def.ncdf("dC_Multi", units="kg C/m2", list(lon,lat), mv,

##

longname="Multi Step", prec="double")

##

## fname <- '../data/Crowther_dSOC_35y.nc'

## ncnew <- create.ncdf( fname, list(LATIXY, LONGXY, SOC_i, area, dC_Single, dC_Multi) )

##

## # Write some values to this variable on disk.

37

Page 61

Figures and page graphics, page 61

## put.var.ncdf( ncnew, LATIXY, LAT)

## put.var.ncdf( ncnew, LONGXY, LON)

## put.var.ncdf( ncnew, SOC_i,

as.array(gridSOC))

## put.var.ncdf( ncnew, area,

as.array(gridArea))

## put.var.ncdf( ncnew, dC_Single,as.array(gridSingle))

## put.var.ncdf( ncnew, dC_Multi ,as.array(gridMulti))

##

## att.put.ncdf( ncnew, 0, "created_on",date()

,prec=NA,verbose=FALSE,definemode=FALSE )

## att.put.ncdf( ncnew, 0, "created_by","Will Wieder",prec=NA,verbose=FALSE,definemode=FALSE )

## att.put.ncdf( ncnew, 0, "created_from",fin

,prec=NA,verbose=FALSE,definemode=FALSE )

## att.put.ncdf( ncnew, 0, "created_with",file

,prec=NA,verbose=FALSE,definemode=FALSE )

##

## close.ncdf(ncnew)

##

## print('-------Wrote out .nc files-----------')

## print(ncnew)

Main analysis script

sessionInfo

()

R version 3.2.2 (2015-08-14)

Platform: x86_64-apple-darwin13.4.0 (64-bit)

Running under: OS X 10.10.5 (Yosemite)

locale:

[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:

[1] stats

graphics grDevices utils

datasets methods

base

other attached packages:

[1] ncdf4_1.15

xlsx_0.5.7

xlsxjars_0.6.1 rJava_0.9-7

[5] deSolve_1.12

lme4_1.1-10

Matrix_1.2-3

MASS_7.3-45

[9] reshape2_1.4.1 pander_0.6.0

plyr_1.8.3

ggplot2_2.0.0

loaded via a namespace (and not attached):

[1] Rcpp_0.12.2

knitr_1.11

magrittr_1.5

splines_3.2.2

[5] munsell_0.4.2

colorspace_1.2-6 lattice_0.20-33 minqa_1.2.4

[9] stringr_1.0.0

tools_3.2.2

grid_3.2.2

gtable_0.1.2

[13] nlme_3.1-122

htmltools_0.2.6 yaml_2.1.13

digest_0.6.8

[17] nloptr_1.0.4

formatR_1.2.1

evaluate_0.8

rmarkdown_0.8.1

[21] labeling_0.3

stringi_1.0-1

scales_0.3.0

cat

(

readLines

(

'../R/CrowtherFieldWarmingScript.R'

),

sep =

'\n'

)

library(ggplot2) #make pretty plots

library(plyr) #deal with data frames nicely

library(pander) #format tables

panderOptions('table.split.table', Inf) #do not let pander split tables because bad numbering

library(reshape2) #deal with data frames nicely

38

Page 62

Figures and page graphics, page 62

library(MASS) #model selection

library(lme4) #random vs fixed effects model

library(deSolve) #solve ode

library(xlsx) #read in excel files

source('../R/bootStrap.fn.R')

source('../R/readSamples.R')

source('../R/readStudyMeans.R')

verbose <- FALSE

##Helper functions

shuffle.sample <- function(data){

idCol <- setdiff(names(data), c('C.warmed', 'C.control'))

return(ddply(data, idCol, summarize,

C.warmed=sample(C.warmed, size=length(Study)),

C.control=sample(C.control, size=length(Study))))

}

pullPvalue <- function(temp.lm){

fstatArr <- summary(temp.lm)$fstatistic

return(pf(fstatArr[1], fstatArr[2], fstatArr[3], lower.tail = FALSE))

}

##Read in data

studyMeta <- read.xlsx2('../data/Soil Data Compiled_January 26.xlsx',

sheetIndex=2, colIndex=c(1, 9,10,11, 13, 16))

names(studyMeta) <- c('Study', 'MAP', 'MAT', 'Biome', 'pH', 'perClay')

studyMeta <- studyMeta[studyMeta$Study != '',]

studyNames <- read.xlsx2('../data/Soil Data Compiled_January 26.xlsx',

sheetIndex=7)

names(studyNames) <- c('Study', 'Study Description')

data.sample <- readSamples()

data.study <- readStudyMeans()

if(!identical( setdiff(studyMeta$Study, data.sample$Study),

setdiff(data.sample$Study, studyMeta$Study)) |

!identical(setdiff(studyMeta$Study, studyNames$Study),

setdiff(studyNames$Study, studyMeta$Study))){

stop('study names do not match')

}

##Convert from g cm^-3 to kg m^-3

data.sample[, c('C.warmed', 'C.control')] <- data.sample[, c('C.warmed', 'C.control')] * 1e3

data.study[, c('bulk_density.warmed', 'C.sd.warmed', 'C.warmed', 'bulk_density.control',

'C.sd.control', 'C.control', 'dC', 'dC.sd', 'dC.perDegYr', 'dC.perDegYr.sd',

'C.se.control', 'C.se.warmed', 'dC.perDegYr.se')] <-

data.study[,

c('bulk_density.warmed', 'C.sd.warmed', 'C.warmed', 'bulk_density.control',

'C.sd.control', 'C.control', 'dC', 'dC.sd', 'dC.perDegYr', 'dC.perDegYr.sd',

'C.se.control', 'C.se.warmed', 'dC.perDegYr.se')] * 1e3

39

Page 63

Figures and page graphics, page 63

##Rescale data

#There is clear skew in the histograms of the years, degree-years, and carbon stocks.

#We log-transformed these variables to normalize the distribution for statistical purposes.

data.sample.plus <- merge(data.sample, studyMeta[,c('Study', 'MAT', 'MAP', 'pH', 'perClay')],

by='Study', all=TRUE)

data.sample.plus$degYr <- data.sample.plus$Years*data.sample.plus$Tdelta

fullRows <- apply(subset(data.sample.plus, select=-Study), c(1),

function(xx){all(is.finite(xx))})

if(verbose) print(sprintf('Throwing out %d samples (rows) because of missing values somewhere.',

sum(!fullRows)))

data.sample.plus <- data.sample.plus[fullRows,]

ggplot(melt(subset(data.sample.plus, select=-Study))) +

geom_histogram(aes(x=value)) + facet_wrap(~variable, scale='free')

cor(subset(data.sample.plus, select=-Study))

data.sample.plus.rescaled <- data.sample.plus

data.sample.plus.rescaled$degYr <- log(data.sample.plus.rescaled$degYr)

data.sample.plus.rescaled$Years <- log(data.sample.plus$Years)

data.sample.plus.rescaled$C.control <- log(data.sample.plus$C.control)

data.sample.plus.rescaled$C.warmed <- log(data.sample.plus$C.warmed)

data.sample.plus.rescaled[,-1] <- as.data.frame(apply(

data.sample.plus.rescaled[, -1], c(2), function(xx){

return((xx-mean(xx, na.rm=TRUE))/sd(xx, na.rm=TRUE)+1)

}))

##Construct LMER

lmer.list <- list(simple = lmer(C.warmed ~ C.control + (1|Study),

data=data.sample.plus.rescaled),

addative.dT = lmer(C.warmed~C.control+Tdelta + (1|Study),

data=data.sample.plus.rescaled),

addative.all = lmer(C.warmed~C.control+MAP+MAT+pH+degYr + perClay + (1|Study),

data=data.sample.plus.rescaled),

addative.enviro = lmer(C.warmed~C.control+MAP+MAT+pH + perClay+ (1|Study),

data=data.sample.plus.rescaled),

addative.treat = lmer(C.warmed~C.control+degYr + (1|Study),

data=data.sample.plus.rescaled),

interactive = lmer(C.warmed~C.control*degYr+ (1|Study),

data=data.sample.plus.rescaled),

interactive.dT = lmer(C.warmed~C.control*Tdelta+ (1|Study),

data=data.sample.plus.rescaled))

##Construct LM

lm.list <- list(Cw.sample = lm(C.warmed ~ C.control * degYr, data.sample),

Cw.sample.dT = lm(C.warmed ~ C.control * Tdelta, data.sample),

dC.sample = lm(C.warmed - C.control ~ C.control * degYr, data.sample),

dC.dT.sample = lm(C.warmed - C.control ~ C.control * Tdelta, data.sample),

dCperDegYr.sample = lm((C.warmed-C.control)/(Years*Tdelta) ~ C.control,

data.sample),

dCperDeg.sample = lm((C.warmed-C.control)/Tdelta ~ C.control,

40

Page 64

Figures and page graphics, page 64

data.sample),

Cw.study = lm(C.warmed ~ C.control * degYr, data.study),

Cw.study.dT = lm(C.warmed ~ C.control * Tdelta, data.study),

dC.study = lm(C.warmed - C.control ~ C.control * degYr, data.study),

dC.dT.study = lm(C.warmed - C.control ~ C.control * Tdelta, data.study),

dCperDegYr.study = lm((C.warmed-C.control)/(Years*Tdelta) ~ C.control,

data.study),

dCperDeg.study = lm((C.warmed-C.control)/Tdelta ~ C.control,

data.study))

modelFits <- ldply(lm.list,

function(xx){

data.frame(model=as.character(xx$call)[2],

data=as.character(xx$call)[3],

adjR2 = sprintf('%0.3f', summary(xx)$adj.r.squared),

pvalue=sprintf('%0.3g', pullPvalue(xx)))

})

##Sample model vs data distributions

interactive.model <- function(pars=summary(lm.list$Cw.study)$coefficients,

C.control, C.sd.control, degYr){

C_degYr.par <- rnorm(1, mean=pars['C.control:degYr', 'Estimate'],

sd=pars['C.control:degYr', 'Std. Error'])

C.par <- rnorm(1, mean=pars['C.control', 'Estimate'], sd=pars['C.control', 'Std. Error'])

degYr.par <- rnorm(1, mean=pars['degYr', 'Estimate'], sd=pars['degYr', 'Std. Error'])

inter.par <- rnorm(1, mean=pars['(Intercept)', 'Estimate'],

sd=pars['(Intercept)', 'Std. Error'])

model <- inter.par+ C.par*C.control + degYr.par*degYr + C_degYr.par*C.control*degYr

return(model)

}

modelData.df <- data.frame()

for(ii in 1:1000){

modelData.df <- rbind(modelData.df,

data.frame(index = 1:length(data.study$C.warmed),

rnd.data=rnorm(n=length(data.study$C.warmed),

mean=data.study$C.warmed,

sd=data.study$C.sd.warmed),

rnd.model =

interactive.model(C.control=data.study$C.control,

C.sd.control=data.study$C.sd.control,

degYr=data.study$degYr)))

}

summaryMD.df <- ddply(modelData.df, 'index', summarize,

data.mean=mean(rnd.data), data.sd=sd(rnd.data),

model.mean=mean(rnd.model), model.sd=sd(rnd.model))

##bootstrap slope

selectSize.sample <- adply(floor(seq(10, dim(data.sample)[1], length=50)), c(1),

function(xx){

ans <- bootStrap.fn(

41

Page 65

Figures and page graphics, page 65

myFormula=(C.warmed-C.control)/(Years*Tdelta) ~ C.control,

data=data.sample, nRuns=100, sampleSize=xx, numCoef=2,

shuffleFn=shuffle.sample)

ans$sampleSize <- xx

return(ans)

})

selectSize.study <- adply(3:(dim(data.study)[1]), c(1),

function(xx){

ans <- bootStrap.fn(

myFormula=(C.warmed-C.control)/(Years*Tdelta) ~ C.control,

data=data.study, nRuns=100, sampleSize=xx, numCoef=2)

ans$sampleSize <- xx

return(ans)

})

##Pull CI for parameters from subset samples

dCperDeg.boot <- bootStrap.fn(

myFormula=(C.warmed-C.control)/Tdelta ~ C.control,

data=data.sample, nRuns=1e3, sampleSize=200, numCoef=2, shuffleFn=shuffle.sample)

dCperDegYr.boot <- bootStrap.fn(

myFormula=(C.warmed-C.control)/(Years*Tdelta) ~ C.control,

data=data.sample, nRuns=1e3, sampleSize=200, numCoef=2, shuffleFn=shuffle.sample)

dCperDegYr.mod.boot <- llply(list(wk1=1/52, mon1 = 1/12, mon6 = 6/12, yr1 = 1,

yr4 = 4, yr5 = 5, yr7 = 7, yr8 = 8,

yr8.75= 8.75, yr10 = 10, yr11.6=35/3,

yr15 = 15,

yr17.5=17.5, yr20 = 20, yr25 = 25, yr30 = 30, yr35 = 35),

function(xx){

data.sample$Years.mod <- data.sample$Years

data.sample$Years.mod[data.sample$Years.mod > xx] <- xx

ans <- bootStrap.fn(

myFormula = (C.warmed-C.control)/(Years.mod*Tdelta) ~ C.control,

data=data.sample, nRuns=1e3, sampleSize=200,

numCoef=2, shuffleFn=shuffle.sample, verbose=FALSE)

return(ans)

})

parKDE <- kde2d(dCperDegYr.boot$C.control, dCperDegYr.boot$`(Intercept)`, n=100)

parBins <- melt(parKDE$z)

parBins <- subset(parBins, value > max(value)*0.01)

parBins$slope <- parKDE$x[parBins$Var1]

parBins$intercept <- parKDE$y[parBins$Var2]

parBins$alpha <- parBins$value/max(parBins$value)

parRange <- ldply(c(list(dCperDegYr = dCperDegYr.boot,

dCperDeg = dCperDeg.boot),

dCperDegYr.mod.boot), function(xx){

ans <- as.data.frame(apply(xx, c(2),

42

Page 66

Figures and page graphics, page 66

quantile, c(0.05, 0.5, 0.95)))

ans$qrt <- c(0.05, 0.5, 0.95)

return(ans)

})

names(parRange)[1:3] <- c('type','intercept', 'C')

save(file='../data/parCIforLM.RData', parRange)

Extrapolation code

cat

(

readLines

(

'../R/globalExtrapolations.R'

),

sep=

'\n'

)

###Set up

library(ncdf4)

library(ggplot2)

library(plyr)

verbose <- FALSE

dataDir <- '../data/'

readIn.tsl <- TRUE

#############################

###Read in maps

inputs.ls <- list(soilGrid=list(filename='SoilGrids_0.9x1.25.nc',

varName='OCSTHA_M',

units='tonnes ha^-1', #convertion factor 1/10 for kg m^-2

depthWeight=c(1, 1, 0, 0, 0, 0)),

#mid points c(2.5 10.0 22.5 45.0 80.0 150.0) cm

#implies 5cm, 10cm, 15cm, 30cm, 60cm, 60cm layer lengths

#take top 15cm

HWSD=list(filename='surfdata_0.9x1.25_simyr2000_c120906_HWSD_soil.nc',

varName='DOM_SOC', #dominatent mapping unit;

#alt area weighted AWT_SOC

units='kg C m^-2',

depthWeight=c(1, 0)), #0-30 cm, 30-70 cm soil layers

landfrac=list(filename='sftlf_fx_CESM1-BGC_historical_r0i0p0.nc',

varName='sftlf',

units='percent'),

gridArea=list(filename='areacella_fx_CESM1-BGC_historical_r0i0p0.nc',

varName='areacella',

units='m2'))

maps.ls <- lapply(inputs.ls, function(args){

ncin <- nc_open(sprintf('%s%s', dataDir, args$filename))

if(verbose) print(ncin)

lon <- ncvar_get(ncin, 'lon') #longitude

lat <- ncvar_get(ncin, 'lat') #longitude

ans <- ncvar_get(ncin, args$varName)

nc_close(ncin)

if(!is.null(args$depthWeight)){

ans <- apply(ans, c(1,2), function(xx){sum(args$depthWeight*xx)})

43

Page 67

Figures and page graphics, page 67

}

dimnames(ans) <- list(lon=lon, lat=lat)

ans <- as.data.frame.table(ans, stringsAsFactors=FALSE, responseName='value')

ans <- as.data.frame(lapply(ans, as.numeric))

return(ans)

})

maps.ls$landArea <- merge(maps.ls$gridArea, maps.ls$landfrac,

by=c('lon', 'lat'), suffixes=c('.area', '.perc'))

maps.ls$landArea$value <- maps.ls$landArea$value.area*maps.ls$landArea$value.perc/100

if(readIn.tsl){

#CESM1-BGC Soil Temperature

##Pre-processing in cdo

##$cdo yearmean tsl_Lmon_CESM1-BGC_rcp85_r1i1p1_200601-204912.nc

##

tsl_yrmean_CESM1-BGC_rcp85_r1i1p1_200601-204912.nc

##$cdo sellevidx,1,2,3,4 tsl_yrmean_CESM1-BGC_rcp85_r1i1p1_200601-204912.nc temp.nc

##$cdo vertmean temp.nc tsl_yrShortMean_CESM1-BGC_rcp85_r1i1p1_200601-204912.nc

ncin <- nc_open(sprintf('%stsl_yrShortMean_CESM1-BGC_rcp85_r1i1p1_200601-204912.nc',

dataDir))

if(verbose) print(ncin)

tsl <- ncvar_get(ncin, 'tsl') #units K

lon <- ncvar_get(ncin, 'lon') #longitude

lat <- ncvar_get(ncin, 'lat') #longitude

time <- ncvar_get(ncin, 'time') #days since 2005-1-1 0:0:0

nc_close(ncin)

dimnames(tsl) <- list(lon=lon, lat=lat, yr=(time/365) + 2005)

tsl <- as.data.frame.table(tsl, stringsAsFactors=FALSE, responseName='value')

tsl <- as.data.frame(lapply(tsl, as.numeric))

##Make the latitudes aggree, off by 1e-6

tsl$lat <- round(tsl$lat, 2)

maps.ls <- lapply(maps.ls, function(xx){xx$lat <- round(xx$lat, 2); return(xx)})

##Trim tsl to only cover 2015-2049

tsl <- subset(tsl, yr >= 2015 & yr <=2049)

tsl.start <- ddply(subset(tsl, yr >= min(yr) & yr < (min(yr)+10)), .(lon, lat),

summarize, value=mean(value))

tsl.end <- ddply(subset(tsl, yr > max(yr)-10 & yr <= max(yr)), .(lon, lat),

summarize, value=mean(value))

tsl.change <- merge(tsl.start, tsl.end, by=c('lon', 'lat'), suffixes=c('.inital', '.final'))

if(verbose){

print(ggplot(tsl.change) + geom_raster(aes(x=lon, y=lat, fill=value.final-value.inital)) +

labs(title='CESM-BCG temperature change'))

print(ggplot(tsl.change) + geom_histogram(aes(x=value.final-value.inital)) +

labs(title='CESM-BCG temperature change'))

}

}

44

Page 68

Figures and page graphics, page 68

if(verbose){

print(ggplot(maps.ls$soilGrid) + geom_raster(aes(x=lon, y=lat, fill=value/10)) +

scale_fill_continuous(limits=c(0, 300),low="yellow", high='red') +

labs( title='Soil Grids'))

print(ggplot(maps.ls$HWSD) + geom_raster(aes(x=lon, y=lat, fill=value)) +

scale_fill_continuous(limits=c(0, 100),low="yellow", high='red') + labs(title='HWSD'))

print(ggplot(maps.ls$landfrac) + geom_raster(aes(x=lon, y=lat, fill=value/100)) +

scale_fill_continuous(limits=c(0, 1),low="yellow", high='red') +

labs( title='Land Fraction'))

print(ggplot(maps.ls$gridArea) + geom_raster(aes(x=lon, y=lat, fill=value)) +

labs( title='Grid Area'))

print(ggplot(maps.ls$landArea) + geom_raster(aes(x=lon, y=lat, fill=value)) +

labs( title='Land Area'))

}

##########################################

##Make one dataframe to work from so that the lat-lon pair up appropreately

##########################################

commonGrid <- merge(maps.ls$landArea,

merge(maps.ls$soilGrid, maps.ls$HWSD,

by=c('lon', 'lat'), suffixes=c('.SG', '.H')),

by=c('lon', 'lat'))

if(readIn.tsl){

commonGrid <- merge(tsl.change, commonGrid,

by=c('lon', 'lat'), suffixes=c('.Dtsl', '.landArea'))

}

commonGrid <- rename(commonGrid, c('value.inital'='inital.temperature',

'value.final'='final.temperature',

'value.area'='cell.area',

'value.perc'='land.percentage',

'value'='land.area',

'value.SG'='SoilGrid.SOC', 'value.H'='HWSD.SOC'))

##Shift the units for soil grid to kg m^-2

commonGrid$SoilGrid.SOC <- commonGrid$SoilGrid.SOC/10

###Remove 0 values

##commonGrid$SoilGrid.SOC[commonGrid$SoilGrid.SOC == 0] <- NA

##commonGrid$HWSD.SOC[commonGrid$HWSD.SOC == 0] <- NA

commonGrid$allFinite <- is.finite(rowSums(subset(commonGrid, select=-HWSD.SOC))) &

commonGrid$land.area != 0

#################################

###Pull temperature normalization from CESM if needed

#################################

if(readIn.tsl){

globalCESM.dT <- with(commonGrid, sum(land.area*

(final.temperature-inital.temperature)*allFinite,

na.rm=TRUE)/sum(land.area*allFinite, na.rm=TRUE))

45

Page 69

Figures and page graphics, page 69

}else{

globalCESM.dT <- NA

}

if(verbose){

ggplot(commonGrid) + geom_raster(aes(x=lon, y=lat, fill=allFinite)) +

labs(title='Shared grid cells')

print(sprintf("Global totals: HWSD = %0.2f Pg,

SoilGrid = %0.2f Pg, inital T = %0.2f C, dT = %0.2f C",

with(commonGrid, sum(land.area*(HWSD.SOC)*allFinite, na.rm=TRUE)/1e12),

with(commonGrid, sum(land.area*(SoilGrid.SOC)*allFinite, na.rm=TRUE)/1e12),

ifelse(readIn.tsl, with(commonGrid,

sum(land.area*inital.temperature*allFinite, na.rm=TRUE)/

sum(land.area*allFinite, na.rm=TRUE))-273.15, NA),

globalCESM.dT

))

}

##############################

###Run the global extrapolation

###############################

load(sprintf('%sparCIforLM.RData', dataDir))

soilDepth <- 0.15 #in m; for HWSD it's 0.3

##Number of years we run through

runTime <- 35

dC <- function(args, step, Cstock){

#correct for soil depth but converting stocks from per area to per volume

#...and then correcting the result from per volume to per area

return(step*(args$C*Cstock/soilDepth+args$intercept)*soilDepth)

}

##Use the temperature change distribution from CESM from year 2040-2049 and 2015-2024

if(readIn.tsl){

degWarmedRate.ls <- list(oneDeg=1/runTime, twoDeg=2/runTime,

threeDeg=3/runTime, fourDeg=4/runTime,

oneDeg_CESM_normed = (commonGrid$final.temperature-

commonGrid$inital.temperature)/

globalCESM.dT*1/runTime,

twoDeg_CESM_normed = (commonGrid$final.temperature-

commonGrid$inital.temperature)/

globalCESM.dT*2/runTime,

threeDeg_CESM_normed = (commonGrid$final.temperature-

commonGrid$inital.temperature)/

globalCESM.dT*3/runTime,

fourDeg_CESM_normed = (commonGrid$final.temperature-

commonGrid$inital.temperature)/

globalCESM.dT*4/runTime)

}else{

degWarmedRate.ls <-list(oneDeg=1/runTime, twoDeg=2/runTime)

}

#Time step for each linear model type

46

Page 70

Figures and page graphics, page 70

dtime.ls <- list(wk1=1/52, mon1 = 1/12, mon6 = 6/12, yr1 = 1,

yr4 = 4, yr5 = 5, yr7 = 7, yr8 = 8,

yr8.75= 8.75, yr10 = 10, yr11.6=35/3,

yr17.5=17.5, yr20 = 20, yr25 = 25, yr30 = 30, yr35 = 35)

resultsFull <- ldply(degWarmedRate.ls, .id='warming', function(degWarmedRate){

##Calculate the SOC losses

SOC.losses <- ddply(parRange, c('type', 'qrt', 'intercept', 'C'),

function(xx){

#cat(xx$type)

C.map <- commonGrid$SoilGrid.SOC

if(grepl('^dCperDegYr$', xx$type)){

dC.map <- ldply(dtime.ls, .id=NULL, function(warmedTime){

degStep <- degWarmedRate/2*warmedTime^2

return(data.frame(degYr.mean=sum(degStep*commonGrid$land.area, na.rm=TRUE)/

sum(is.finite(degStep)*commonGrid$land.area, na.rm=TRUE),

timeStep=warmedTime,

lon=commonGrid$lon,

lat=commonGrid$lat,

value.C=C.map,

landArea=commonGrid$land.area*commonGrid$allFinite,

value.dC=dC(args=xx, step=degStep, Cstock=C.map)))

})

}else if(grepl('^dCperDeg$', xx$type)){

dC.map <- data.frame(degYr.mean=NA,

timeStep=NA,

lon=commonGrid$lon,

lat=commonGrid$lat,

value.C=C.map,

landArea=commonGrid$land.area*commonGrid$allFinite,

value.dC=dC(args=xx, step=degWarmedRate*runTime, Cstock=C.map))

}else{ ##Cap study

#print(xx$type)

#print(!(xx$type %in% names(dtime.ls)) || (runTime/dtime.ls[[xx$type]]) %% 1 != 0)

if(!(xx$type %in% names(dtime.ls)) ||

(runTime/dtime.ls[[xx$type]]) %% 1 != 0){

return(data.frame()) #don't run if you can't cover the entire period

}

runningC <- C.map

degStep <- degWarmedRate/2*dtime.ls[[xx$type]]^2 #cumulative degYr for each time step

for(ii in seq(0, runTime-1, by=dtime.ls[[xx$type]])){

runningC <- runningC + dC(args=xx, step=degStep, Cstock=runningC)

}

dC.map <- data.frame(degYr.mean=mean(degStep, na.rm=TRUE),

timeStep=dtime.ls[[xx$type]],

lon=commonGrid$lon,

lat=commonGrid$lat,

value.C=C.map,

landArea=commonGrid$land.area*commonGrid$allFinite,

value.dC=runningC-C.map)

}

47

Page 71

Figures and page graphics, page 71

##max loss is the inital carbon stock

dC.map$value.dC[is.finite(dC.map$value.C+dC.map$value.dC) & dC.map$value.dC +

dC.map$value.C < 0] <-

-1*dC.map$value.C[is.finite(dC.map$value.C+dC.map$value.dC) & dC.map$value.dC +

dC.map$value.C < 0]

#dC.map <- merge(dC.map, commonGrid[,c('lon', 'lat', 'land.area', 'allFinite')])

return(ddply(dC.map, c('timeStep', 'degYr.mean'),

summarize, dC=sum(value.dC*landArea, na.rm=TRUE)/1e12))

}) #end SOC.losses

}) #end resultsTable

resultsTable <- merge(subset(resultsFull, qrt==0.95,

select=c('warming', 'type', 'timeStep', 'degYr.mean', 'dC')),

merge(subset(resultsFull, qrt==0.05,

select=c('warming', 'type', 'timeStep','degYr.mean', 'dC')),

subset(resultsFull, qrt==0.50,

select=c('warming', 'type', 'timeStep', 'degYr.mean', 'dC')),

by=c('warming', 'type', 'degYr.mean', 'timeStep'), suffixes=c('_qrt05', '_qrt50')))

resultsTable <- rename(resultsTable, c('dC'='dC_qrt95'))

resultsTable$dodge.timeStep <- resultsTable$timeStep +

rnorm(n=length(resultsTable$timeStep), mean=0, sd=0.1)

deg.key <- list("fourDeg"=4, "oneDeg"=1,

"threeDeg"=3, "twoDeg"=2)

resultsTable$globalWarming <- as.factor(unlist(lapply(strsplit(

as.character(resultsTable$warming), split="_"), function(xx){deg.key[[xx[[1]]]]})))

resultsTable$warmingDistribution <- unlist(lapply(strsplit(

as.character(resultsTable$warming), split="_"),

function(xx){ifelse(length(xx) > 1, 'CESM', 'unif')}))

save(file='../data/globalExtrapolations.RData', resultsTable, resultsFull)

#####################

##Make plots

degYrSingle.pl <- ggplot(subset(resultsTable, grepl('dCperDegYr', type))) +

geom_point(aes(x=timeStep, y=dC_qrt50)) +

geom_errorbar(aes(x=timeStep, y=dC_qrt50, ymin=dC_qrt05, ymax=dC_qrt95)) +

facet_wrap(~warming, nrow=2) +

labs(title='dC per degree-year across single time steps', x='years', y='Pg C')

ggsave(degYrSingle.pl, filename='../figs/degYrSingleTimeStep.pdf')

degYr.pl <- ggplot(subset(resultsTable, grepl('dCperDegYr', type))) +

geom_point(aes(x=degYr.mean, y=dC_qrt50, color=grepl('CESM', warming))) +

geom_ribbon(aes(x=degYr.mean, y=dC_qrt50, ymin=dC_qrt05, ymax=dC_qrt95,

fill=grepl('CESM', warming)), alpha=0.3) +

scale_fill_discrete(guide=guide_legend(title='CESM'))+guides(color=FALSE) +

labs(title='dC per degree-year across single time steps', x='degree-years', y='Pg C')

ggsave(degYr.pl, filename='../figs/degYr.pdf')

degSingle.pl <- ggplot(subset(resultsTable, 'dCperDeg'== type)) +

geom_point(aes(x=warming, y=dC_qrt50)) +

geom_errorbar(aes(x=warming, y=dC_qrt50, ymin=dC_qrt05, ymax=dC_qrt95)) +

48

Page 72

Figures and page graphics, page 72

theme(axis.text.x = element_text(angle = 90, hjust = 1)) + labs(title='dC per degree')

ggsave(degSingle.pl, filename='../figs/degSingleTimeStep.pdf')

degYrStepInt.pl <- ggplot(subset(resultsTable, !grepl('dCperDeg', type))) +

geom_line(aes(x=timeStep, y=dC_qrt50, group=warming, linetype=warmingDistribution)) +

geom_ribbon(aes(x=timeStep, y=dC_qrt50, ymin=dC_qrt05, ymax=dC_qrt95, group=warming),

alpha=0.2) +

facet_wrap(~globalWarming)

ggsave(degYrStepInt.pl, filename='../figs/degYrMultiTimeStep.pdf')

##See Crowther2016Sup.Rmd for figure code

write.csv(file='../data/degYrMultiTimeStepSimple.csv',

subset(resultsTable, !grepl('dCperDeg', type) & globalWarming %in% c('1', '2')))

singleStep.pl <- ggplot(subset(resultsTable, grepl('dCperDeg', type) &

globalWarming %in% c(1,2) &

(is.na(timeStep) | timeStep == 35))) +

geom_point(aes(x=globalWarming, y=dC_qrt50, color=type, shape=warmingDistribution), cex=5) +

geom_errorbar(aes(x=globalWarming, y=dC_qrt50, color=type, linetype=warmingDistribution,

ymin=dC_qrt05, ymax=dC_qrt95)) +

labs(title='Soil carbon losses at 35 years, one step', x='Average temperature increase',

y='Global change in soil carbon [Pg C]')

ggsave(singleStep.pl, filename='../figs/singleStep.pdf')

write.csv(file='../data/singleStep.csv',

subset(resultsTable, grepl('dCperDeg', type) &

globalWarming %in% c('1', '2') &

(is.na(timeStep) | timeStep == 35), -dodge.timeStep))

########

##Make ncdf file for pretty maps

Cshift <- data.frame(lon=commonGrid$lon, lat=commonGrid$lat,

SOC=commonGrid$SoilGrid.SOC,

landArea=commonGrid$land.area, #*commonGrid$allFinite,

dC.single=dC(args=subset(parRange, type=='dCperDegYr' & qrt==0.5),

step=degWarmedRate.ls$oneDeg_CESM_normed/2*35^2,

Cstock=commonGrid$SoilGrid.SOC))

runningC <- Cshift$SOC

degStep <- degWarmedRate.ls$oneDeg_CESM_normed/2*1^2 #cumulative degYr for each time step

for(ii in seq(0, runTime-1, by=1)){

runningC <- runningC + dC(args=subset(parRange, type=='yr1' & qrt==0.5),

step=degStep, Cstock=runningC)

}

Cshift$dC.multi <- runningC-Cshift$SOC

negFlag <- is.finite(Cshift[, 'dC.single'] + Cshift[, 'SOC']) &

(Cshift[, 'dC.single'] + Cshift[, 'SOC'] < 0 )

Cshift[negFlag, 'dC.single'] <- -1*Cshift[negFlag, 'SOC']

negFlag <- is.finite(Cshift[, 'dC.multi'] + Cshift[, 'SOC']) &

(Cshift[, 'dC.multi'] + Cshift[, 'SOC'] < 0 )

Cshift[negFlag, 'dC.multi'] <- -1*Cshift[negFlag, 'SOC']

cat('Single step: ', sum(Cshift$dC.single*Cshift$landArea, na.rm=TRUE)/1e12, '=?=',

49

Page 73

Figures and page graphics, page 73

unlist(subset(resultsTable, grepl('dCperDegYr', type) &

globalWarming %in% c(1, 2) &

(is.na(timeStep) | timeStep == 35) &

warming=='oneDeg_CESM_normed', dC_qrt50)),

'\nOne yr step: ', sum(Cshift$dC.multi*Cshift$landArea, na.rm=TRUE)/1e12, '=?=',

unlist(subset(resultsTable, !grepl('dCperDeg', type) & globalWarming %in% c(1, 2) &

type=='yr1' & warming=='oneDeg_CESM_normed', dC_qrt50)), '\n')

write.csv(file='Crowther_dSOC_35yr.csv', Cshift)

Global carbon loss map code

cat

(

readLines

(

'../ncl/plot_warming_loss.ncl'

),

sep=

'\n'

)

; July 2016

; Will Wieder

; plots changes in SOC stocks from Kathe's analyses.

; *********************************************************************

load "$NCARG_LIB/ncarg/nclscripts/csm/gsn_code.ncl"

load "$NCARG_LIB/ncarg/nclscripts/csm/gsn_csm.ncl"

load "$NCARG_LIB/ncarg/nclscripts/csm/contributed.ncl"

load "$NCARG_LIB/ncarg/nclscripts/csm/shea_util.ncl"

begin

;---------------------------------------------------------------

;Read in input variables

;--------------------------------------------------------------

path

= (/"/project/tss/wwieder/soilCN/global_run/warming/"/)

fin

= path + "Crowther_dSOC_35y.nc"

data

= addfile(fin, "r")

SGRD_SOC

= data->SOC_i(:,:)

; SoilGrids SOC pools, kgC/m2, 0-15 cm

area

= data->Area

dC_single = data->dC_Single

dC_multi

= data->dC_Multi

glob_SOCi = sum(SGRD_SOC * area) / 1.e12

glob_dC_s = sum(dC_single * area) / 1.e12

glob_dC_m = sum(dC_multi * area) / 1.e12

print(glob_SOCi)

print(glob_dC_s)

print(glob_dC_m)

end

;************************************************

; plot SOC losses

; Fig. 3 in manuscript

;************************************************

fout = path + "Crowther_dSOC_35y_step_wZERO"

50

Page 74

Figures and page graphics, page 74

wks = gsn_open_wks("ps" , fout); open a X11 or ps file

res

= True

res@gsnDraw

= False

res@gsnFrame

= False

res@cnSmoothingOn

= False

res@mpProjection

= "Robinson"

res@mpOutlineOn

= True

res@lbOrientation

= "Horizontal"

res@mpPerimOn

= False

res@mpGridAndLimbOn

= True

res@mpGridLatSpacingF

= 180

res@mpGridLonSpacingF

= 180

res@mpGridLineThicknessF

= 0.

res@mpGridLineColor

= "transparent"

res@mpGridMaskMode

= "MaskLand"

gsn_define_colormap(wks,"BlWhRe")

res@gsnSpreadColors

= True

; use full colormap

res@gsnSpreadColorEnd

= 68

; start with last color

; res@gsnSpreadColorStart = 2

; start with last color

gsn_reverse_colormap(wks)

; reverse colormap

res@gsnLeftString

= ""

res@gsnRightString

= ""

res@cnFillOn

= True

res@cnLinesOn

= False

; Turn lines off

res@cnLineLabelsOn

= False

; Turn labels off

res@cnLevelSelectionMode = "ManualLevels"

res@cnMinLevelValF

= -17 ; -3.75*5

res@cnMaxLevelValF

= 5. ; 0.50*5

res@cnLevelSpacingF

= 2. ; 0.5*5

res@lbLabelStrings

= (/-17.,-15.,-13.,-11.,-9.,-7,-5.,-3.,-1,1.,3.,5./)

; res@lbLabelStrings

= (/-17.,-13.,-9.,-5.,-1.,1.,5/)

res@lbLabelFontHeightF

= 0.025

; make labels larger

res@lbTitleOn

= True

; turn on title

res@lbTitlePosition

= "Bottom"

res@lbTitleString

= "kg C m~S~-2~N "

res@lbTitleFontHeightF

= .030

; make title smaller

res@pmLabelBarOrthogonalPosF = .05

; move whole thing down

res@vpXF

= 0.1

; make plot bigger

res@vpYF

= 0.9

res@vpWidthF

= 0.8

res@vpHeightF

= 0.8

plot

= gsn_csm_contour_map(wks,dC_single,res)

resP

= True

; modify the panel plot

resP@gsnFrame

= False

; don't advance panel plot

gsn_panel(wks,plot,(/1,1/),resP)

; now draw as one plot

frame(wks)

print("wrote "+fout+".ps")

51

Page 75

Figures and page graphics, page 75

delete([/plot, res, resP, wks,fout/])

52


Document Outline