sapor 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/Area Class Diagram.dia +0 -0
  3. data/Area Class Diagram.png +0 -0
  4. data/Class Diagram.dia +0 -0
  5. data/Class Diagram.png +0 -0
  6. data/Example-Catalonia.md +361 -0
  7. data/Example-Flanders.md +486 -0
  8. data/Example-Greece.md +25 -0
  9. data/Example-Oslo.md +678 -0
  10. data/Example-UnitedKingdom-Referendum.md +132 -0
  11. data/Examples.md +15 -0
  12. data/LICENSE +674 -0
  13. data/README.md +103 -0
  14. data/Rakefile +18 -0
  15. data/Technical Documentation.md +14 -0
  16. data/bin/create_installation_package.sh +49 -0
  17. data/bin/install.sh +45 -0
  18. data/bin/sapor.rb +24 -0
  19. data/bin/sapor.sh +106 -0
  20. data/data/hu/hungary-2014.txt +1680 -0
  21. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  22. data/data/hu/hungary_2014_to_psv.rb +80 -0
  23. data/data/hu/index-2014.txt +106 -0
  24. data/data/pl/2015-gl-lis-okr.csv +42 -0
  25. data/data/pl/poland_2015_to_psv.rb +79 -0
  26. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  27. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  28. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  29. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  30. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  31. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  32. data/data/uk/united_kingdom_2015.txt +651 -0
  33. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  34. data/data/uk/united_kingdom_2017.txt +651 -0
  35. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  36. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  37. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  38. data/lib/sapor.rb +150 -0
  39. data/lib/sapor/binomials_cache.rb +45 -0
  40. data/lib/sapor/combinations_distribution.rb +222 -0
  41. data/lib/sapor/denominators.rb +67 -0
  42. data/lib/sapor/dichotomies.rb +138 -0
  43. data/lib/sapor/dichotomy.rb +164 -0
  44. data/lib/sapor/first_past_the_post.rb +82 -0
  45. data/lib/sapor/largest_remainder.rb +118 -0
  46. data/lib/sapor/log4r_logger.rb +49 -0
  47. data/lib/sapor/log_facade.rb +40 -0
  48. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  49. data/lib/sapor/multi_district_proportional.rb +123 -0
  50. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  51. data/lib/sapor/number_formatter.rb +45 -0
  52. data/lib/sapor/options.rb +73 -0
  53. data/lib/sapor/poll.rb +286 -0
  54. data/lib/sapor/polychotomy.rb +200 -0
  55. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  56. data/lib/sapor/referendum_polychotomy.rb +165 -0
  57. data/lib/sapor/regional_data/area.rb +82 -0
  58. data/lib/sapor/regional_data/austria.rb +84 -0
  59. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  60. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  61. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  62. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  63. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  64. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  65. data/lib/sapor/regional_data/belgium.rb +97 -0
  66. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  67. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  68. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  69. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  70. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  71. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  72. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  73. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  74. data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
  75. data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
  76. data/lib/sapor/regional_data/catalonia.rb +96 -0
  77. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  78. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  79. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  80. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  81. data/lib/sapor/regional_data/denmark.rb +128 -0
  82. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  83. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  84. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  85. data/lib/sapor/regional_data/estonia.rb +88 -0
  86. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  87. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  88. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  89. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  90. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  91. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  92. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  93. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  94. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  95. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  96. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  97. data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
  98. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  99. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  100. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  101. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  102. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  103. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  104. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  105. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  106. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  107. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  108. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  109. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  110. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  111. data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
  112. data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
  113. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  114. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  116. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  117. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  118. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  119. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  120. data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
  121. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  122. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  123. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  124. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  125. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  126. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  127. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  128. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  129. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  130. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  131. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  132. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  133. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  134. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  135. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  136. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  138. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  140. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  141. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  142. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  143. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  144. data/lib/sapor/regional_data/finland.rb +107 -0
  145. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  146. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  147. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  148. data/lib/sapor/regional_data/flanders.rb +115 -0
  149. data/lib/sapor/regional_data/france.rb +38 -0
  150. data/lib/sapor/regional_data/greece.rb +92 -0
  151. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  152. data/lib/sapor/regional_data/hungary.rb +116 -0
  153. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  154. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  155. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  156. data/lib/sapor/regional_data/iceland.rb +133 -0
  157. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  158. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  159. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  160. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  161. data/lib/sapor/regional_data/latvia.rb +112 -0
  162. data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
  163. data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
  164. data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
  165. data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
  166. data/lib/sapor/regional_data/luxembourg.rb +82 -0
  167. data/lib/sapor/regional_data/netherlands.rb +108 -0
  168. data/lib/sapor/regional_data/norway.rb +425 -0
  169. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  170. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  171. data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
  172. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  173. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  174. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  175. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  176. data/lib/sapor/regional_data/poland.rb +125 -0
  177. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  178. data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
  179. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  180. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  181. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  182. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  183. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  184. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  185. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  186. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  187. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  188. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  189. data/lib/sapor/regional_data/portugal.rb +101 -0
  190. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  191. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  192. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  193. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  194. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  195. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  196. data/lib/sapor/regional_data/slovakia.rb +81 -0
  197. data/lib/sapor/regional_data/slovenia.rb +114 -0
  198. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  199. data/lib/sapor/regional_data/spain.rb +136 -0
  200. data/lib/sapor/regional_data/sweden.rb +92 -0
  201. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  202. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  203. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  204. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  205. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  206. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  207. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  208. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  209. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  210. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  211. data/lib/sapor/regional_data/utopia.rb +66 -0
  212. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  213. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  214. data/lib/sapor/regional_data/wallonia.rb +112 -0
  215. data/lib/sapor/representatives_polychotomy.rb +338 -0
  216. data/lib/sapor/single_district_proportional.rb +75 -0
  217. data/sapor.gemspec +35 -0
  218. data/spec/integration/area_spec.rb +28 -0
  219. data/spec/integration/poll_spec.rb +112 -0
  220. data/spec/integration/sample.poll +8 -0
  221. data/spec/spec_helper.rb +31 -0
  222. data/spec/unit/area_spec.rb +115 -0
  223. data/spec/unit/austria_spec.rb +76 -0
  224. data/spec/unit/belgium_brussels_spec.rb +58 -0
  225. data/spec/unit/belgium_flanders_spec.rb +62 -0
  226. data/spec/unit/belgium_spec.rb +26 -0
  227. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  228. data/spec/unit/binomials_cache_spec.rb +34 -0
  229. data/spec/unit/catalonia_spec.rb +74 -0
  230. data/spec/unit/combinations_distribution_spec.rb +241 -0
  231. data/spec/unit/denmark_spec.rb +56 -0
  232. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  233. data/spec/unit/denmark_with_e_spec.rb +57 -0
  234. data/spec/unit/denmark_with_p_spec.rb +57 -0
  235. data/spec/unit/denominators_spec.rb +40 -0
  236. data/spec/unit/dichotomies_spec.rb +154 -0
  237. data/spec/unit/dichotomy_spec.rb +320 -0
  238. data/spec/unit/estonia_spec.rb +65 -0
  239. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  240. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  241. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  242. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  243. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  244. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  245. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  246. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  247. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  248. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  249. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  250. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  251. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  252. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  253. data/spec/unit/european_union_austria_spec.rb +61 -0
  254. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  255. data/spec/unit/european_union_croatia_spec.rb +59 -0
  256. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  257. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  258. data/spec/unit/european_union_denmark_spec.rb +61 -0
  259. data/spec/unit/european_union_estonia_spec.rb +93 -0
  260. data/spec/unit/european_union_finland_spec.rb +75 -0
  261. data/spec/unit/european_union_flanders_spec.rb +56 -0
  262. data/spec/unit/european_union_france_2019_spec.rb +73 -0
  263. data/spec/unit/european_union_france_spec.rb +73 -0
  264. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  265. data/spec/unit/european_union_germany_spec.rb +90 -0
  266. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  267. data/spec/unit/european_union_greece_spec.rb +148 -0
  268. data/spec/unit/european_union_hungary_spec.rb +57 -0
  269. data/spec/unit/european_union_ireland_spec.rb +72 -0
  270. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  271. data/spec/unit/european_union_italy_spec.rb +69 -0
  272. data/spec/unit/european_union_latvia_spec.rb +76 -0
  273. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  274. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  275. data/spec/unit/european_union_malta_spec.rb +60 -0
  276. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  277. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  278. data/spec/unit/european_union_poland_spec.rb +69 -0
  279. data/spec/unit/european_union_portugal_spec.rb +77 -0
  280. data/spec/unit/european_union_romania_spec.rb +67 -0
  281. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  282. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  283. data/spec/unit/european_union_spain_spec.rb +129 -0
  284. data/spec/unit/european_union_sweden_spec.rb +89 -0
  285. data/spec/unit/finland_spec.rb +65 -0
  286. data/spec/unit/finland_with_sin_spec.rb +67 -0
  287. data/spec/unit/first_past_the_post_spec.rb +54 -0
  288. data/spec/unit/flanders_spec.rb +70 -0
  289. data/spec/unit/france_spec.rb +32 -0
  290. data/spec/unit/greece_spec.rb +118 -0
  291. data/spec/unit/hungary_spec.rb +132 -0
  292. data/spec/unit/iceland_spec.rb +57 -0
  293. data/spec/unit/largest_remainder_spec.rb +79 -0
  294. data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
  295. data/spec/unit/latvia_kpv_par_spec.rb +38 -0
  296. data/spec/unit/latvia_kpv_spec.rb +38 -0
  297. data/spec/unit/latvia_spec.rb +60 -0
  298. data/spec/unit/luxembourg_spec.rb +54 -0
  299. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  300. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  301. data/spec/unit/netherlands_spec.rb +107 -0
  302. data/spec/unit/norway_spec.rb +64 -0
  303. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  304. data/spec/unit/number_formatter_spec.rb +173 -0
  305. data/spec/unit/poland_spec.rb +62 -0
  306. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  307. data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
  308. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  309. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  310. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  311. data/spec/unit/poll_spec.rb +110 -0
  312. data/spec/unit/portugal_spec.rb +66 -0
  313. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  314. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  315. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  316. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  317. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  318. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  319. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  320. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  321. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  322. data/spec/unit/slovakia_spec.rb +99 -0
  323. data/spec/unit/slovenia_spec.rb +80 -0
  324. data/spec/unit/spain_spec.rb +101 -0
  325. data/spec/unit/sweden_20140914_spec.rb +112 -0
  326. data/spec/unit/sweden_spec.rb +113 -0
  327. data/spec/unit/united_kingdom_spec.rb +65 -0
  328. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  329. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  330. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  331. data/spec/unit/wallonia_spec.rb +70 -0
  332. metadata +490 -0
@@ -0,0 +1,100 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ SOURCE = '2015-gl-lis-okr.csv'.freeze
21
+ TARGET = '../../lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv'.freeze
22
+
23
+ K15_PARTY = 'Kukiz’15'.freeze
24
+ N_PARTY = '.Nowoczesna'.freeze
25
+ PO_PARTY = 'Platforma Obywatelska'.freeze
26
+ PSL_PARTY = 'Polskie Stronnictwo Ludowe'.freeze
27
+ R_PARTY = 'Lewica Razem'.freeze
28
+ ZL_PARTY = 'Zjednoczona Lewica'.freeze
29
+ PARTIES = ['Zjednoczona Prawica',
30
+ PO_PARTY,
31
+ R_PARTY,
32
+ 'Konfederacja',
33
+ PSL_PARTY,
34
+ ZL_PARTY,
35
+ K15_PARTY,
36
+ N_PARTY,
37
+ 'Bezpartyjni Samorządowcy',
38
+ 'Stonoga Partia Polska',
39
+ 'Ruch Społeczny Rzeczypospolitej Polskiej',
40
+ 'Zjednoczeni dla Śląska',
41
+ 'Samoobrona',
42
+ 'Grzegorz Braun „Szczęść Boże!”',
43
+ 'Kongres Nowej Prawicy',
44
+ 'Mniejszość Niemiecka',
45
+ 'Obywatele do Parlamentu']
46
+
47
+ File.open(TARGET, 'w') do |output|
48
+ output.puts '# Statistical Analysis of Polling Results (SAPoR)'
49
+ output.puts '# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>'
50
+ output.puts '#'
51
+ output.puts '# This file is part of SAPoR.'
52
+ output.puts '#'
53
+ output.puts '# SAPoR is free software: you can redistribute it and/or' \
54
+ ' modify it under the'
55
+ output.puts '# terms of the GNU General Public License as published by the' \
56
+ ' Free Software'
57
+ output.puts '# Foundation, either version 3 of the License, or (at your' \
58
+ ' option) any later'
59
+ output.puts '# version.'
60
+ output.puts '#'
61
+ output.puts '# SAPoR is distributed in the hope that it will be useful, but' \
62
+ ' WITHOUT ANY'
63
+ output.puts '# WARRANTY; without even the implied warranty of' \
64
+ ' MERCHANTABILITY or FITNESS FOR'
65
+ output.puts '# A PARTICULAR PURPOSE. See the GNU General Public License' \
66
+ ' for more details.'
67
+ output.puts '#'
68
+ output.puts '# You can find a copy of the GNU General Public License in' \
69
+ ' /doc/gpl.txt'
70
+ output.puts '#'
71
+ File.open(SOURCE).each do |line|
72
+ next if line.chomp.start_with?('Siedziba OKW')
73
+ if line.chomp.empty?
74
+ output.puts
75
+ else
76
+ elements = line.chomp.split(',').map(&:strip)
77
+ district = elements[0]
78
+ ko_no = 0
79
+ kp_no = 0
80
+ l_no = 0
81
+ PARTIES.each_with_index do |p, i|
82
+ unless elements[i+1].nil? || elements[i+1].empty?
83
+ votes = elements[i+1].delete('.')
84
+ if p == R_PARTY || p == ZL_PARTY
85
+ l_no += votes.to_i
86
+ elsif p == PO_PARTY || p == N_PARTY
87
+ ko_no += votes.to_i
88
+ elsif p == K15_PARTY || p == PSL_PARTY
89
+ kp_no += votes.to_i
90
+ else
91
+ output.puts "#{district} | #{p} | #{votes}"
92
+ end
93
+ end
94
+ end
95
+ output.puts "#{district} | Koalicja Obywatelska | #{ko_no}"
96
+ output.puts "#{district} | Koalicja Polska | #{kp_no}"
97
+ output.puts "#{district} | Lewica | #{l_no}"
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,92 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ SOURCE = '2015-gl-lis-okr.csv'.freeze
21
+ TARGET = '../../lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv'.freeze
22
+
23
+ N_PARTY = '.Nowoczesna'.freeze
24
+ PO_PARTY = 'Platforma Obywatelska'.freeze
25
+ ZL_PARTY = 'Zjednoczona Lewica'.freeze
26
+ PARTIES = ['Prawo i Sprawiedliwość',
27
+ PO_PARTY,
28
+ 'Lewica Razem',
29
+ 'KORWiN',
30
+ 'Polskie Stronnictwo Ludowe',
31
+ ZL_PARTY,
32
+ 'Kukiz’15',
33
+ N_PARTY,
34
+ 'JOW Bezpartyjni',
35
+ 'Stonoga Partia Polska',
36
+ 'Ruch Społeczny Rzeczypospolitej Polskiej',
37
+ 'Zjednoczeni dla Śląska',
38
+ 'Samoobrona',
39
+ 'Grzegorz Braun „Szczęść Boże!”',
40
+ 'Kongres Nowej Prawicy',
41
+ 'Mniejszość Niemiecka',
42
+ 'Obywatele do Parlamentu']
43
+
44
+ File.open(TARGET, 'w') do |output|
45
+ output.puts '# Statistical Analysis of Polling Results (SAPoR)'
46
+ output.puts '# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>'
47
+ output.puts '#'
48
+ output.puts '# This file is part of SAPoR.'
49
+ output.puts '#'
50
+ output.puts '# SAPoR is free software: you can redistribute it and/or' \
51
+ ' modify it under the'
52
+ output.puts '# terms of the GNU General Public License as published by the' \
53
+ ' Free Software'
54
+ output.puts '# Foundation, either version 3 of the License, or (at your' \
55
+ ' option) any later'
56
+ output.puts '# version.'
57
+ output.puts '#'
58
+ output.puts '# SAPoR is distributed in the hope that it will be useful, but' \
59
+ ' WITHOUT ANY'
60
+ output.puts '# WARRANTY; without even the implied warranty of' \
61
+ ' MERCHANTABILITY or FITNESS FOR'
62
+ output.puts '# A PARTICULAR PURPOSE. See the GNU General Public License' \
63
+ ' for more details.'
64
+ output.puts '#'
65
+ output.puts '# You can find a copy of the GNU General Public License in' \
66
+ ' /doc/gpl.txt'
67
+ output.puts '#'
68
+ File.open(SOURCE).each do |line|
69
+ next if line.chomp.start_with?('Siedziba OKW')
70
+ if line.chomp.empty?
71
+ output.puts
72
+ else
73
+ elements = line.chomp.split(',').map(&:strip)
74
+ district = elements[0]
75
+ ko_no = 0
76
+ PARTIES.each_with_index do |p, i|
77
+ unless elements[i+1].nil? || elements[i+1].empty?
78
+ votes = elements[i+1].delete('.')
79
+ if p == ZL_PARTY
80
+ output.puts "#{district} | Sojusz Lewicy Demokratycznej | #{votes}"
81
+ output.puts "#{district} | Wiosna | #{votes}"
82
+ elsif p == PO_PARTY || p == N_PARTY
83
+ ko_no += votes.to_i
84
+ else
85
+ output.puts "#{district} | #{p} | #{votes}"
86
+ end
87
+ end
88
+ end
89
+ output.puts "#{district} | Koalicja Obywatelska | #{ko_no}"
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,84 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ SOURCE = '2015-gl-lis-okr.csv'.freeze
21
+ TARGET = '../../lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv'.freeze
22
+ ZL_PARTY = 'Zjednoczona Lewica'.freeze
23
+ PARTIES = ['Prawo i Sprawiedliwość',
24
+ 'Platforma Obywatelska',
25
+ 'Lewica Razem',
26
+ 'KORWiN',
27
+ 'Polskie Stronnictwo Ludowe',
28
+ ZL_PARTY,
29
+ 'Kukiz’15',
30
+ '.Nowoczesna',
31
+ 'JOW Bezpartyjni',
32
+ 'Stonoga Partia Polska',
33
+ 'Ruch Społeczny Rzeczypospolitej Polskiej',
34
+ 'Zjednoczeni dla Śląska',
35
+ 'Samoobrona',
36
+ 'Grzegorz Braun „Szczęść Boże!”',
37
+ 'Kongres Nowej Prawicy',
38
+ 'Mniejszość Niemiecka',
39
+ 'Obywatele do Parlamentu']
40
+
41
+ File.open(TARGET, 'w') do |output|
42
+ output.puts '# Statistical Analysis of Polling Results (SAPoR)'
43
+ output.puts '# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>'
44
+ output.puts '#'
45
+ output.puts '# This file is part of SAPoR.'
46
+ output.puts '#'
47
+ output.puts '# SAPoR is free software: you can redistribute it and/or' \
48
+ ' modify it under the'
49
+ output.puts '# terms of the GNU General Public License as published by the' \
50
+ ' Free Software'
51
+ output.puts '# Foundation, either version 3 of the License, or (at your' \
52
+ ' option) any later'
53
+ output.puts '# version.'
54
+ output.puts '#'
55
+ output.puts '# SAPoR is distributed in the hope that it will be useful, but' \
56
+ ' WITHOUT ANY'
57
+ output.puts '# WARRANTY; without even the implied warranty of' \
58
+ ' MERCHANTABILITY or FITNESS FOR'
59
+ output.puts '# A PARTICULAR PURPOSE. See the GNU General Public License' \
60
+ ' for more details.'
61
+ output.puts '#'
62
+ output.puts '# You can find a copy of the GNU General Public License in' \
63
+ ' /doc/gpl.txt'
64
+ output.puts '#'
65
+ File.open(SOURCE).each do |line|
66
+ next if line.chomp.start_with?('Siedziba OKW')
67
+ if line.chomp.empty?
68
+ output.puts
69
+ else
70
+ elements = line.chomp.split(',').map(&:strip)
71
+ district = elements[0]
72
+ PARTIES.each_with_index do |p, i|
73
+ unless elements[i+1].nil? || elements[i+1].empty?
74
+ votes = elements[i+1].delete('.')
75
+ if p == ZL_PARTY
76
+ output.puts "#{district} | Sojusz Lewicy Demokratycznej | #{votes}"
77
+ else
78
+ output.puts "#{district} | #{p} | #{votes}"
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,85 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ SOURCE = '2015-gl-lis-okr.csv'.freeze
21
+ TARGET = '../../lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv'.freeze
22
+ ZL_PARTY = 'Zjednoczona Lewica'.freeze
23
+ PARTIES = ['Prawo i Sprawiedliwość',
24
+ 'Platforma Obywatelska',
25
+ 'Lewica Razem',
26
+ 'KORWiN',
27
+ 'Polskie Stronnictwo Ludowe',
28
+ ZL_PARTY,
29
+ 'Kukiz’15',
30
+ '.Nowoczesna',
31
+ 'JOW Bezpartyjni',
32
+ 'Stonoga Partia Polska',
33
+ 'Ruch Społeczny Rzeczypospolitej Polskiej',
34
+ 'Zjednoczeni dla Śląska',
35
+ 'Samoobrona',
36
+ 'Grzegorz Braun „Szczęść Boże!”',
37
+ 'Kongres Nowej Prawicy',
38
+ 'Mniejszość Niemiecka',
39
+ 'Obywatele do Parlamentu']
40
+
41
+ File.open(TARGET, 'w') do |output|
42
+ output.puts '# Statistical Analysis of Polling Results (SAPoR)'
43
+ output.puts '# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>'
44
+ output.puts '#'
45
+ output.puts '# This file is part of SAPoR.'
46
+ output.puts '#'
47
+ output.puts '# SAPoR is free software: you can redistribute it and/or' \
48
+ ' modify it under the'
49
+ output.puts '# terms of the GNU General Public License as published by the' \
50
+ ' Free Software'
51
+ output.puts '# Foundation, either version 3 of the License, or (at your' \
52
+ ' option) any later'
53
+ output.puts '# version.'
54
+ output.puts '#'
55
+ output.puts '# SAPoR is distributed in the hope that it will be useful, but' \
56
+ ' WITHOUT ANY'
57
+ output.puts '# WARRANTY; without even the implied warranty of' \
58
+ ' MERCHANTABILITY or FITNESS FOR'
59
+ output.puts '# A PARTICULAR PURPOSE. See the GNU General Public License' \
60
+ ' for more details.'
61
+ output.puts '#'
62
+ output.puts '# You can find a copy of the GNU General Public License in' \
63
+ ' /doc/gpl.txt'
64
+ output.puts '#'
65
+ File.open(SOURCE).each do |line|
66
+ next if line.chomp.start_with?('Siedziba OKW')
67
+ if line.chomp.empty?
68
+ output.puts
69
+ else
70
+ elements = line.chomp.split(',').map(&:strip)
71
+ district = elements[0]
72
+ PARTIES.each_with_index do |p, i|
73
+ unless elements[i+1].nil? || elements[i+1].empty?
74
+ votes = elements[i+1].delete('.')
75
+ if p == ZL_PARTY
76
+ output.puts "#{district} | Sojusz Lewicy Demokratycznej | #{votes}"
77
+ output.puts "#{district} | Wiosna | #{votes}"
78
+ else
79
+ output.puts "#{district} | #{p} | #{votes}"
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,54 @@
1
+ ukip = {}
2
+
3
+ File.open('united_kingdom-2015.psv').each do |line|
4
+ next if line.start_with?('#')
5
+ elements = line.chomp.split('|')
6
+ next if elements.size == 0
7
+ if elements[1].strip == 'UK Independence Party'
8
+ ukip[elements[0].strip] = elements[2].strip
9
+ end
10
+ end
11
+
12
+ lines = []
13
+ File.open('united_kingdom-20170608-brexit.psv').each do |line|
14
+ lines << line
15
+ end
16
+
17
+ File.open('united_kingdom-20170608-brexit.psv', 'w') do |output|
18
+ lines.each do | line |
19
+ if line.start_with?('#')
20
+ output.puts line
21
+ else
22
+ elements = line.chomp.split('|')
23
+ if elements.size == 0
24
+ output.puts line
25
+ elsif elements[1].strip == 'Brexit Party' && ukip.has_key?(elements[0].strip)
26
+ output.puts elements[0].strip + ' | Brexit Party | ' + ukip[elements[0].strip]
27
+ else
28
+ output.puts line
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ lines = []
35
+ File.open('united_kingdom-20170608-brexit-chuk.psv').each do |line|
36
+ lines << line
37
+ end
38
+
39
+ File.open('united_kingdom-20170608-brexit-chuk.psv', 'w') do |output|
40
+ lines.each do | line |
41
+ if line.start_with?('#')
42
+ output.puts line
43
+ else
44
+ elements = line.chomp.split('|')
45
+ if elements.size == 0
46
+ output.puts line
47
+ elsif elements[1].strip == 'Brexit Party' && ukip.has_key?(elements[0].strip)
48
+ output.puts elements[0].strip + ' | Brexit Party | ' + ukip[elements[0].strip]
49
+ else
50
+ output.puts line
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,651 @@
1
+ Name;MP;Region;County Area;Electorate;CON;LAB;LIB;UKIP;Green;NAT;MIN;OTH
2
+ Aldershot;Gerald Howarth;19;Hampshire;72434;23369;8468;4076;8253;2025;0;0;0
3
+ Aldridge-Brownhills;Wendy Morton;9;Black Country;60215;20558;8835;1330;7751;826;0;0;197
4
+ Altrincham and Sale West;Graham Brady;6;Central Manchester;72004;26771;13481;4235;4047;1983;0;0;0
5
+ Amber Valley;Nigel Mills;10;Derbyshire;70226;20106;15901;1360;7263;1087;0;0;0
6
+ Arundel and South Downs;Nick Herbert;20;West Sussex;77272;34331;6324;4062;8154;3606;0;0;0
7
+ Ashfield;Gloria de Piero;10;Nottinghamshire;77126;10628;19448;7030;10150;0;0;0;153
8
+ Ashford;Damian Green;20;Kent;85189;30094;10580;3433;10798;2467;0;0;0
9
+ Ashton under Lyne;Angela Rayner;6;Eastern Manchester;67714;8610;19366;943;8468;1531;0;0;0
10
+ Aylesbury;David Lidington;14;Buckinghamshire;80611;28083;8391;5885;10925;2135;0;0;0
11
+ Banbury;Victoria Prentis;15;Oxfordshire;86420;30749;12354;3440;8050;2686;0;0;729
12
+ Barking;Margaret Hodge;16;Barking and Dagenham;74004;7019;24826;562;9554;879;0;0;183
13
+ Barnsley Central;Dan Jarvis;8;South Yorkshire;64534;5485;20376;770;7941;938;0;573;477
14
+ Barnsley East;Michael Dugher;8;South Yorkshire;69135;5622;21079;1217;9045;0;0;647;907
15
+ Barrow and Furness;John Woodcock;4;Cumbria;68338;17525;18320;1169;5070;1061;0;0;130
16
+ Basildon and Billericay;John Baron;14;Essex;68459;22668;10186;1636;8538;0;0;0;0
17
+ Basildon South and East Thurrock;Stephen Metcalfe;14;Essex;73210;19788;11493;1356;12097;0;0;0;859
18
+ Basingstoke;Maria Miller;19;Hampshire;79662;25769;14706;3919;8290;0;0;0;392
19
+ Bassetlaw;John Mann;10;Nottinghamshire;77480;15122;23965;1331;7865;1006;0;0;0
20
+ Bath;Ben Howlett;15;Bristol area;60869;17833;6216;14000;2922;5634;0;0;562
21
+ Batley and Spen;Jo Cox;7;West Yorkshire;78373;15769;21826;2396;9080;1232;0;0;176
22
+ Battersea;Jane Ellison;17;Wandsworth;76106;26730;18792;2241;1586;1682;0;0;0
23
+ Beaconsfield;Dominic Grieve;14;Buckinghamshire;76380;33621;6074;3927;7310;2231;0;0;0
24
+ Beckenham;Bob Stewart;17;Bromley;67436;27955;9484;3378;6108;1878;0;0;0
25
+ Bedford;Richard Fuller;13;Bedfordshire;69311;19625;18528;1958;4434;1412;0;0;129
26
+ Bedfordshire Mid;Nadine Dorries;13;Bedfordshire;81144;32544;9217;4193;8966;2462;0;0;678
27
+ Bedfordshire North East;Alistair Burt;13;Bedfordshire;83551;34891;9247;3418;8579;2537;0;0;0
28
+ Bedfordshire South West;Andrew Selous;13;Bedfordshire;79664;28212;10399;2646;7941;2106;0;0;0
29
+ Bermondsey and Old Southwark;Neil Coyle;17;Southwark;80604;6051;22146;17657;3254;2023;0;0;293
30
+ Berwick-upon-Tweed;Anne-Marie Trevelyan;4;Northumberland;58098;16603;6042;11689;4513;1488;0;0;88
31
+ Bethnal Green and Bow;Rushanara Ali;16;Tower Hamlets;82825;8070;32387;2395;3219;4906;0;0;1947
32
+ Beverley and Holderness;Graham Stuart;8;Humber area;80822;25363;13160;2900;8794;1802;0;0;658
33
+ Bexhill and Battle;Huw Merriman;20;East Sussex;78796;30245;7797;4199;10170;2807;0;0;0
34
+ Bexleyheath and Crayford;David Evennett;17;Bexley;64828;20643;11451;1308;9182;950;0;0;151
35
+ Birkenhead;Frank Field;5;Merseyside;62438;5816;26468;1396;3838;1626;0;0;0
36
+ Birmingham Edgbaston;Gisela Stuart;9;Birmingham;65591;15812;18518;1184;4154;1371;0;0;254
37
+ Birmingham Erdington;Jack Dromey;9;Birmingham;65128;10695;15824;965;6040;948;0;0;212
38
+ Birmingham Hall Green;Roger Godsiff;9;Birmingham;76330;8329;28147;5459;2131;2200;0;0;780
39
+ Birmingham Hodge Hill;Liam Byrne;9;Birmingham;75302;4707;28069;2624;4651;835;0;0;153
40
+ Birmingham Ladywood;Shabana Mahmood;9;Birmingham;68128;4576;26444;1374;1805;1501;0;0;216
41
+ Birmingham Northfield;Richard Burden;9;Birmingham;71428;15164;17673;1349;7106;1169;0;0;0
42
+ Birmingham Perry Barr;Khalid Mahmood;9;Birmingham;69943;8869;23697;2001;5032;1330;0;0;331
43
+ Birmingham Selly Oak;Stephen McCabe;9;Birmingham;75092;13137;21584;2517;5755;2301;0;0;0
44
+ Birmingham Yardley;Jess Phillips;9;Birmingham;72146;5760;17129;10534;6637;698;0;0;393
45
+ Bishop Auckland;Helen Goodman;4;Durham;66089;12799;16307;1723;7015;1545;0;0;0
46
+ Blackburn;Kate Hollern;5;Lancashire;73265;12002;24762;955;6280;0;0;0;0
47
+ Blackley and Broughton;Graham Stringer;6;Central Manchester;71900;5581;22982;874;6108;1567;0;0;0
48
+ Blackpool North and Cleveleys;Paul Maynard;5;Lancashire;62469;17508;14168;948;5823;889;0;0;57
49
+ Blackpool South;Gordon Marsden;5;Lancashire;57411;10963;13548;743;5613;841;0;0;728
50
+ Blaydon;David Anderson;4;Newcastle area;67706;7838;22090;5497;7863;1648;0;0;0
51
+ Blyth Valley;Ronnie Campbell;4;Northumberland;63958;8346;17813;2265;8584;1453;0;0;0
52
+ Bognor Regis and Littlehampton;Nick Gibb;20;West Sussex;73095;24185;6508;4240;10241;1942;0;0;0
53
+ Bolsover;Dennis Skinner;10;Derbyshire;71976;10764;22542;1464;9228;0;0;0;0
54
+ Bolton North East;David Crausby;6;Western Manchester;67901;14164;18541;1236;8117;1103;0;0;0
55
+ Bolton South East;Yasmin Qureshi;6;Western Manchester;69692;8289;20555;1072;9627;1200;0;0;0
56
+ Bolton West;Chris Green;6;Western Manchester;72727;19744;18943;1947;7428;0;0;0;530
57
+ Bootle;Peter Dowd;5;Merseyside;70137;3639;33619;978;4915;1501;0;0;500
58
+ Boston and Skegness;Matt Warman;8;Lincolnshire;67834;18981;7142;1015;14645;800;0;0;756
59
+ Bosworth;David Tredinnick;10;Leicestershire;79742;22939;9354;11951;9338;0;0;0;0
60
+ Bournemouth East;Tobias Ellwood;18;Dorset;71956;22060;7448;3752;7401;3263;0;0;903
61
+ Bournemouth West;Conor Burns;18;Dorset;72082;20155;7386;3281;7745;3107;0;0;99
62
+ Bracknell;Phillip Lee;19;Berkshire;78131;29606;8956;3983;8339;2202;0;0;0
63
+ Bradford East;Imran Hussain;7;West Yorkshire;66123;4682;19312;12228;4103;871;0;0;210
64
+ Bradford South;Judith Cummins;7;West Yorkshire;63670;9878;16328;1094;9057;1243;0;0;0
65
+ Bradford West;Naseem Shah;7;West Yorkshire;63371;6160;19977;1173;3140;1085;0;8557;198
66
+ Braintree;James Cleverly;14;Essex;73557;27071;9296;2488;9461;1564;0;0;403
67
+ Brent Central;Dawn Butler;16;Brent;77038;9567;29216;3937;1850;1912;0;0;550
68
+ Brent North;Barry Gardiner;16;Brent;82196;17517;28351;2607;2024;1539;0;0;197
69
+ Brentford and Isleworth;Ruth Cadbury;17;Hounslow;84557;24631;25096;2305;3203;2120;0;0;0
70
+ Brentwood and Ongar;Eric Pickles;14;Essex;72461;30534;6492;4577;8724;1397;0;0;173
71
+ Bridgwater and West Somerset;Ian Liddell-Grainger;18;Somerset;80491;25020;9589;6765;10437;2636;0;0;0
72
+ Brigg and Goole;Andrew Percy;8;Humber area;68486;22946;11770;764;6694;915;0;0;181
73
+ Brighton Kemptown;Simon Kirby;20;East Sussex;67858;18428;17738;1365;4446;3187;0;0;142
74
+ Brighton Pavilion;Caroline Lucas;20;East Sussex;76557;12448;14904;1525;2724;22871;0;0;204
75
+ Bristol East;Kerry McCarthy;15;Bristol area;71965;14168;18148;2689;7152;3827;0;0;229
76
+ Bristol North West;Charlotte Leslie;15;Bristol area;76626;22767;17823;3214;4889;2952;0;0;160
77
+ Bristol South;Karin Smyth;15;Bristol area;81996;12377;19505;4416;8381;5861;0;0;302
78
+ Bristol West;Thangam Debbonaire;15;Bristol area;89198;9752;22900;12103;1940;17227;0;0;296
79
+ Broadland;Keith Simpson;13;Norfolk;74680;26808;9970;5178;8881;2252;0;0;0
80
+ Bromley and Chislehurst;Bob Neill;17;Bromley;65476;23343;9779;2836;6285;1823;0;0;0
81
+ Bromsgrove;Sajid Javid;11;Hereford and Worcestershire;73329;28133;11604;2616;8163;1729;0;0;0
82
+ Broxbourne;Charles Walker;14;Hertfordshire;72944;25797;8470;1467;9074;1216;0;0;0
83
+ Broxtowe;Anna Soubry;10;Nottinghamshire;71865;24163;19876;2120;5674;1544;0;0;63
84
+ Buckingham;John Bercow;14;Buckinghamshire;77572;34617;0;0;11675;7400;0;0;0
85
+ Burnley;Julie Cooper;5;Lancashire;64486;5374;14951;11707;6864;850;0;0;0
86
+ Burton;Andrew Griffiths;11;Staffordshire;75300;24736;13484;1232;8658;1224;0;0;0
87
+ Bury North;David Nuttall;6;Western Manchester;67580;18970;18592;932;5595;1141;0;0;0
88
+ Bury South;Ivan Lewis;6;Western Manchester;73883;16350;21272;1690;6299;1434;0;0;170
89
+ Bury St Edmunds;Jo Churchill;13;Suffolk;85993;31815;10514;3581;8739;4692;0;0;0
90
+ Calder Valley;Craig Whittaker;7;West Yorkshire;77753;23354;18927;2666;5950;2090;0;0;554
91
+ Camberwell and Peckham;Harriet Harman;17;Southwark;80507;6790;32614;2580;2413;5187;0;0;1977
92
+ Camborne and Redruth;George Eustice;18;Cornwall;66944;18452;11448;5687;6776;2608;0;0;897
93
+ Cambridge;Daniel Zeichner;13;Cambridgeshire;83384;8117;18646;18047;2668;4109;0;0;187
94
+ Cambridgeshire North East;Stephen Barclay;13;Cambridgeshire;82990;28524;7476;2314;11650;1816;0;0;0
95
+ Cambridgeshire North West;Shailesh Vara;13;Cambridgeshire;91783;32070;10927;3479;12275;2159;0;0;190
96
+ Cambridgeshire South;Heidi Allen;13;Cambridgeshire;84132;31454;10860;9368;6010;3848;0;0;0
97
+ Cambridgeshire South East;Lucy Frazer;13;Cambridgeshire;84570;28845;9013;12008;6593;3047;0;0;0
98
+ Cannock Chase;Amanda Milling;11;Staffordshire;74531;20811;15888;1270;8224;906;0;0;0
99
+ Canterbury;Julian Brazier;20;Kent;83481;22918;13120;6227;7289;3746;0;0;165
100
+ Carlisle;John Stevenson;4;Cumbria;65827;18873;16099;1087;5277;1125;0;0;126
101
+ Carshalton and Wallington;Tom Brake;17;Sutton;69866;15093;7150;16603;7049;1492;0;0;226
102
+ Castle Point;Rebecca Harris;14;Essex;68170;23112;6283;801;14178;1076;0;0;0
103
+ Charnwood;Edward Argar;10;Leicestershire;77269;28384;11453;3605;8330;0;0;0;489
104
+ Chatham and Aylesford;Tracey Crouch;20;Kent;68625;21614;10159;1360;8581;1101;0;0;258
105
+ Cheadle;Mary Robinson;6;Eastern Manchester;73239;22889;8673;16436;4423;0;0;0;674
106
+ Chelmsford;Simon Burns;14;Essex;78580;27732;9482;6394;7652;1892;0;0;665
107
+ Chelsea and Fulham;Greg Hands;16;Hammersmith and Fulham;63478;25322;9300;2091;2039;1474;0;0;0
108
+ Cheltenham;Alex Chalk;15;Gloucestershire;77286;24790;3902;18274;3808;2689;0;0;272
109
+ Chesham and Amersham;Cheryl Gillan;14;Buckinghamshire;73423;31138;6712;4761;7218;2902;0;0;0
110
+ Chester, City of;Chris Matheson;11;Cheshire;72269;22025;22118;2870;4148;0;0;0;0
111
+ Chesterfield;Toby Perkins;10;Derbyshire;72078;8231;21829;6301;7523;1352;0;0;331
112
+ Chichester;Andrew Tyrie;20;West Sussex;83575;32953;6933;4865;8540;3742;0;0;106
113
+ Chingford and Woodford Green;Iain Duncan Smith;16;Waltham Forest;66691;20999;12613;2400;5644;1854;0;0;294
114
+ Chippenham;Michelle Donelan;15;Wiltshire;74225;26354;4561;16278;5884;2330;0;0;0
115
+ Chipping Barnet;Theresa Villiers;16;Barnet;77853;25759;18103;2381;4151;2501;0;0;118
116
+ Chorley;Lindsay Hoyle;5;Lancashire;74679;18792;23322;1354;6995;1111;0;0;138
117
+ Christchurch;Christopher Chope;18;Dorset;69302;28887;4745;3263;10663;2149;0;0;0
118
+ Cities of London and Westminster;Mark Field;16;City of Westminster;60992;19570;9899;2521;1894;1953;0;0;348
119
+ Clacton;Douglas Carswell;14;Essex;68936;16205;6364;812;19642;1184;0;0;0
120
+ Cleethorpes;Martin Vickers;8;Humber area;70514;21026;13133;1346;8356;1013;0;0;215
121
+ Colchester;Will Quince;14;Essex;74203;18919;7852;13344;5870;2499;0;0;109
122
+ Colne Valley;Jason McCartney;7;West Yorkshire;82510;25246;19868;3407;5734;1919;0;0;626
123
+ Congleton;Fiona Bruce;11;Cheshire;72398;27164;10391;4623;6922;1876;0;0;0
124
+ Copeland;Jamie Reed;4;Cumbria;62119;14186;16750;1368;6148;1179;0;0;0
125
+ Corby;Tom Pursglove;13;Northamptonshire;79775;24023;21611;1458;7708;1374;0;0;0
126
+ Cornwall North;Scott Mann;18;Cornwall;67192;21689;2621;15068;6121;2063;0;0;683
127
+ Cornwall South East;Sheryll Murray;18;Cornwall;71071;25516;4692;8521;7698;2718;0;0;1353
128
+ Cotswolds, The;Geoffrey Clifton-Brown;15;Gloucestershire;78292;32045;5240;10568;6188;2626;0;0;0
129
+ Coventry North East;Colleen Fletcher;9;Coventry and Solihull;76401;9751;22025;2007;6278;1245;0;0;925
130
+ Coventry North West;Geoffrey Robinson;9;Coventry and Solihull;74597;14048;18557;1810;7101;1961;0;0;1769
131
+ Coventry South;Jim Cunningham;9;Coventry and Solihull;71380;15284;18472;1779;5709;1719;0;0;736
132
+ Crawley;Henry Smith;20;West Sussex;73940;22829;16303;1339;6979;1100;0;0;0
133
+ Crewe and Nantwich;Edward Timpson;11;Cheshire;74039;22445;18825;1374;7252;0;0;0;0
134
+ Croydon Central;Gavin Barwell;17;Croydon;78171;22753;22588;1152;4810;1454;0;0;184
135
+ Croydon North;Steve Reed;17;Croydon;85951;12149;33513;1919;2899;2515;0;0;527
136
+ Croydon South;Chris Philp;17;Croydon;82010;31448;14308;3448;6068;2154;0;0;286
137
+ Dagenham and Rainham;Jon Cruddas;16;Barking and Dagenham;69049;10492;17830;717;12850;806;0;0;355
138
+ Darlington;Jenny Chapman;4;Durham;65832;14479;17637;1966;5392;1444;0;0;223
139
+ Dartford;Gareth Johnson;20;Kent;76686;25670;13325;1454;10434;1324;0;0;211
140
+ Daventry;Chris Heaton-Harris;13;Northamptonshire;72753;30550;9491;2352;8296;1829;0;0;0
141
+ Denton and Reddish;Andrew Gwynne;6;Eastern Manchester;66574;9150;19661;957;7225;1466;0;0;222
142
+ Derby North;Amanda Solloway;10;Derbyshire;64739;16402;16361;3832;6532;1618;0;0;0
143
+ Derby South;Margaret Beckett;10;Derbyshire;70247;11179;20007;1717;6341;1208;0;0;368
144
+ Derbyshire Dales;Patrick McLoughlin;10;Derbyshire;63470;24805;10761;3965;5508;2173;0;0;149
145
+ Derbyshire Mid;Pauline Latham;10;Derbyshire;67576;24908;12134;2292;6497;1898;0;0;0
146
+ Derbyshire North East;Natascha Engel;10;Derbyshire;71456;17605;19488;2004;7631;1059;0;0;161
147
+ Derbyshire South;Heather Wheeler;10;Derbyshire;74395;25066;13595;1887;8998;1216;0;0;0
148
+ Devizes;Claire Perry;15;Wiltshire;69211;28295;6360;3954;7544;2853;0;0;0
149
+ Devon Central;Mel Stride;18;Devon;72737;28436;6985;6643;7171;4866;0;0;347
150
+ Devon East;Hugo Swire;18;Devon;74224;25401;5591;3715;6870;0;0;13140;0
151
+ Devon North;Peter Heaton-Jones;18;Devon;74737;22341;3699;15405;7719;3018;0;0;138
152
+ Devon South West;Gary Streeter;18;Devon;71035;28500;8391;3767;7306;2408;0;0;0
153
+ Devon West and Torridge;Geoffrey Cox;18;Devon;78582;28774;6015;7483;10371;3941;0;0;0
154
+ Dewsbury;Paula Sherriff;7;West Yorkshire;79765;20955;22406;1924;6649;1366;0;0;330
155
+ Don Valley;Caroline Flint;8;South Yorkshire;71299;10736;19621;1487;9963;0;0;0;679
156
+ Doncaster Central;Rosie Winterton;8;South Yorkshire;71136;8386;19840;1717;9747;0;0;0;730
157
+ Doncaster North;Ed Miliband;8;South Yorkshire;70898;7235;20708;1005;8928;757;0;448;420
158
+ Dorset Mid and Poole North;Michael Tomlinson;18;Dorset;68917;23639;2767;13109;5663;1321;0;0;0
159
+ Dorset North;Simon Hoare;18;Dorset;74576;30227;4785;6226;9109;3038;0;0;0
160
+ Dorset South;Richard Drax;18;Dorset;71974;23756;11762;2901;7304;2275;0;0;599
161
+ Dorset West;Oliver Letwin;18;Dorset;78427;28329;5633;12199;7055;3242;0;0;0
162
+ Dover;Charlie Elphicke;20;Kent;72929;21737;15443;1572;10177;1295;0;0;0
163
+ Dudley North;Ian Austin;9;Black Country;60718;11704;15885;478;9113;517;0;0;295
164
+ Dudley South;Mike Wood;9;Black Country;60363;16723;12453;828;7236;970;0;0;0
165
+ Dulwich and West Norwood;Helen Hayes;17;Lambeth;75244;11650;27772;5055;1606;4844;0;0;435
166
+ Durham North;Kevan Jones;4;Durham;65373;8403;22047;2046;6404;1246;0;0;0
167
+ Durham North West;Pat Glass;4;Durham;69817;10018;20074;3894;7265;1567;0;0;0
168
+ Durham, City of;Roberta Blackman-Woods;4;Durham;68741;10157;21596;5153;5232;2687;0;0;844
169
+ Ealing Central and Acton;Rupa Huq;17;Ealing;71238;21728;22002;3106;1926;1841;0;0;291
170
+ Ealing North;Stephen Pound;17;Ealing;73836;14419;26745;1575;3922;1635;0;0;214
171
+ Ealing Southall;Virendra Sharma;17;Ealing;65495;9387;28147;1550;1769;2007;0;0;461
172
+ Easington;Grahame Morris;4;Durham;61675;4478;21132;834;6491;733;0;810;146
173
+ East Ham;Stephen Timms;16;Newham;87378;6311;40563;856;2622;1299;0;0;639
174
+ Eastbourne;Caroline Ansell;20;East Sussex;78262;20934;4143;20201;6139;1351;0;0;139
175
+ Eastleigh;Mims Davies;19;Hampshire;79609;23464;7181;14317;8783;1513;0;0;247
176
+ Eddisbury;Antoinette Sandbach;11;Cheshire;68636;24167;11193;4289;5778;1624;0;0;301
177
+ Edmonton;Kate Osamor;16;Enfield;66015;9969;25388;897;3366;1358;0;0;360
178
+ Ellesmere Port and Neston;Justin Madders;11;Cheshire;68134;16041;22316;1563;5594;990;0;0;223
179
+ Elmet and Rothwell;Alec Shelbrooke;7;West Yorkshire;79143;27978;19488;2640;6430;1261;0;0;0
180
+ Eltham;Clive Efford;17;Greenwich;63998;15700;18393;1308;6481;1275;0;0;0
181
+ Enfield North;Joan Ryan;16;Enfield;68119;19086;20172;1059;4133;1303;0;0;384
182
+ Enfield Southgate;David Burrowes;16;Enfield;64938;22624;17871;1518;2109;1690;0;0;0
183
+ Epping Forest;Eleanor Laing;14;Essex;73545;27027;7962;3448;9049;1782;0;0;80
184
+ Epsom and Ewell;Chris Grayling;19;Surrey;78633;33309;8866;5002;7117;2116;0;0;733
185
+ Erewash;Maggie Throup;10;Derbyshire;71937;20636;17052;1658;7792;1184;0;0;0
186
+ Erith and Thamesmead;Teresa Pearce;17;Bexley;69787;11684;21209;972;7368;941;0;0;443
187
+ Esher and Walton;Dominic Raab;19;Surrey;79894;35845;7229;5372;5551;2355;0;0;624
188
+ Exeter;Ben Bradshaw;18;Devon;76964;17879;25062;2321;5075;3491;0;0;190
189
+ Fareham;Suella Fernandes;19;Hampshire;77233;30689;7800;4814;8427;2129;0;0;841
190
+ Faversham and Kent Mid;Helen Whately;20;Kent;69523;24895;7403;3039;8243;1768;0;0;455
191
+ Feltham and Heston;Seema Malhotra;17;Hounslow;82328;14382;25845;1579;6209;1390;0;0;0
192
+ Filton and Bradley Stoke;Jack Lopresti;15;Bristol area;70722;22920;13082;3581;7261;2257;0;0;0
193
+ Finchley and Golders Green;Mike Freer;16;Barnet;72049;25835;20173;1662;1732;1357;0;0;0
194
+ Folkestone and Hythe;Damian Collins;20;Kent;83612;26323;7939;4882;12526;2956;0;0;384
195
+ Forest of Dean;Mark Harper;15;Gloucestershire;69882;23191;12204;2630;8792;2703;0;0;0
196
+ Fylde;Mark Menzies;5;Lancashire;65679;21406;8182;1623;5569;1381;0;5166;230
197
+ Gainsborough;Edward Leigh;8;Lincolnshire;73212;25949;10500;3290;7727;1290;0;0;505
198
+ Garston and Halewood;Maria Eagle;5;Merseyside;74063;6693;33839;2279;4482;1690;0;0;0
199
+ Gateshead;Ian Mearns;4;Newcastle area;63910;5502;21549;2585;6765;1548;0;0;0
200
+ Gedling;Vernon Coaker;10;Nottinghamshire;70046;17321;20307;1906;6930;1534;0;0;0
201
+ Gillingham and Rainham;Rehman Chishti;20;Kent;72609;22590;12060;1707;9199;1133;0;0;389
202
+ Gloucester;Richard Graham;15;Gloucestershire;82949;23837;16586;2828;7497;1485;0;0;342
203
+ Gosport;Caroline Dinenage;19;Hampshire;73271;26364;6926;3298;9266;1707;0;0;104
204
+ Grantham and Stamford;Nicholas Boles;8;Lincolnshire;81151;28399;9070;3263;9410;1872;0;0;1741
205
+ Gravesham;Adam Holloway;20;Kent;74307;23484;15114;1111;9306;1124;0;0;0
206
+ Great Grimsby;Melanie Onn;8;Humber area;58484;8874;13414;1680;8417;783;0;0;563
207
+ Great Yarmouth;Brandon Lewis;13;Norfolk;69793;19089;12935;1030;10270;978;0;0;167
208
+ Greenwich and Woolwich;Matthew Pennycook;17;Greenwich;73315;12438;24384;2645;3888;2991;0;0;370
209
+ Guildford;Anne Milton;19;Surrey;76554;30802;6534;8354;4774;2558;0;0;964
210
+ Hackney North and Stoke Newington;Diane Abbott;16;Hackney;83195;7349;31357;2492;1085;7281;0;0;323
211
+ Hackney South and Shoreditch;Meg Hillier;16;Hackney;79962;6420;30663;2186;1818;5519;0;0;1004
212
+ Halesowen and Rowley Regis;James Morris;9;Black Country;74203;18933;15851;905;7280;849;0;0;0
213
+ Halifax;Holly Lynch;7;West Yorkshire;70461;17078;17506;1629;5621;1142;0;0;777
214
+ Haltemprice and Howden;David Davis;8;Humber area;71205;26414;10219;3055;6781;1809;0;0;479
215
+ Halton;Derek Twigg;11;Cheshire;72818;8007;28292;1097;6333;1017;0;0;277
216
+ Hammersmith;Andy Slaughter;16;Hammersmith and Fulham;72254;17463;23981;2224;2105;2105;0;0;82
217
+ Hampshire East;Damian Hinds;19;Hampshire;72600;31334;5220;5732;6187;3176;0;0;0
218
+ Hampshire North East;Ranil Jayawardena;19;Hampshire;74025;35573;5290;5657;4732;2364;0;0;384
219
+ Hampshire North West;Kit Malthouse;19;Hampshire;79223;32052;7342;5151;8109;2541;0;0;0
220
+ Hampstead and Kilburn;Tulip Siddiq;16;Camden;80241;22839;23977;3039;1532;2387;0;0;190
221
+ Harborough;Edward Garnier;10;Leicestershire;77760;27675;8043;7037;7539;2177;0;0;0
222
+ Harlow;Robert Halfon;14;Essex;67994;21623;13273;904;7208;954;0;0;289
223
+ Harrogate and Knaresborough;Andrew Jones;7;North Yorkshire;77379;28153;5409;11782;5681;2351;0;0;0
224
+ Harrow East;Bob Blackman;16;Harrow;70890;24668;19911;1037;2333;846;0;0;205
225
+ Harrow West;Gareth Thomas;16;Harrow;69643;19677;21885;1567;2047;1310;0;0;117
226
+ Hartlepool;Iain Wright;4;Teesside;69516;8256;14076;761;11052;1341;0;2954;1050
227
+ Harwich and North Essex;Bernard Jenkin;14;Essex;69289;24722;9548;3576;8464;2122;0;0;0
228
+ Hastings and Rye;Amber Rudd;20;East Sussex;75095;22686;17890;1614;6786;1951;0;0;0
229
+ Havant;Alan Mak;19;Hampshire;70573;23159;7149;2929;9239;2352;0;0;0
230
+ Hayes and Harlington;John McDonnell;17;Hillingdon;74875;11143;26843;888;5388;794;0;0;0
231
+ Hazel Grove;William Wragg;6;Eastern Manchester;63098;17882;7584;11330;5283;1140;0;0;0
232
+ Hemel Hempstead;Michael Penning;14;Hertfordshire;74616;26245;11825;2402;7249;1660;0;0;252
233
+ Hemsworth;Jon Trickett;7;West Yorkshire;72714;9694;21772;1357;8565;0;0;0;1018
234
+ Hendon;Matthew Offord;16;Barnet;74658;24328;20604;1088;2595;1015;0;0;0
235
+ Henley;John Howell;15;Oxfordshire;78243;32292;6917;6205;6007;3815;0;0;0
236
+ Hereford and South Herefordshire;Jesse Norman;11;Hereford and Worcestershire;70711;24844;6042;5002;7954;3415;0;0;0
237
+ Herefordshire North;Bill Wiggin;11;Hereford and Worcestershire;66683;26716;5478;5768;6720;3341;0;0;0
238
+ Hertford and Stortford;Mark Prisk;14;Hertfordshire;78906;31593;10084;4385;7534;2681;0;0;0
239
+ Hertfordshire North East;Oliver Heald;14;Hertfordshire;73944;28949;9869;3952;6728;2789;0;0;0
240
+ Hertfordshire South West;David Gauke;14;Hertfordshire;79666;32608;9345;5872;6603;2583;0;0;256
241
+ Hertsmere;Oliver Dowden;14;Hertfordshire;73753;29696;11235;2777;6383;0;0;0;0
242
+ Hexham;Guy Opperman;4;Northumberland;60614;22834;10803;2961;4302;2445;0;0;0
243
+ Heywood and Middleton;Liz McInnes;6;Eastern Manchester;79989;9268;20926;1607;15627;1110;0;0;0
244
+ High Peak;Andrew Bingham;10;Derbyshire;73336;22836;17942;2389;5811;1811;0;0;0
245
+ Hitchin and Harpenden;Peter Lilley;14;Hertfordshire;74839;31488;11433;4484;4917;3053;0;0;0
246
+ Holborn and St Pancras;Keir Starmer;16;Camden;86864;12014;29062;3555;2740;7013;0;0;533
247
+ Hornchurch and Upminster;Angela Watkinson;16;Havering;79331;27051;11103;1501;13977;1411;0;0;193
248
+ Hornsey and Wood Green;Catherine West;16;Haringey;79241;5347;29417;18359;1271;3146;0;0;245
249
+ Horsham;Jeremy Quin;20;West Sussex;78181;32627;6499;6647;7969;2198;0;0;985
250
+ Houghton and Sunderland South;Bridget Phillipson;4;Newcastle area;68316;7105;21218;791;8280;1095;0;0;0
251
+ Hove;Peter Kyle;20;East Sussex;73505;20846;22082;1861;3265;3569;0;0;591
252
+ Huddersfield;Barry Sheerman;7;West Yorkshire;65265;10841;18186;2365;5948;2798;0;0;340
253
+ Hull East;Karl Turner;8;Humber area;65606;5593;18180;2294;7861;806;0;0;410
254
+ Hull North;Diana Johnson;8;Humber area;63650;5306;18661;3175;5762;2066;0;0;366
255
+ Hull West and Hessle;Alan Johnson;8;Humber area;59008;5561;15646;3169;6313;943;0;0;171
256
+ Huntingdon;Jonathan Djanogly;13;Cambridgeshire;82404;29652;10248;4375;9473;2178;0;0;0
257
+ Hyndburn;Graham Jones;5;Lancashire;68341;13676;18076;859;9154;1122;0;0;0
258
+ Ilford North;Wes Streeting;16;Redbridge;78162;20874;21463;1130;4355;1023;0;0;87
259
+ Ilford South;Mike Gapes;16;Redbridge;95023;13455;33232;1014;2705;1506;0;0;0
260
+ Ipswich;Ben Gummer;13;Suffolk;74498;21794;18061;1400;5703;1736;0;0;0
261
+ Isle of Wight;Andrew Turner;19;Hampshire;108804;28591;8984;5235;14888;9404;0;0;3198
262
+ Islington North;Jeremy Corbyn;16;Islington;73325;8465;29659;3984;1971;5043;0;0;112
263
+ Islington South and Finsbury;Emily Thornberry;16;Islington;68127;9839;22547;4829;3375;3371;0;0;309
264
+ Jarrow;Stephen Hepburn;4;Newcastle area;63882;6584;21464;1238;7583;1310;0;0;385
265
+ Keighley;Kris Hopkins;7;West Yorkshire;68865;21766;18713;1321;5662;1661;0;0;0
266
+ Kenilworth and Southam;Jeremy Wright;10;Warwickshire;65245;28474;7472;4913;5467;1956;0;0;509
267
+ Kensington;Victoria Borwick;16;Kensington and Chelsea;61333;18199;10838;1962;1557;1765;0;0;507
268
+ Kettering;Philip Hollobone;13;Northamptonshire;70155;24467;11877;1490;7600;1633;0;0;151
269
+ Kingston and Surbiton;James Berry;17;Kingston Upon Thames;81277;23249;8574;20415;4321;2322;0;0;372
270
+ Kingswood;Chris Skidmore;15;Bristol area;67992;23252;14246;1827;7133;1370;0;0;297
271
+ Knowsley;George Howarth;5;Merseyside;79109;3367;39628;1490;4973;1270;0;0;0
272
+ Lancashire West;Rosie Cooper;5;Lancashire;70945;16114;24474;1298;6058;1582;0;0;150
273
+ Lancaster and Fleetwood;Catherine Smith;5;Lancashire;60883;16378;17643;1390;4060;2093;0;0;174
274
+ Leeds Central;Hilary Benn;7;West Yorkshire;81799;7791;24758;1529;7082;3558;0;0;330
275
+ Leeds East;Richard Burgon;7;West Yorkshire;64754;7997;20530;1296;7256;1117;0;0;0
276
+ Leeds North East;Fabian Hamilton;7;West Yorkshire;69097;15887;23137;2569;3706;2541;0;0;451
277
+ Leeds North West;Greg Mulholland;7;West Yorkshire;61974;8083;13041;15948;2997;3042;0;0;246
278
+ Leeds West;Rachel Reeves;7;West Yorkshire;64950;7729;18456;1495;7104;3217;0;0;422
279
+ Leicester East;Keith Vaz;10;Leicestershire;75430;11034;29386;1233;4290;1468;0;0;657
280
+ Leicester South;Jonathan Ashworth;10;Leicestershire;73518;9628;27473;2127;3832;2533;0;0;349
281
+ Leicester West;Elizabeth Kendall;10;Leicestershire;63204;8848;16051;1507;5950;1878;0;0;288
282
+ Leicestershire North West;Andrew Bridgen;10;Leicestershire;72194;25505;14132;2033;8704;1174;0;0;0
283
+ Leicestershire South;Alberto Costa;10;Leicestershire;76877;28700;11876;3987;9363;0;0;0;0
284
+ Leigh;Andrew Burnham;6;Western Manchester;75974;10216;24312;1150;8903;0;0;0;542
285
+ Lewes;Maria Caulfield;20;East Sussex;69481;19206;5000;18123;5427;2784;0;0;0
286
+ Lewisham Deptford;Vicky Foxcroft;17;Lewisham;73426;7056;28572;2497;2013;5932;0;0;1356
287
+ Lewisham East;Heidi Alexander;17;Lewisham;73428;9574;23907;2455;3886;2429;0;0;672
288
+ Lewisham West and Penge;Jim Dowd;17;Lewisham;72289;11633;24347;3709;3764;4077;0;0;595
289
+ Leyton and Wanstead;John Cryer;16;Waltham Forest;64746;8939;23858;2304;2341;2974;0;0;289
290
+ Lichfield;Michael Fabricant;11;Staffordshire;83339;28389;10200;2700;8082;1976;0;0;120
291
+ Lincoln;Karl McCartney;8;Lincolnshire;74121;19976;18533;1992;5721;0;0;0;630
292
+ Liverpool Riverside;Louise Ellman;5;Merseyside;70950;4245;29835;1719;2510;5372;0;0;582
293
+ Liverpool Walton;Steve Rotheram;5;Merseyside;62868;1802;31222;899;3445;956;0;0;79
294
+ Liverpool Wavertree;Luciana Berger;5;Merseyside;61731;4098;28401;2454;3375;2140;0;0;506
295
+ Liverpool West Derby;Stephen Twigg;5;Merseyside;63875;2710;30842;959;3475;996;0;0;2049
296
+ Loughborough;Nicky Morgan;10;Leicestershire;72644;25762;16579;2130;5704;1845;0;0;0
297
+ Louth and Horncastle;Victoria Atkins;8;Lincolnshire;74280;25755;9077;2255;10778;1549;0;0;922
298
+ Ludlow;Philip Dunne;11;Shropshire;66423;26093;5902;6469;7164;2435;0;0;0
299
+ Luton North;Kelvin Hopkins;13;Bedfordshire;66533;12739;22243;1299;5318;972;0;0;0
300
+ Luton South;Gavin Shuker;13;Bedfordshire;67234;12949;18660;3183;5129;1237;0;0;1058
301
+ Macclesfield;David Rutley;11;Cheshire;71580;26063;11252;3842;6037;2404;0;0;0
302
+ Maidenhead;Theresa May;19;Berkshire;74963;35453;6394;5337;4539;1915;0;0;217
303
+ Maidstone and The Weald;Helen Grant;20;Kent;73181;22745;5268;12036;7930;1396;0;0;635
304
+ Makerfield;Yvonne Fovargue;6;Western Manchester;74370;8752;23208;1639;10053;1136;0;0;0
305
+ Maldon;John Whittingdale;14;Essex;69455;29112;5690;2157;7042;1504;0;2424;116
306
+ Manchester Central;Lucy Powell;6;Central Manchester;86078;6133;27772;1867;5033;3838;0;0;688
307
+ Manchester Gorton;Sir Gerald Kaufman;6;Central Manchester;72959;4063;28187;1782;3434;4108;0;0;445
308
+ Manchester Withington;Jeff Smith;6;Central Manchester;74102;4872;26843;11970;2172;4048;0;0;61
309
+ Mansfield;Alan Meale;10;Nottinghamshire;77534;13288;18603;1642;11850;1486;0;0;324
310
+ Meon Valley;George Hollingbery;19;Hampshire;72738;31578;5656;4987;7665;1831;0;0;0
311
+ Meriden;Caroline Spelman;9;Coventry and Solihull;81079;28791;9996;2638;8908;2170;0;0;100
312
+ Middlesbrough;Andy McDonald;4;Teesside;61868;5388;18584;1220;6107;1407;0;0;0
313
+ Middlesbrough South and Cleveland East;Tom Blenkinsop;4;Teesside;71153;16925;19193;1564;6935;1060;0;0;0
314
+ Milton Keynes North;Mark Lancaster;14;Buckinghamshire;84892;27244;17491;3575;6852;2255;0;0;275
315
+ Milton Keynes South;Iain Stewart;14;Buckinghamshire;87968;27601;18929;2309;7803;1936;0;0;371
316
+ Mitcham and Morden;Siobhain McDonagh;17;Merton;68474;10458;27380;1378;4287;1422;0;0;217
317
+ Mole Valley;Sir Paul Beresford;19;Surrey;74317;33434;4565;7981;6181;2979;0;0;0
318
+ Morecambe and Lunesdale;David Morris;5;Lancashire;66476;19691;15101;1612;5358;1395;0;0;85
319
+ Morley and Outwood;Andrea Jenkyns;7;West Yorkshire;76179;18776;18354;1426;7951;1264;0;0;479
320
+ New Forest East;Julian Lewis;19;Hampshire;72720;27819;6018;4626;8657;2327;0;0;0
321
+ New Forest West;Desmond Swayne;19;Hampshire;68465;28420;5133;3293;7816;2748;0;0;0
322
+ Newark;Robert Jenrick;10;Nottinghamshire;73724;29834;11360;2385;6294;1792;0;0;637
323
+ Newbury;Richard Benyon;19;Berkshire;79058;34973;4837;8605;6195;2324;0;0;366
324
+ Newcastle upon Tyne Central;Chi Onwurah;4;Newcastle area;61061;6628;19301;2218;5214;1724;0;0;0
325
+ Newcastle upon Tyne East;Nick Brown;4;Newcastle area;74112;6884;19378;4332;4910;3426;0;0;292
326
+ Newcastle upon Tyne North;Catherine McKinnell;4;Newcastle area;67267;10536;20689;4366;7447;1515;0;0;338
327
+ Newcastle-under-Lyme;Paul Farrelly;11;Staffordshire;66752;15870;16520;1826;7252;1246;0;0;283
328
+ Newton Abbot;Anne-Marie Morris;18;Devon;69743;22794;4736;11506;6726;2216;0;0;221
329
+ Norfolk Mid;George Freeman;13;Norfolk;76975;27206;9585;3300;9930;2191;0;0;0
330
+ Norfolk North;Norman Lamb;13;Norfolk;68958;15256;5043;19299;8328;1488;0;0;0
331
+ Norfolk North West;Henry Bellingham;13;Norfolk;72400;24727;10779;1673;8412;1780;0;0;0
332
+ Norfolk South;Richard Bacon;13;Norfolk;78885;30995;10502;4689;7847;3090;0;0;0
333
+ Norfolk South West;Elizabeth Truss;13;Norfolk;76970;25515;8649;2217;11654;2075;0;0;0
334
+ Normanton, Pontefract and Castleford;Yvette Cooper;7;West Yorkshire;82592;9569;25213;1330;9785;0;0;0;0
335
+ Northampton North;Michael Ellis;13;Northamptonshire;59147;16699;13454;1401;6354;1503;0;0;0
336
+ Northampton South;David Mackintosh;13;Northamptonshire;61284;16163;12370;1673;7114;1403;0;0;161
337
+ Northamptonshire South;Andrea Leadsom;13;Northamptonshire;85092;36607;10191;3613;8204;2247;0;0;0
338
+ Norwich North;Chloe Smith;13;Norfolk;65136;19052;14589;1894;5986;1939;0;0;132
339
+ Norwich South;Clive Lewis;13;Norfolk;74875;11379;19033;6607;4539;6749;0;0;156
340
+ Nottingham East;Christopher Leslie;10;Nottinghamshire;60464;7314;19208;1475;3501;3473;0;0;238
341
+ Nottingham North;Graham Allen;10;Nottinghamshire;65918;7423;19283;847;6542;1088;0;0;160
342
+ Nottingham South;Lilian Greenwood;10;Nottinghamshire;68987;13761;20697;1532;4900;2345;0;0;230
343
+ Nuneaton;Marcus Jones;10;Warwickshire;68032;20827;15945;816;6582;1281;0;0;298
344
+ Old Bexley and Sidcup;James Brokenshire;17;Bexley;66035;24682;8879;1644;8528;1336;0;1216;463
345
+ Oldham East and Saddleworth;Debbie Abrahams;6;Eastern Manchester;72005;11527;17529;5718;8557;1152;0;0;0
346
+ Oldham West and Royton;Michael Meacher;6;Eastern Manchester;72341;8187;23630;1589;8892;839;0;0;0
347
+ Orpington;Joseph Johnson;17;Bromley;68129;28152;7645;3330;8173;1732;0;0;0
348
+ Oxford East;Andrew Smith;15;Oxfordshire;78974;10076;25356;5453;3451;5890;0;0;463
349
+ Oxford West and Abingdon;Nicola Blackwood;15;Oxfordshire;79767;26153;7274;16571;3963;2497;0;0;789
350
+ Pendle;Andrew Stephenson;5;Lancashire;64657;20978;15525;1487;5415;1043;0;0;0
351
+ Penistone and Stocksbridge;Angela Smith;8;South Yorkshire;71048;12968;19691;2957;10738;0;0;0;500
352
+ Penrith and The Border;Rory Stewart;4;Cumbria;65209;26202;6308;3745;5353;2313;0;0;0
353
+ Peterborough;Stewart Jackson;13;Cambridgeshire;72521;18684;16759;1774;7485;1218;0;0;1155
354
+ Plymouth Moor View;Johnny Mercer;18;Devon;68115;16020;14994;1265;9152;1023;0;0;152
355
+ Plymouth Sutton and Devonport;Oliver Colvile;18;Devon;73495;18120;17597;2008;6731;3401;0;0;106
356
+ Poole;Robert Syms;18;Dorset;72557;23745;6102;5572;7956;2198;0;0;1820
357
+ Poplar and Limehouse;Jim Fitzpatrick;16;Tower Hamlets;82076;12962;29886;2149;3128;2463;0;0;456
358
+ Portsmouth North;Penny Mordaunt;19;Hampshire;73105;21343;10806;2828;8660;1450;0;0;303
359
+ Portsmouth South;Flick Drummond;19;Hampshire;71639;14585;8184;9344;5595;3145;0;716;334
360
+ Preston;Mark Hendrick;5;Lancashire;59981;6688;18755;1244;5139;1643;0;0;0
361
+ Pudsey;Stuart Andrew;7;West Yorkshire;70533;23637;19136;1926;4689;1539;0;0;0
362
+ Putney;Justine Greening;17;Wandsworth;63918;23018;12838;2717;1989;2067;0;0;184
363
+ Rayleigh and Wickford;Mark Francois;14;Essex;77870;29088;6705;1622;11858;1529;0;0;2418
364
+ Reading East;Rob Wilson;19;Berkshire;74651;23217;16697;3719;3647;3214;0;0;0
365
+ Reading West;Alok Sharma;19;Berkshire;72302;23082;16432;2355;4826;1406;0;0;303
366
+ Redcar;Anna Turley;4;Teesside;64825;6630;17946;7558;7516;880;0;0;389
367
+ Redditch;Karen Lumley;11;Hereford and Worcestershire;65529;20771;13717;1349;7133;960;0;0;168
368
+ Reigate;Crispin Blunt;19;Surrey;73429;29151;6578;5369;6817;3434;0;0;0
369
+ Ribble South;Seema Kennedy;5;Lancashire;76489;24313;18368;2312;7377;0;0;0;0
370
+ Ribble Valley;Nigel Evans;5;Lancashire;77873;25404;11798;2756;8250;2193;0;0;1842
371
+ Richmond;Rishi Sunak;7;North Yorkshire;83451;27744;7124;3465;8194;2313;0;3348;1811
372
+ Richmond Park;Zac Goldsmith;17;Richmond Upon Thames;77297;34404;7296;11389;2464;3548;0;0;0
373
+ Rochdale;Simon Danczuk;6;Eastern Manchester;79170;7742;20961;4667;8519;1382;0;1535;624
374
+ Rochester and Strood;Kelly Tolhurst;20;Kent;79000;23142;10396;1251;16009;1516;0;0;202
375
+ Rochford and Southend East;James Duddridge;14;Essex;71935;20241;10765;1459;8948;2195;0;0;0
376
+ Romford;Andrew Rosindell;16;Havering;72594;25067;10268;1413;11208;1222;0;0;0
377
+ Romsey and Southampton North;Caroline Nokes;19;Hampshire;66519;26285;5749;8573;5511;2280;0;0;0
378
+ Rossendale and Darwen;Jake Berry;5;Lancashire;84011;22847;17193;806;6862;1046;0;0;270
379
+ Rother Valley;Kevin Barron;8;South Yorkshire;74275;10945;20501;1992;13204;0;0;0;377
380
+ Rotherham;Sarah Champion;8;South Yorkshire;63698;4656;19860;1093;11414;0;0;0;800
381
+ Rugby;Mark Pawsey;10;Warwickshire;79557;24040;13695;2776;6855;1415;0;0;225
382
+ Ruislip, Northwood and Pinner;Nick Hurd;17;Hillingdon;73219;30521;10297;2537;5598;1801;0;0;468
383
+ Runnymede and Weybridge;Philip Hammond;19;Surrey;73744;29901;7767;3362;6951;2071;0;0;0
384
+ Rushcliffe;Kenneth Clarke;10;Nottinghamshire;73294;28354;14525;2783;5943;3559;0;0;0
385
+ Rutland and Melton;Alan Duncan;10;Leicestershire;79789;30383;8383;4407;8678;2325;0;0;427
386
+ Saffron Walden;Sir Alan Haselhurst;14;Essex;80615;32926;6791;6079;7935;2174;0;0;1658
387
+ Salford and Eccles;Rebecca Long-Bailey;6;Central Manchester;74290;8823;21364;1614;7806;2251;0;0;1403
388
+ Salisbury;John Glen;15;Wiltshire;69590;28192;7771;5099;6152;2762;0;0;729
389
+ Scarborough and Whitby;Robert Goodwill;7;North Yorkshire;73511;20613;14413;2159;8162;2185;0;0;207
390
+ Scunthorpe;Nic Dakin;8;Humber area;64010;12259;15393;770;6329;887;0;1097;206
391
+ Sedgefield;Phil Wilson;4;Durham;62860;11432;18275;1370;6426;1213;0;0;0
392
+ Sefton Central;Bill Esterson;5;Merseyside;67746;14513;26359;2086;4879;1184;0;0;0
393
+ Selby and Ainsty;Nigel Adams;7;North Yorkshire;76082;27725;14168;1920;7389;1465;0;0;137
394
+ Sevenoaks;Michael Fallon;20;Kent;70741;28531;6448;3937;8970;2238;0;0;0
395
+ Sheffield Brightside and Hillsborough;Harry Harpham;8;South Yorkshire;73090;4407;22663;1802;8856;1712;0;0;613
396
+ Sheffield Central;Paul Blomfield;8;South Yorkshire;77014;4917;24308;4278;3296;6999;0;0;375
397
+ Sheffield Hallam;Nick Clegg;8;South Yorkshire;73658;7544;19862;22215;3575;1772;0;0;513
398
+ Sheffield Heeley;Louise Haigh;8;South Yorkshire;69265;6792;20269;4746;7315;2566;0;0;360
399
+ Sheffield South East;Clive Betts;8;South Yorkshire;70422;7242;21439;2226;9128;1117;0;0;533
400
+ Sherwood;Mark Spencer;10;Nottinghamshire;73334;22833;18186;1094;7399;1108;0;0;78
401
+ Shipley;Philip Davies;7;West Yorkshire;70466;25269;15645;1949;4479;2657;0;0;543
402
+ Shrewsbury and Atcham;Daniel Kawczynski;11;Shropshire;76460;24628;15063;4268;7813;2247;0;0;83
403
+ Shropshire North;Owen Paterson;11;Shropshire;78910;27041;10547;3148;9262;2575;0;0;0
404
+ Sittingbourne and Sheppey;Gordon Henderson;20;Kent;76018;24425;9673;1563;12257;1185;0;0;275
405
+ Skipton and Ripon;Julian Smith;7;North Yorkshire;76243;30248;9487;4057;7651;3116;0;0;0
406
+ Sleaford and North Hykeham;Stephen Phillips;8;Lincolnshire;88188;34805;10690;3500;9716;0;0;0;3233
407
+ Slough;Fiona Mactaggart;19;Berkshire;86366;16085;23421;1275;6274;1220;0;0;0
408
+ Solihull;Julian Knight;9;Coventry and Solihull;77251;26956;5693;14054;6361;1632;0;0;83
409
+ Somerset North;Liam Fox;15;Bristol area;80115;31540;8441;7486;7669;3806;0;0;0
410
+ Somerset North East;Jacob Rees-Mogg;15;Bristol area;69380;25439;12690;4029;6150;2802;0;0;0
411
+ Somerton and Frome;David Warburton;18;Somerset;83527;31960;4419;11692;6439;5434;0;0;365
412
+ South Holland and The Deepings;John Hayes;8;Lincolnshire;77015;29303;6122;1466;10736;1580;0;0;0
413
+ South Shields;Emma Lewell-Buck;4;Newcastle area;62730;6021;18589;639;7975;1614;0;1427;0
414
+ Southampton Itchen;Royston Smith;19;Hampshire;72309;18656;16340;1595;6010;1876;0;0;233
415
+ Southampton Test;Alan Whitehead;19;Hampshire;70285;14207;18017;2121;5566;2568;0;0;1173
416
+ Southend West;David Amess;14;Essex;66876;22175;8154;4129;7803;2083;0;0;165
417
+ Southport;John Pugh;5;Merseyside;67328;12330;8468;13652;7429;1230;0;0;992
418
+ Spelthorne;Kwasi Kwarteng;19;Surrey;71592;24386;9114;3163;10234;1724;0;0;458
419
+ St Albans;Anne Main;14;Hertfordshire;72507;25392;12660;10076;4271;2034;0;0;0
420
+ St Austell and Newquay;Steve Double;18;Cornwall;76607;20250;5150;12077;8503;2318;0;0;2063
421
+ St Helens North;Conor McGinn;5;Merseyside;75262;9087;26378;2046;6983;1762;0;0;0
422
+ St Helens South and Whiston;Marie Rimmer;5;Merseyside;77720;7707;28950;2737;6766;2237;0;0;0
423
+ St Ives;Derek Thomas;18;Cornwall;65570;18491;4510;16022;5720;3051;0;0;518
424
+ Stafford;Jeremy Lefroy;11;Staffordshire;68705;23606;14429;1348;6293;1390;0;1701;0
425
+ Staffordshire Moorlands;Karen Bradley;11;Staffordshire;63104;21770;11596;1759;6236;1226;0;0;0
426
+ Staffordshire South;Gavin Williamson;11;Staffordshire;84243;29478;9107;1448;8267;1298;0;0;0
427
+ Stalybridge and Hyde;Jonathan Reynolds;6;Eastern Manchester;69081;11761;18447;1256;7720;1850;0;0;0
428
+ Stevenage;Stephen McPartland;14;Hertfordshire;70597;21291;16336;1582;6864;1369;0;0;357
429
+ Stockport;Ann Coffey;6;Eastern Manchester;63931;9710;19771;3034;5206;1753;0;0;175
430
+ Stockton North;Alex Cunningham;4;Teesside;66126;11069;19436;884;7581;0;0;0;601
431
+ Stockton South;James Wharton;4;Teesside;75109;24221;19175;1366;5480;952;0;0;603
432
+ Stoke-on-Trent Central;Tristram Hunt;11;Staffordshire;62250;7008;12220;1296;7041;1123;0;2120;276
433
+ Stoke-on-Trent North;Ruth Smeeth;11;Staffordshire;72689;10593;15429;1137;9542;1091;0;0;862
434
+ Stoke-on-Trent South;Robert Flello;11;Staffordshire;68788;12780;15319;1309;8298;1029;0;0;372
435
+ Stone;William Cash;11;Staffordshire;67339;25733;9483;2473;7620;1191;0;0;531
436
+ Stourbridge;Margot James;9;Black Country;69077;21195;14501;1538;7774;1021;0;0;0
437
+ Stratford-on-Avon;Nadhim Zahawi;10;Warwickshire;70914;29674;6677;6182;6798;2128;0;0;0
438
+ Streatham;Chuka Umunna;17;Lambeth;78673;12540;26474;4491;1602;4421;0;0;405
439
+ Stretford and Urmston;Kate Green;6;Central Manchester;69490;12916;24601;1362;5068;2187;0;0;252
440
+ Stroud;Neil Carmichael;15;Gloucestershire;80522;27813;22947;2086;4848;2779;0;0;346
441
+ Suffolk Central and Ipswich North;Daniel Poulter;13;Suffolk;78782;30317;10173;3314;7459;2664;0;0;162
442
+ Suffolk Coastal;Therese Coffey;13;Suffolk;77537;28855;10013;4777;8655;3294;0;0;0
443
+ Suffolk South;James Cartlidge;13;Suffolk;73220;27546;10001;4044;7897;2253;0;0;166
444
+ Suffolk West;Matthew Hancock;13;Suffolk;76197;25684;8604;2465;10700;1779;0;0;0
445
+ Sunderland Central;Julie Elliott;4;Newcastle area;72933;9780;20959;1105;7997;1706;0;0;215
446
+ Surrey East;Sam Gyimah;19;Surrey;79654;32211;6627;5189;9553;2159;0;0;364
447
+ Surrey Heath;Michael Gove;19;Surrey;79515;32582;6100;4937;7778;2400;0;0;634
448
+ Surrey South West;Jeremy Hunt;19;Surrey;77050;34199;5415;3586;5643;3105;0;4851;320
449
+ Sussex Mid;Nicholas Soames;20;West Sussex;79520;32268;7982;6604;6898;2453;0;0;1287
450
+ Sutton and Cheam;Paul Scully;17;Sutton;69160;20732;5546;16811;5341;1051;0;0;424
451
+ Sutton Coldfield;Andrew Mitchell;9;Birmingham;74956;27782;11365;2627;7489;1426;0;0;165
452
+ Swindon North;Justin Tomlinson;15;Wiltshire;81005;26295;14509;1704;8011;1723;0;0;0
453
+ Swindon South;Robert Buckland;15;Wiltshire;73956;22777;16992;1817;5920;1757;0;0;0
454
+ Tamworth;Christopher Pincher;11;Staffordshire;71912;23606;12304;1427;8727;1110;0;0;0
455
+ Tatton;George Osborne;11;Cheshire;64512;26552;8311;3850;4871;1714;0;0;0
456
+ Taunton Deane;Rebecca Pow;18;Somerset;81830;27849;5347;12358;6921;2630;0;2568;214
457
+ Telford;Lucy Allan;11;Shropshire;66166;16094;15364;927;7330;930;0;0;0
458
+ Tewkesbury;Laurence Robertson;15;Gloucestershire;78500;30176;8204;7629;7128;2207;0;0;0
459
+ Thanet North;Roger Gale;20;Kent;70504;23045;8411;1645;12097;1719;0;0;136
460
+ Thanet South;Craig Mackinlay;20;Kent;70182;18838;11740;932;16026;1076;0;0;789
461
+ Thirsk and Malton;Kevin Hollinrake;7;North Yorkshire;77451;27545;8089;4703;7805;2404;0;0;1819
462
+ Thornbury and Yate;Luke Hall;15;Bristol area;65884;19924;3775;18429;5126;1316;0;0;0
463
+ Thurrock;Jackie Doyle-Price;14;Essex;77569;16692;16156;644;15718;0;0;0;354
464
+ Tiverton and Honiton;Neil Parish;18;Devon;76270;29030;6835;5626;8857;3415;0;0;0
465
+ Tonbridge and Malling;Tom Tugendhat;20;Kent;74877;31887;7604;3660;8153;2366;0;0;0
466
+ Tooting;Sadiq Khan;17;Wandsworth;76778;22421;25263;2107;1537;2201;0;0;0
467
+ Torbay;Kevin Foster;18;Devon;76259;19551;4166;16265;6540;1557;0;0;0
468
+ Totnes;Sarah Wollaston;18;Devon;68630;24941;5988;4667;6656;4845;0;0;0
469
+ Tottenham;David Lammy;16;Haringey;70809;5090;28654;1756;1512;3931;0;1324;291
470
+ Truro and Falmouth;Sarah Newton;18;Cornwall;73601;22681;7814;8681;5967;4483;0;0;1918
471
+ Tunbridge Wells;Greg Clark;20;Kent;73429;30181;7307;4342;6481;2659;0;0;458
472
+ Twickenham;Tania Mathias;17;Richmond Upon Thames;80242;25580;7129;23563;3069;2463;0;0;200
473
+ Tynemouth;Alan Campbell;4;Newcastle area;77523;17551;25791;1595;6541;2017;0;0;0
474
+ Tyneside North;Mary Glindon;4;Newcastle area;79286;8997;26191;2075;7618;1442;0;0;495
475
+ Uxbridge and South Ruislip;Boris Johnson;17;Hillingdon;70634;22511;11816;2215;6346;1414;0;0;509
476
+ Vauxhall;Kate Hoey;17;Lambeth;81698;13070;25778;3312;1385;3658;0;0;738
477
+ Wakefield;Mary Creagh;7;West Yorkshire;70521;14688;17301;1483;7862;1069;0;0;570
478
+ Wallasey;Angela Eagle;5;Merseyside;65495;9828;26176;1011;5063;1288;0;0;0
479
+ Walsall North;David Winnick;9;Black Country;67080;12455;14392;840;8122;529;0;0;554
480
+ Walsall South;Valerie Vaz;9;Black Country;67743;13733;19740;676;6540;1149;0;0;0
481
+ Walthamstow;Stella Creasy;16;Waltham Forest;67289;5584;28779;1661;2507;2661;0;0;604
482
+ Wansbeck;Ian Lavery;4;Northumberland;63273;8386;19267;2407;7014;1454;0;0;0
483
+ Wantage;Ed Vaizey;15;Oxfordshire;83516;31092;9343;7611;7288;2986;0;0;0
484
+ Warley;John Spellar;9;Black Country;63740;7310;22012;805;6237;1465;0;0;0
485
+ Warrington North;Helen Jones;11;Cheshire;72632;12797;21720;1881;7757;1264;0;0;0
486
+ Warrington South;David Mowat;11;Cheshire;85566;25928;23178;3335;4909;1765;0;0;238
487
+ Warwick and Leamington;Chris White;10;Warwickshire;71750;24249;17643;2512;4183;1994;0;0;0
488
+ Warwickshire North;Craig Tracey;10;Warwickshire;70152;20042;17069;978;8256;894;0;0;138
489
+ Washington and Sunderland West;Sharon Hodgson;4;Newcastle area;68188;7033;20478;993;7321;1091;0;0;341
490
+ Watford;Richard Harrington;14;Hertfordshire;84270;24400;14606;10152;5481;1332;0;0;178
491
+ Waveney;Peter Aldous;13;Suffolk;80171;22104;19696;1055;7580;1761;0;0;0
492
+ Wealden;Nus Ghani;20;East Sussex;80252;32508;6165;5180;9541;3623;0;0;0
493
+ Weaver Vale;Graham Evans;11;Cheshire;68407;20227;19421;1395;4547;1183;0;0;94
494
+ Wellingborough;Peter Bone;13;Northamptonshire;77127;26265;9839;2240;9868;2218;0;0;0
495
+ Wells;James Heappey;18;Somerset;79405;26247;3780;18662;5644;2331;0;0;240
496
+ Welwyn Hatfield;Grant Shapps;14;Hertfordshire;73264;25281;13128;3140;6556;1742;0;0;358
497
+ Wentworth and Dearne;John Healey;8;South Yorkshire;74283;6441;24571;1135;10733;0;0;0;309
498
+ West Bromwich East;Tom Watson;9;Black Country;63641;9347;18817;751;7949;628;0;0;0
499
+ West Bromwich West;Adrian Bailey;9;Black Country;65533;8365;16578;550;8836;697;0;0;0
500
+ West Ham;Lyn Brown;16;Newham;90634;8146;36132;1430;3950;2651;0;0;484
501
+ Westminster North;Karen Buck;16;City of Westminster;62346;16527;18504;1457;1489;1322;0;0;215
502
+ Westmorland and Lonsdale;Tim Farron;4;Cumbria;65857;16245;2661;25194;3031;1798;0;0;0
503
+ Weston-Super-Mare;John Penrose;15;Bristol area;79493;25203;9594;5486;9366;2592;0;0;311
504
+ Wigan;Lisa Nandy;6;Western Manchester;76068;9389;23625;1255;8818;1273;0;0;933
505
+ Wiltshire North;James Gray;15;Wiltshire;67858;28938;4930;7892;5813;2350;0;0;633
506
+ Wiltshire South West;Andrew Murrison;15;Wiltshire;73030;27198;6948;5482;9030;2985;0;0;0
507
+ Wimbledon;Stephen Hammond;17;Merton;65853;25225;12606;6129;2476;1986;0;0;0
508
+ Winchester;Steve Brine;19;Hampshire;74119;30425;4613;13511;4122;2645;0;0;0
509
+ Windsor;Adam Afriyie;19;Berkshire;68797;31797;6714;4323;4992;1834;0;0;500
510
+ Wirral South;Alison McGovern;5;Merseyside;56956;15566;20165;1474;3737;895;0;0;0
511
+ Wirral West;Margaret Greenwood;5;Merseyside;55377;18481;18898;1433;2772;0;0;0;274
512
+ Witham;Priti Patel;14;Essex;67090;27123;7467;2891;7569;2038;0;0;80
513
+ Witney;David Cameron;15;Oxfordshire;79767;35201;10046;3953;5352;2970;0;0;960
514
+ Woking;Jonathan Lord;19;Surrey;74287;29199;8389;6047;5873;2109;0;0;347
515
+ Wokingham;John Redwood;19;Berkshire;77881;32329;8132;7572;5516;2092;0;0;358
516
+ Wolverhampton North East;Emma Reynolds;9;Black Country;61073;10174;15669;935;6524;701;0;0;0
517
+ Wolverhampton South East;Pat McFadden;9;Black Country;62561;7761;18539;798;7061;605;0;0;0
518
+ Wolverhampton South West;Rob Marris;9;Black Country;60375;16573;17374;845;4310;1058;0;0;49
519
+ Worcester;Robin Walker;11;Hereford and Worcestershire;71003;22534;16888;1677;6378;2024;0;0;222
520
+ Worcestershire Mid;Nigel Huddleston;11;Hereford and Worcestershire;73069;29763;7548;3750;9231;1933;0;0;0
521
+ Worcestershire West;Harriett Baldwin;11;Hereford and Worcestershire;73415;30342;7244;5245;7764;3505;0;0;0
522
+ Workington;Sue Hayman;4;Cumbria;58672;11596;16282;1708;7538;1149;0;0;190
523
+ Worsley and Eccles South;Barbara Keeley;6;Central Manchester;72174;12654;18600;1100;7688;1242;0;0;764
524
+ Worthing East and Shoreham;Tim Loughton;20;West Sussex;74272;24686;9737;3360;8267;2605;0;0;1243
525
+ Worthing West;Peter Bottomley;20;West Sussex;75617;26124;7955;4477;9269;2938;0;0;0
526
+ Wrekin, The;Mark Pritchard;11;Shropshire;65942;22579;11836;1959;7620;1443;0;0;0
527
+ Wycombe;Steven Baker;14;Buckinghamshire;76371;26444;11588;4546;5198;3086;0;0;577
528
+ Wyre and Preston North;Ben Wallace;5;Lancashire;70697;26528;12377;2712;6577;1699;0;0;0
529
+ Wyre Forest;Mark Garnier;11;Hereford and Worcestershire;77451;22394;9523;1228;7967;1117;0;7211;0
530
+ Wythenshawe and Sale East;Mike Kane;6;Central Manchester;75980;11124;21693;1927;6354;1658;0;0;507
531
+ Yeovil;Marcus Fysh;18;Somerset;82446;24178;4053;18865;7646;2191;0;0;0
532
+ York Central;Rachael Maskell;7;North Yorkshire;75351;13496;20212;3804;4795;4791;0;0;579
533
+ York Outer;Julian Sturdy;7;North Yorkshire;78561;26477;13348;6269;5251;2558;0;0;0
534
+ Yorkshire East;Greg Knight;8;Humber area;81030;25276;10343;2966;8955;1731;0;0;720
535
+ Aberavon;Stephen Kinnock;12;West Glamorgan;49821;3742;15416;1397;4971;711;3663;1137;486
536
+ Aberconwy;Guto Bebb;12;Clwyd;45540;12513;8514;1391;3467;727;3536;0;0
537
+ Alyn and Deeside;Mark Tami;12;Clwyd;62016;13197;16540;1733;7260;976;1608;0;0
538
+ Arfon;Hywel Williams;12;Gwynedd;40492;3521;8122;718;2277;0;11790;0;409
539
+ Blaenau Gwent;Nick Smith;12;Gwent;51332;3419;18380;620;5677;738;2849;0;0
540
+ Brecon and Radnorshire;Christopher Davies;12;Powys;54311;16453;5904;11351;3338;1261;1767;0;0
541
+ Bridgend;Madeleine Moon;12;Mid Glamorgan;59998;12697;14624;1648;5911;736;2784;763;290
542
+ Caerphilly;Wayne David;12;Gwent;62793;6683;17864;935;7791;937;5895;0;178
543
+ Cardiff Central;Jo Stevens;12;South Glamorgan;57454;5674;15462;10481;2499;2461;1925;0;144
544
+ Cardiff North;Craig Williams;12;South Glamorgan;67193;21709;19572;1953;3953;1254;2301;0;409
545
+ Cardiff South and Penarth;Stephen Doughty;12;South Glamorgan;75714;12513;19966;2318;6423;1746;3443;0;258
546
+ Cardiff West;Kevin Brennan;12;South Glamorgan;66758;11014;17803;2069;4923;1704;6096;0;183
547
+ Carmarthen East and Dinefwr;Jonathan Edwards;12;Dyfed;55750;8336;9541;928;4363;1091;15140;0;0
548
+ Carmarthen West and Pembrokeshire South;Simon Hart;12;Dyfed;57755;17626;11572;963;4698;1290;4201;0;0
549
+ Ceredigion;Mark Williams;12;Dyfed;54215;4123;3615;13414;3829;2088;10347;0;0
550
+ Clwyd South;Susan Elan Jones;12;Clwyd;54996;10649;13051;1349;5480;915;3620;0;0
551
+ Clwyd West;David Jones;12;Clwyd;58657;16463;9733;1387;4988;0;4651;0;806
552
+ Cynon Valley;Ann Clwyd;12;Mid Glamorgan;51421;3676;14532;830;4976;799;5126;0;533
553
+ Delyn;David Hanson;12;Clwyd;53639;12257;15187;1380;6150;680;1803;0;0
554
+ Dwyfor Meirionnydd;Liz Saville Roberts;12;Gwynedd;44395;6550;3904;1153;3126;981;11811;1388;0
555
+ Gower;Byron Davies;12;West Glamorgan;61820;15862;15835;1552;4773;1161;3051;0;524
556
+ Islwyn;Christopher Evans;12;Gwent;55075;5366;17336;950;6932;659;3794;0;364
557
+ Llanelli;Nia Griffith;12;Dyfed;59314;5534;15948;751;6269;689;8853;0;530
558
+ Merthyr Tydfil and Rhymney;Gerald Jones;12;Mid Glamorgan;61719;3292;17619;1351;6106;603;3099;459;186
559
+ Monmouth;David Davies;12;Gwent;65706;23701;12719;2496;4942;1629;1875;0;100
560
+ Montgomeryshire;Glyn Davies;12;Powys;48491;15204;1900;9879;3769;1260;1745;0;0
561
+ Neath;Christina Rees;12;West Glamorgan;56099;5691;16270;1173;6094;1185;6722;0;0
562
+ Newport East;Jessica Morden;12;Gwent;56018;9585;14290;2251;6466;887;1231;0;398
563
+ Newport West;Paul Flynn;12;Gwent;62145;13123;16633;1581;6134;1272;1604;0;0
564
+ Ogmore;Huw Irranca-Davies;12;Mid Glamorgan;55320;5620;18663;1072;5420;754;3556;0;165
565
+ Pontypridd;Owen Smith;12;Mid Glamorgan;58929;6569;15554;4904;5085;992;4348;0;430
566
+ Preseli Pembrokeshire;Stephen Crabb;12;Dyfed;57291;16383;11414;780;4257;1452;2518;3729;23
567
+ Rhondda;Chris Bryant;12;Mid Glamorgan;51809;2116;15976;474;3998;453;8521;0;0
568
+ Swansea East;Carolyn Harris;12;West Glamorgan;58011;5142;17807;1392;5779;0;3498;0;0
569
+ Swansea West;Geraint Davies;12;West Glamorgan;58776;7931;14967;3178;4744;1784;2266;0;286
570
+ Torfaen;Nick Thomas-Symonds;12;Gwent;61896;8769;16938;1271;7203;746;2169;697;144
571
+ Vale of Clwyd;James Davies;12;Clwyd;56505;13760;13523;915;4577;0;2486;0;0
572
+ Vale of Glamorgan;Alun Cairns;12;South Glamorgan;72187;23607;16727;1309;5489;1054;2869;0;238
573
+ Wrexham;Ian Lucas;12;Clwyd;50992;10350;12181;1735;5072;669;2501;0;211
574
+ Ynys Mon;Albert Owen;12;Gwynedd;49944;7393;10871;751;5121;0;10642;0;148
575
+ Aberdeen North;Kirsty Blackman;1;Grampian;67745;5304;11397;2050;0;0;24793;0;392
576
+ Aberdeen South;Callum McCaig;1;Grampian;68056;11087;12991;2252;897;964;20221;0;139
577
+ Aberdeenshire West and Kincardine;Stuart Donaldson;1;Grampian;73445;15916;2487;11812;1006;885;22949;0;141
578
+ Airdrie and Shotts;Neil Gray;2;Glasgow area;66715;3389;15108;678;1088;0;23887;0;136
579
+ Angus;Michael Weir;1;Tayside;65792;12900;3919;1216;1355;965;24130;0;0
580
+ Argyll and Bute;Brendan O'Hara;2;Argyll and Bute;68875;7733;5394;14486;1311;0;22959;0;0
581
+ Ayr Carrick and Cumnock;Corri Wilson;2;Ayrshire and Lanark;72985;10355;14227;855;1280;0;25492;0;0
582
+ Ayrshire Central;Philippa Whitford;2;Ayrshire and Lanark;69982;8803;13410;917;0;645;26999;0;0
583
+ Ayrshire North and Arran;Patricia Gibson;2;Ayrshire and Lanark;75772;7968;15068;896;1296;0;28641;0;0
584
+ Banff and Buchan;Eilidh Whiteford;1;Grampian;68609;13148;2647;2347;0;0;27487;0;0
585
+ Berwickshire, Roxburgh and Selkirk;Calum Kerr;1;Borders;74179;19817;2700;10294;1316;631;20145;0;135
586
+ Caithness Sutherland and Easter Ross;Paul Monaghan;1;Highland;47558;2326;3061;11987;981;0;15831;0;0
587
+ Coatbridge, Chryston and Bellshill;Philip Boswell;2;Glasgow area;73813;3209;17195;549;1049;0;28696;0;0
588
+ Cumbernauld, Kilsyth and Kirkintilloch East;Stuart McDonald;2;Glasgow area;67009;3891;14820;1099;0;0;29572;0;0
589
+ Dumfries and Galloway;Richard Arkless;2;Dumfries and Galloway;75249;16926;13982;953;1301;0;23440;0;0
590
+ Dumfriesshire, Clydesdale and Tweeddale;David Mundell;2;Dumfries and Galloway;68483;20759;7711;1392;1472;839;19961;0;0
591
+ Dunbartonshire East;John Nicolson;2;Glasgow area;66966;4727;6754;19926;567;804;22093;0;0
592
+ Dunbartonshire West;Martin Docherty;2;Glasgow area;69193;3597;16027;816;0;0;30198;0;503
593
+ Dundee East;Stewart Hosie;1;Tayside;66960;7206;9603;1387;0;895;28765;0;329
594
+ Dundee West;Chris Law;1;Tayside;66287;3852;10592;1057;0;1225;27684;0;304
595
+ Dunfermline and West Fife;Douglas Chapman;1;Fife;78037;6623;17744;2232;0;1195;28096;0;0
596
+ East Kilbride, Strathaven and Lesmahagow;Lisa Cameron;2;Ayrshire and Lanark;83071;7129;17151;1042;1221;0;33678;0;318
597
+ East Lothian;George Kerevan;1;Edinburgh area;79481;11511;18301;1517;1178;1245;25104;0;158
598
+ Edinburgh East;Tommy Sheppard;1;Edinburgh area;66178;4670;14082;1325;898;2809;23188;0;117
599
+ Edinburgh North and Leith;Deidre Brock;1;Edinburgh area;80978;9378;18145;2634;847;3140;23742;0;122
600
+ Edinburgh South;Ian Murray;1;Edinburgh area;65846;8626;19293;1823;601;2090;16656;0;197
601
+ Edinburgh South West;Joanna Cherry;1;Edinburgh area;72178;10444;14033;1920;1072;1965;22168;0;0
602
+ Edinburgh West;Michelle Thomson;1;Edinburgh area;71749;6732;6425;18168;1015;1140;21378;0;0
603
+ Falkirk;John McNally;1;Central;83380;7325;15130;1225;1829;0;34831;0;0
604
+ Fife North East;Stephen Gethins;1;Fife;62003;7373;3476;14179;0;1387;18523;0;325
605
+ Glasgow Central;Alison Thewliss;2;Glasgow area;70945;2359;12996;612;786;1559;20658;0;348
606
+ Glasgow East;Natalie McGarry;2;Glasgow area;70378;2544;13729;318;1105;381;24116;0;224
607
+ Glasgow North;Patrick Grady;2;Glasgow area;58875;2901;10315;1012;486;2284;19610;0;314
608
+ Glasgow North East;Anne McLaughlin;2;Glasgow area;66678;1769;12754;300;0;615;21976;225;218
609
+ Glasgow North West;Carol Monaghan;2;Glasgow area;68418;3692;13544;1194;0;1167;23908;0;349
610
+ Glasgow South;Stewart McDonald;2;Glasgow area;74051;4752;14504;1019;0;1431;26773;0;299
611
+ Glasgow South West;Christopher Stephens;2;Glasgow area;66209;2036;13438;406;970;507;23388;0;176
612
+ Glenrothes;Peter Grant;1;Fife;69781;3685;14562;892;0;0;28459;0;0
613
+ Gordon;Alex Salmond;1;Grampian;79393;6807;3441;19030;1166;0;27717;0;0
614
+ Inverclyde;Ronnie Cowan;2;Glasgow area;59350;4446;13522;1106;715;0;24585;0;233
615
+ Inverness Nairn Badenoch and Strathspey;Drew Hendry;1;Highland;77268;3410;4311;18029;1236;1367;28838;0;422
616
+ Kilmarnock and Loudoun;Alan Brown;2;Ayrshire and Lanark;75233;6752;16362;789;0;0;30000;0;0
617
+ Kirkcaldy and Cowdenbeath;Roger Mullin;1;Fife;75941;5223;17654;1150;1237;0;27628;0;0
618
+ Lanark and Hamilton East;Angela Crawley;2;Ayrshire and Lanark;78846;8772;16876;1203;1431;0;26976;0;0
619
+ Linlithgow and East Falkirk;Martyn Day;1;Edinburgh area;86955;7384;19121;1252;1682;0;32055;0;103
620
+ Livingston;Hannah Bardell;1;Edinburgh area;82373;5929;15893;1232;1757;0;32736;0;0
621
+ Midlothian;Owen Thompson;1;Edinburgh area;67875;5760;14594;1132;1173;1219;24453;0;0
622
+ Moray;Angus Robertson;1;Grampian;71685;15319;4898;1395;1939;1345;24384;0;0
623
+ Motherwell and Wishaw;Marion Fellows;2;Glasgow area;70269;3695;15377;601;1289;0;27275;0;0
624
+ Na h-Eileanan An Iar (Western Isles);Angus MacNeil;1;Western Isles;21744;1215;4560;456;0;0;8662;1045;0
625
+ Ochil and South Perthshire;Tasmina Ahmed-Sheikh;1;Central;77370;11987;16452;1481;1331;0;26620;0;0
626
+ Orkney and Shetland;Alistair Carmichael;1;Orkney and Shetland;34551;2025;1624;9407;1082;0;8590;0;0
627
+ Paisley and Renfrewshire North;Gavin Newlands;2;Glasgow area;66206;6183;16525;1055;0;703;25601;0;395
628
+ Paisley and Renfrewshire South;Mhairi Black;2;Glasgow area;61281;3526;17864;1010;0;0;23548;0;278
629
+ Perth and North Perthshire;Peter Wishart;1;Tayside;72447;17738;4413;2059;1110;1146;27379;0;355
630
+ Renfrewshire East;Kirsten Oswald;2;Glasgow area;69982;12465;19295;1069;888;0;23013;0;0
631
+ Ross Skye and Lochaber;Ian Blackford;1;Highland;54169;2598;2043;14995;814;1051;20119;0;191
632
+ Rutherglen and Hamilton West;Margaret Ferrier;2;Ayrshire and Lanark;82701;4350;20304;1045;1301;0;30279;0;336
633
+ Stirling;Steven Paterson;1;Central;67236;12051;13303;1392;0;1606;23783;0;0
634
+ Antrim East;Sammy Wilson;3;Antrim;62810;6308;1639;12103;3660;0;2314;5021;2452
635
+ Antrim North;Ian Paisley Jr;3;Antrim;75874;5054;2925;18107;1341;0;5143;6561;2776
636
+ Antrim South;Danny Kinahan;3;Antrim;67423;11942;2990;10993;0;0;4699;3576;2323
637
+ Belfast East;Gavin Robinson;3;Antrim;63154;0;127;19575;0;1058;823;16978;1121
638
+ Belfast North;Nigel Dodds;3;Antrim;68552;0;3338;19096;0;0;13770;2941;1448
639
+ Belfast South;Dr Alasdair McDonnell;3;Antrim;64912;3549;9560;8654;1900;2238;5402;6711;943
640
+ Belfast West;Paul Maskey;3;Antrim;62685;1088;3475;2773;765;0;19163;6798;1267
641
+ Down North;Lady Sylvia Hermon;3;Down;64207;0;355;8487;1482;1958;273;17689;5703
642
+ Down South;Margaret Ritchie;3;Down;75215;3964;18077;3486;3044;0;12186;1622;318
643
+ Fermanagh and South Tyrone;Tom Elliott;3;Fermanagh;70106;23608;2732;0;0;788;23078;0;658
644
+ Foyle;Mark Durkan;3;Londonderry;70035;1226;17725;4573;832;0;11679;835;132
645
+ Lagan Valley;Jeffrey Donaldson;3;Antrim;71140;6055;2500;19055;2200;0;1144;5544;3297
646
+ Londonderry East;Gregory Campbell;3;Londonderry;66925;5333;4268;14663;0;0;6859;2642;949
647
+ Newry and Armagh;Mickey Brady;3;Armagh;77622;16312;12026;0;0;0;20488;0;1051
648
+ Strangford;Jim Shannon;3;Down;64286;4868;2335;15053;2237;0;876;4687;3868
649
+ Tyrone West;Pat Doherty;3;Tyrone;63854;6144;6444;6747;0;780;16807;869;863
650
+ Ulster Mid;Francie Molloy;3;Tyrone;67831;6318;5055;5465;863;0;19935;1892;1394
651
+ Upper Bann;David Simpson;3;Armagh;80052;13166;4238;15430;0;0;11593;1780;1012