tidyr/0000755000176200001440000000000013612577552011422 5ustar liggesuserstidyr/NAMESPACE0000644000176200001440000000711213612144056012627 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(complete,data.frame) S3method(complete,default) S3method(complete_,data.frame) S3method(drop_na,data.frame) S3method(drop_na,default) S3method(drop_na_,data.frame) S3method(expand,data.frame) S3method(expand,default) S3method(expand,grouped_df) S3method(expand_,data.frame) S3method(extract,data.frame) S3method(extract,default) S3method(extract_,data.frame) S3method(fill,data.frame) S3method(fill,default) S3method(fill_,data.frame) S3method(full_seq,Date) S3method(full_seq,POSIXct) S3method(full_seq,numeric) S3method(gather,data.frame) S3method(gather,default) S3method(gather_,data.frame) S3method(nest,data.frame) S3method(nest,grouped_df) S3method(nest,tbl_df) S3method(nest_legacy,data.frame) S3method(nest_legacy,tbl_df) S3method(replace_na,data.frame) S3method(replace_na,default) S3method(separate,data.frame) S3method(separate,default) S3method(separate_,data.frame) S3method(separate_rows,data.frame) S3method(separate_rows,default) S3method(separate_rows_,data.frame) S3method(spread,data.frame) S3method(spread,default) S3method(spread_,data.frame) S3method(unite,data.frame) S3method(unite,default) S3method(unite_,data.frame) S3method(unnest,data.frame) S3method(unnest_legacy,data.frame) export("%>%") export(as_tibble) export(build_longer_spec) export(build_wider_spec) export(chop) export(complete) export(complete_) export(contains) export(crossing) export(crossing_) export(drop_na) export(drop_na_) export(ends_with) export(everything) export(expand) export(expand_) export(expand_grid) export(extract) export(extract_) export(extract_numeric) export(fill) export(fill_) export(full_seq) export(gather) export(gather_) export(hoist) export(last_col) export(matches) export(nest) export(nest_) export(nest_legacy) export(nesting) export(nesting_) export(num_range) export(one_of) export(pack) export(pivot_longer) export(pivot_longer_spec) export(pivot_wider) export(pivot_wider_spec) export(replace_na) export(separate) export(separate_) export(separate_rows) export(separate_rows_) export(spread) export(spread_) export(starts_with) export(tibble) export(tidyr_legacy) export(tribble) export(unchop) export(uncount) export(unite) export(unite_) export(unnest) export(unnest_) export(unnest_auto) export(unnest_legacy) export(unnest_longer) export(unnest_wider) export(unpack) import(rlang) import(vctrs) importFrom(Rcpp,sourceCpp) importFrom(dplyr,tbl_vars) importFrom(glue,glue) importFrom(lifecycle,deprecated) importFrom(magrittr,"%>%") importFrom(purrr,accumulate) importFrom(purrr,discard) importFrom(purrr,every) importFrom(purrr,keep) importFrom(purrr,map) importFrom(purrr,map2) importFrom(purrr,map2_chr) importFrom(purrr,map2_dbl) importFrom(purrr,map2_df) importFrom(purrr,map2_int) importFrom(purrr,map2_lgl) importFrom(purrr,map_at) importFrom(purrr,map_chr) importFrom(purrr,map_dbl) importFrom(purrr,map_df) importFrom(purrr,map_if) importFrom(purrr,map_int) importFrom(purrr,map_lgl) importFrom(purrr,pmap) importFrom(purrr,pmap_chr) importFrom(purrr,pmap_dbl) importFrom(purrr,pmap_df) importFrom(purrr,pmap_int) importFrom(purrr,pmap_lgl) importFrom(purrr,reduce) importFrom(purrr,some) importFrom(purrr,transpose) importFrom(tibble,as_tibble) importFrom(tibble,tibble) importFrom(tibble,tribble) importFrom(tidyselect,contains) importFrom(tidyselect,ends_with) importFrom(tidyselect,everything) importFrom(tidyselect,last_col) importFrom(tidyselect,matches) importFrom(tidyselect,num_range) importFrom(tidyselect,one_of) importFrom(tidyselect,starts_with) importFrom(utils,packageVersion) importFrom(utils,type.convert) useDynLib(tidyr, .registration = TRUE) tidyr/LICENSE0000644000176200001440000000007013437754024012420 0ustar liggesusersYEAR: 2014 COPYRIGHT HOLDER: Hadley Wickham and RStudio tidyr/README.md0000644000176200001440000001061613612144040012663 0ustar liggesusers # tidyr [![CRAN status](https://www.r-pkg.org/badges/version/tidyr)](https://cran.r-project.org/package=tidyr) [![Travis build status](https://travis-ci.org/tidyverse/tidyr.svg?branch=master)](https://travis-ci.org/tidyverse/tidyr) [![Codecov test coverage](https://codecov.io/gh/tidyverse/tidyr/branch/master/graph/badge.svg)](https://codecov.io/gh/tidyverse/tidyr?branch=master) ## Overview The goal of tidyr is to help you create **tidy data**. Tidy data is data where: 1. Every column is variable. 2. Every row is an observation.. 3. Every cell is a single value. Tidy data describes a standard way of storing data that is used wherever possible throughout the [tidyverse](https://tidyverse.org). If you ensure that your data is tidy, you’ll spend less time fighting with the tools and more time working on your analysis. Learn more about tidy data in `vignette("tidy-data")`. ## Installation ``` r # The easiest way to get tidyr is to install the whole tidyverse: install.packages("tidyverse") # Alternatively, install just tidyr: install.packages("tidyr") # Or the development version from GitHub: # install.packages("devtools") devtools::install_github("tidyverse/tidyr") ``` ## Cheatsheet ## Getting started ``` r library(tidyr) ``` tidyr functions fall into five main categories: - “Pivotting” which converts between long and wide forms. tidyr 1.0.0 introduces `pivot_longer()` and `pivot_wider()`, replacing the older `spread()` and `gather()` functions. See `vignette("pivot")` for more details. - “Rectangling”, which turns deeply nested lists (as from JSON) into tidy tibbles. See `unnest_longer()`, `unnest_wider()`, `hoist()`, and `vignette("rectangle")` for more details. - Nesting converts grouped data to a form where each group becomes a single row containing a nested data frame, and unnesting does the opposite. See `nest()`, `unnest()`, and `vignette("nest")` for more details. - Splitting and combining character columns. Use `separate()` and `extract()` to pull a single character column into multiple columns; use `unite()` to combine multiple columns into a single character column. - Make implicit missing values explicit with `complete()`; make explicit missing values implicit with `drop_na()`; replace missing values with next/previous value with `fill()`, or a known value with `replace_na()`. ## Related work tidyr replaces reshape2 (2010-2014) and reshape (2005-2010). Somewhat counterintuitively, each iteration of the package has done less. tidyr is designed specifically for tidying data, not general reshaping (reshape2), or the general aggregation (reshape). [data.table](http://r-datatable.com/) provides high-performance implementations of `melt()` and `dcast()` If you’d like to read more about data reshaping from a CS perspective, I’d recommend the following three papers: - [Wrangler: Interactive visual specification of data transformation scripts](http://vis.stanford.edu/papers/wrangler) - [An interactive framework for data cleaning](https://www.eecs.berkeley.edu/Pubs/TechRpts/2000/CSD-00-1110.pdf) (Potter’s wheel) - [On efficiently implementing SchemaSQL on a SQL database system](https://www.vldb.org/conf/1999/P45.pdf) To guide your reading, here’s a translation between the terminology used in different places: | tidyr | gather | spread | | ------------ | ------- | ------ | | reshape(2) | melt | cast | | spreadsheets | unpivot | pivot | | databases | fold | unfold | ## Getting help If you encounter a clear bug, please file a minimal reproducible example on [github](https://github.com/tidyverse/tidyr/issues). For questions and other discussion, please use [community.rstudio.com](https://community.rstudio.com/). ----- Please note that the tidyr project is released with a [Contributor Code of Conduct](https://tidyr.tidyverse.org/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. tidyr/data/0000755000176200001440000000000013612357530012323 5ustar liggesuserstidyr/data/who.rdata0000644000176200001440000047436713437754024014166 0ustar liggesusers]]{n^llbB`LH $۸kpxlYK;=!$/;! /={tG4Hi43z7Nɤ\_T2)IE:/%r5nޣ.ܿmpm(9EmlDIK 3;qV.׿u({niۼmS^vЖ'ڑ5%S~yv^ۦwmJҭtN1oݖ R>:2R^޵1eyv2 R>wf;]10V*I%qKoڿ#em){ovvM;6T_Ji 4#S~|-ûR^pp֔7fk^1r\u2w |2eUͻr'zmt[v n98KO=C:6=Kϥs{Q<8ז sܔO0?~ዡxտc(hYvm4lC=7 T_Jo8))S>CCR>GoϽR֪TJy lVy!{ڸet?O;_YSrxu-)s]_Rn2',va2כ{]^[AP*O| mS>|ۂCy蔔7e 0/3~MTje v?R2a΁MG/thpx »kaۂpleA~C:xۂ]4Kylʔ'&.bͫ4J\8uaVھegzճlhx?=N{gvn -\z.=sm m8e nڵs0S~mVʧ|=N;m.տih8e /߾3e~qo4(hKvҳxයa5H7ҍ}Ѷhxpp[;vmL{e}̓CS>GWh0w9mlm =0u 6ruNSy*Y^]ܿ8eF rFݓrm/L{mvxkSޘ.ޜ`2wLm@=(\hDH` PleY wlҟ RARs'ܱW*LwBCM59eڗ m۴kGʧ(%]?|y+K/ H){oVnOQ&*t[1<`kccDzb?Q$.-nS^-1?%ҝ[.O_yXWegoߖ2wLM)wu.뿢;vTJ]ޟ2wLJ|ʧ|-uYΔ:]>|W4pTJb,O30\z.=Ks;/G=)׶|`cz`ew <Ɓ([Ef:ܼ? R^t.聭v _JR)YѿT_Jj+_6r\;srR>/ؑ)?J`rxeVܿeKm۴#T>f9]Ã;CK*I%QK:| KAm/J{`g>I1g l9o'A\z.=KڊmM{N O<߉΁mݕKv yT_JV ]Pg){ʢ?\R/5JR~)i[qyuweWo cN{S𮔹;foI_fʁÅTZ\45(ꙷm-^ݽ +.Yпe`P$ Sݮp SQ*jqQ /՟ RTW^802wLe++k W Sֳ_k[Ӯt?OpSZ޾ Bwʧ|ҿ+e~j̰[SZݿ}Ww nH<]Y~/O%_Y=PK]z1wTtV)wOʵ޹ºmʧ|zΡsTψcqҭtpo 6ZSI*[2o5,6R]opۅۇSA*اh3_?Y瘅v^g;rǶ-C_\BS>G|ʏ7ehж8 -*;oh=5ҷ* u ~?û.yp9 fnpsw;Tm]];w1;k+v l9fЖK]@G<6=LO'ӓ-z}Ξ[S>Gtn-ޥ];wmoR@z`~=]YEO~wpzz蔹ejѧ=(׾~p |7ED^ټ[ KXtla¢c[Ez[ع MXtlM¢cߗؒE&,:6?aѱ[ENXtlE¢ck[9{KXt܄Ez+[Y -MXllƖ-IXllE%,6ؚ -XʄƖ,KXllŪ$,:lEbc ',:,aѱބEǖ&,67ak;w[ز -Xe ؊EV%,6hA¢c[ԛآE$,6v -MXt7ag%,6x^¢c+[„E/IXt7aѱ -LXtlm¢ck[ع ؒ5 LXtlmbcK[„Ez;'aѱE -OXtlMbcgHXtlu¢c[>aѱE -MXt܄E',6|^¢cX_¢c ؚE&,6bq¢c&,:v~¢c[ؚEǖ$,:֛ڄEKXl XʄE7/aѱy OXtlEbc+%,:֛Eǖ',66oe[ aѱ -MXtlQ¢c[؊ \ت ^ع KXtlq¢c',:(aѱ% -OXtlM¢c 3/ae XX彩E&,:vnbcV&,6|Abc;/a IXtl^¢c+_kX߂Eǖ',:8aѱ[҄E',:*a(aѱo¢c[؂% ؚ[؊e Y~'a[تE$,:2aѱބEV$,: aѱu ]ؼ-JXll֬OXllm_¢c',6nibck',6nm¢c[عg%,6/a%,6~E¢c&,&%r睵8GOhхK m:F&-DW.Lhūzt鼄]8G{zg+zt m=Z_Nh+5 m=~QB[_җ;Mh zw~B[.MhEzt]2GWMh5+zt]Է% m=zMhu m:weB[.Mhѳ%¥ m9`]dEB[.Xћ֣V&+ztY m9f„]dyBteB[.Y8-GW[Ж 򅿄];];]֣Kzt麄]қ֣ O蝀z4\Ж{%U rte m=z҄]1/GsYB[.Z6GЖ}%$@֡}kzt͒=+W:tʄ7'eJh'芄 U m9pڄ]d^B[.H蝀.O蝀.Lhѵ+ztMB47$u m=]fiB[G&uڕ m9oyB[>CLhބ9  m=כ֣k%V$ m=7-G[֣ m7G]֣'yztݼ2GV%ބ m=fmB[=/-GW,\֣.MhztẄ]4w&G:wMB[KhE%Y}+rtłU m=rqBt~Gsℶ;]>GW&[>C{& m=|aB[[&QЕ '  m=7GKhѥkrt m92ߝЖVLh%sztʄ׻:Ԅͽ:tUB4Nh ѥ m9zμ5 m9,MV+KhUkz4ٔ֡Khe+zt]`MB[Lhо|+FB[Y֣&h7?C{wt6/Hhztꄶ=oŞ%N@W& m=jEB[wVB[-=ouB[._6/-GLhѵ m=z 袄]$GMh5g/Kh%rtŲ m9fyߝ.^֣˖'誕 m=fUB[];Mhe+z4֡k% q'| ig|y_| èn|5|-|=DG#ёHt$:DGnD]DG#ёHt$:DG#ёHt=鸫ҕHt$:DG#ёHt$:DG#ёHt$:DG#ёHt$:DG#ёHt$:qw5ёHt$:{':DG#ёHt$:DG#ёHtlwHt=퉎?wEDG#+݉DG#ёHt$:DG#ё+:9W) z hp`=w>; Q.t4XMiItdUz8pe\8^|8$RڋgC5i(] x 2#}3 mf#ੀ<({FkkO43VKk~JYsVNx64dTK#?)5w%hzfIeAW4~ec}!ac]|ߚ?k&|t{793FEc݋C' ɿemעi0~3̵8_yt(-XώvŠcoP4v-I>f+}FiȘ- ?&&*0? 2hفZ֣yO+Jz}6Blۊ۽Sr>J!~|P:8^kZ>K{5O{ M>s$(=S[j#O< h;g_da蘪ź&ibx>Ndv-aدwددٖ'uj?>v6H9^U}Fqdz/k*g6_Wo~>BG+/Lr~劳_fk~!$,-J(tM p0 x /^iD홨O,OC*Ye#R"_0j(.6iIfqCi!?4vɒ(o=m6=z]Q|uZNDl+Y6,67њ7[{hJ#'p.9:,m;Qۂlm(UmޔU)]°ɰhh33?bEۼF!?Qr<7 VU"ݨ}7[Eچlcurǔ#mqDSg*JǕ=.4|6:ѡ4Eud [7l2i>ù:-Yetp>嘡CxՀUYY/n6_^d,c^<L<_zk3[(#zx=r}( ZO5qP..zQJ/eWĹ4`Ht43MɳS!MF;54,Inse,srK(?]gHy!̀ů=. \<G} 8Z|wǧf_0Wz*c@G$btG| nd|qgWNy}X|^r6d0f^ s2WO+t9m1n"o9ìR4ʅ1h0677Y8ΒA:'ICF}1;uIosYݦd#!sP%d ^:RvX_jX@K="@qgO>Fz?xx{b3MmsD4{\;\L[s_:6 ;Li.HY[$~gW9Ύ@X}r,6j@ߟKB|޳}_fhJv_9Ki hPvtHsIp1ʲ $;fM:W7 )M*~-d`Z ͽ4s=VIhJSYf;?/a]Eؿu%l?L+NMۘW gzb!~~{xC.@sCZh=SSgJƂtp~>ux[7W7(~>G\)D<pm:xuIluL9/Q<9]}>䷳3f^QeHu?T' ,~yקnX-4P0C&o%lb+_V93rѢWF}(vps>2~g :z/ b:VS)8Ш̑{RѬ7ϯ%:O>c @~JSO0GghlFq5ߏPGISŸ@PwjYB_ of_WZ6Ƴ1#q~js}M1RUAy reFG~]7kR2y3}tS]|/djk^e?|gηk =Ja(Dh:9/A7'HGРlEM&ʺ9~~[Ο++K|ۂ6>mTW : ڟt݋IG5b-h)JǞҹ"4ޯ#ϺL:Nk17& :msůYK XS帮=_=~kn4h3mMw$h*{rtK>OQ'3}]kqu6j"hDc1[ӗilc][Jd=k=V:(Oҷ.Kuڰ&õwhԲUEi=CAlg?"k4܈fXPnoq 04ʅaoƱnxfZ':c큜c{!1i/$tS@WMc=c!uqpv(Jhf+jUMel. r|;c|ih~^{Qg6ƽ,N$ƯE5#(mm' /soȩ.miMݜ6WE(//M#"mYZ.Ic?OF_sg}Nu5oڦ)M ݣ1~rtwW:1ꪯ_]~_{MWc^'ц?GXh,~XG?A-/c=,wHOeQoK391SŴ#uߑb>*A.uEhp13䓶3xh>?)(OE1sEk44۰WErAk>؉!'W|ܿ>%޿gB}McHpB˿DrY[rJ[4?w_:,H/P<ܛ8iK&ono-A$Om\uhOQ:F'K26ہmBs-}b7ccwovS~[rc̖<7u/y`$:-Hn:i%a>l{1[ﷻ Ћ*(]`L9p<QƲ}Zyjhk[}8X||gh!VCʐ)v;wAgǽ|qCұg4Hc=cxu6]d9x`d,Y ,+|x=anP ^0m析\9G hr] Dlo#gz<۬GtodJ; K[lIJ swDRa?w}[KNS_"m@z/&e!/Snj7TU*4t ףkB~TTc*" _'G>kb6ۡF7An/ޏ,B}G_d"eݒk2O?E4ew>kxݷ)( B>Q_7]F~@_B.-z]4Gn跥jKdLұY.uX\@`eԱIZN?,Y}~xW;o yq2K^mMMXtL\f|8BsBڦ܂<71LOtkbӱmXowI7}<쉝A)a۲bwr _=sZ8gxur^;IL+1{Ϙлn:$9|[gyȝɵ6(R{;@泴)H-dsNp]up#s|p?|P]K/yKlRQzk׹-nj|:%"X1=h_) SXtr[qE.x\GT~pcވ_"o]-h7MutbӶ`-\a,iy'S+͏y}ՠl}Eu7a,@檐> V%0~0aq1>ԁwl湵es]q:JM1߽oļ,Ӿ>*qO) ZV3>#H.qs!Mùs]a G(C*?r_^ R͘W#D?AeBX!gK~{[bzu?ʘeNF u9nl8_jgIn? F"a>x%W1;Ũ}cŎ)q3Oס^j=C< :E|7#}Jk./N; ih)"wg͘tg4:AVM>i#G<<;g.KUulva w@~&^}8tמ>tez"B(ė;C8kNUbbksl^afhz `>5E~ (c,JܟO9 )ψ6[{q0 hG5)O Vh3s罳MgYuSWIX(2-M3_r[ 4T o;)+S01;lt`;ĸg4B;` y4}Q8r{e)=aШk@I3fS>Tm.}u`Iy)3J1o.mj/bϧ6*4cm==Gvo"A@}#/ZݠMo@պ{vc݆?C ;\%7?s|&Y ?Ggi{ vMrzI\X%έ>m/!#K6#|1fe1XcޯSLK"g>Ҩw515I+~-^ KSG @5}C޿F'#Pe,ڱ75)|#ht `3)Fe[S~(Pv%Xԅ923DyNAL5T͓Oqslk!9Gtw?!Ovo*q kuAO|Gέ'IC_Lfh{ƺ$T&+^oz*ᾠ;=~O;9Zs~>AN!d?LJK=ߕ҉tr?S.=3'x?ηӨu͡ȍ6!L'3 2wT,/*NG;ɓնf!ߣ_Y׷^>jaz8vq:ʏДkx*8vn`,d.مoTJl@sF_c6*l4h:DYJa=ɝ\s{QGLt>s|:l'D=h\7Lr3Tos"1_U>&^b< d GDheδKSQ~az#sl2MߣP]=v|j}L;޿k|C'=nd)oEo~֍ N)maz}롿{~3ޔ4d׺%bgUZsܷn4}(+@2?4tP݁>/Xyڀh#{^r-&lsc3[i1_?.4F-i1xHgigT:K݀h4:w1mD[u=fth}4}AAzB;Xi޿Je^]ox\5ϽAyvX&3u'}Eoҧo_,>oGCi!Ȥq],C8 N.}3 D?HtT GW! T!Tw~Lǵ%eugn5АdKԇS ~W Iv3;{#ܚ}W :x~} R}kWSmE1emwI$^F;zS}I}%X~KU&]^m v9z/(Z{7]Hb}?$9xRSJFM)ӦiˍE /Iwt6 o~_NcE>2d t*|U{~}f*+WEhU,܎S zgh+aѹX%oo$p]7?뗥:]m/LC-v=KDSywX/`X`n1WPл @}gm< 08ȧ7bt9^|(96vȮ@{MX B `cŀt5K[vV/~:=A틴C~;/c~ū l`niӆ9%+_-SR^,nQI~DsNh,ѽEqc̫Yf3CfMtEdic厠ֹ|os)is֯oev_ L&}㥉yy>u~=tpu_G_l?cѼ*C6o]?H瞊fb ~2XˈuѮ1$/3Y='yŢפq$G&'NaCł4mL-7.M-VKwq:J99.&o'"2z;|ȱ7wIC"'bH"xt_27Krn}PՔ]_ܙЏgiyEPZ8q_YKx6D@s`~e+#0W|LM no3uy<;C?=1]*ڢ =r&ǣ }ĐdAϜyh bJڻiӿ۸w0ϡuG?Df}Ԍt`,B􅦾FS;q [9]Vٯz)#7`څO@/8\^}|1|wkVFl͕}7+2tT.1H寨]Z>p;po>E_ Ǵw7]kЫz[ˍ\㦝4;>L zۢmx=[e.~&.@%ەFD@_ l; z790aLrONr/fA\3:tdnPwg3}֐JQ:Nwzƨxj&rpkA' >u^= ROOם}fce%egߢ  v~HMg, ʶ\ElpVv:Om*˜-}2lno$±9$`k-Ҹ?.l6BۋqX{Qlf6^3/CiA|t fuLL96M$7dac祼W +{) ^izEP$go}{LQ:F>Ȧ[3EF=Cf<Xcџv8Q:Aam?m*N<1?׉y{/>#|<Ŧک QX[3(CM ~'Dh ̇k}R{o{voFFΧB'"͘T44O8no^o)J>+4YsYs W:ڑ}nغQ4$ hݕ{Cn܆OߠNJ߷ɾZ|p=o W ;Uy'`M ^s{=ڿLO@ t #VcJ:G?8t>O(v|,`hHӼt8)y Hio{XwK@_Aw(EȞ;>ށ'}ʷGpgll`t7e{I݊wOG]495EfoSzV>6[u%1zviSO{:m/8C-<mo<+5~?| s\ sb뀿#>[qѱw^^n0g{&S$S e@G>pq:?[8o~ dנA lбfDdӜPG7S(&M2ik`1 }Ӷw+5Whw{L?G|9]S !x޻hZC.1`(0 o{ط w'%aN{ 2!f}nkŀ3ծL]({fcne/7h#w?E~ASﵧ-w1>C:%𯅼}P[/n?NrFx^}!\=iҿ|aǹ;B\xu`+]EU*xGߢ6> _#ߨvv8O t[C_FۆyxݐyϘ`zAp ehD-%F˘eLVh{4Mv5Mg.mkn j Sblry~G^㕪jp~k||^=ey׉_"埧siГg7WECv.To5ZCE6Bz<7c| |C(6@z oy dmvBSU2"r}wjcn)CˈG7F9C˨+/1ߘp%=r_1<>ـT.e:@Fg-Ԕo1kWcß_OyY2-KD~"WA?)uG\93W+yS8py>ǹ:oӊwsMj_Ew,aaw3>B~Mi=m #h:M1ϱ6y6eڜBa|߇)+]u;ⵦ{_#\_Dva4߅C7P _ ߡj;_B?\8$ȯnx\/z_A~>hȧ=y0^悾sr4QA3b<u YKک@=]rcM,-~SG'7yJ-Hx?7J],eCǡcbvHX}CJ׉?wGZgd|,c׫_/cshjY=_{םlG,X7@};OX՗ ;k㴃 ZD_kğF23{o@3ѧZ\X /ưLuqN^ooz⃑h%AYvR/olny1^A)C];ǃM2u {a.94inSE߹ϡEvIo{lM=K"3$m]`lS{ [»3x4}]|z.NtwDycT~Rܹ'./s%+y`q:\ՖMnbӐ2#/>: ߣmP>ex;u3U1v+W.,JGN>GɳWdR3bѱtslx/o3ݺcwόR?ŷ VHsY""9Ɠ`LϿ*g8+yg 3Ie?] ?S[`ܔ?f8%~4h225TYyeSa^+~?>cY6qߤm]bf8u}Vˇ\+!_-vŵwh{ϣeY.@8qhKNUqCc;1?;3ȇ6?:}}8\mq?S ENS1}Qf>o<2 ڬA}]Ct'Ta)-~:`!gK@ھ1dIܗqr 1ǜ{tnC>T7.utp9kٌW*E}?G2^~_7s1~W)=1(k06c_|5S;92ŭ3Rد4}|n)pS'k:E#R1u 6>'I~iHn? ߅o3xFA<'_;n̓=[o&#k1=L53N.N;SEӐg%qWk7ӖMW"dɁPb`&AwqGґls>Ʊ ^S;IKu5L,:x&+C;EKdϰobNqrqʳcSfܿz8Α>Iq +u}zޢ!m,<4&lksE(Ns^R6>V!ߴ}moAFb ω?GKm,_OZ£}>o ]8T:\b\S5id"r{/]p*hyh1Wx_Za}_FmX쬪2rL$yg"?O/R`KoXyM-ߐjFhaAIC+oHC%~ay=4OӛFwt5x?Q[-&v3?:/t>t oɇubu+UxjH>=«TVofhjh+oA\ӧ}~.wZ_%,.\לh9tagm=(S9ܫ_}nqs;NU:.۸)䣎|c>`!g"V9:M-Jt<[cU>brIxh)i:柃ބst~ H_VLـ->;T U*eNb獀5\>.~GǺ]j]j/kjWhܐvm(mj%jߋN$Pϧ s4%}D5Rߣ iw5f$x.F}[07]r P&IbTM\uqj#b~F7ŠI?ϋl&qi} ?o˽_w{?**N}4_~1k;d|)c( e?qȑ1#pcCLϢ ߠC=kKOtk7q݁uurh?M|sc,ǹv 򦼕+lګhtST1^e1.~݊M̅EPZNW{FiS-׎<׎ڎiw|F3g^m]}m']/cNGq&aΚ\ >Zm;N/Z(pM{h`|s 'S/'Mf? v#"|{A{BF=@o)=#+~:!dBNsg>xo:ﻘC%=?+XgbPsݗ{Ri륍x+iLclBLئfO*lP:NR[S{3%Pe>c{.~騭򌳿@`=E\C1~#t#d:[II :[;G\ L{5>2h̀^{'ݻ^ˀ;mXq{A_yphmX5.̯19g3a p En!]q+ݟ}M"npߠ Z>@?"a=s<+\1~?-B^4՟E֑khL1{g͂B: 7nj ( 8?rP.(Q-B;jW8^vJ?^NwS WP^?An1 xkh"_xI۟=66ν ',fJa;8}\T^qe4%]?_ 7ZjdKq_,qfcˎwf\fk0­SG&-VxvI حO)NGeku-tkş+SoGJyNR\KQ:FU{:$S/YFu#WoȎC"kW{9{V۬<=~_9>\_~şv٥XXy зyo׹♕׻D*9:S- pj[w`#zi s@ gV(~5:)y 9v[|c{c- zz~O~(.6/w~FtKjSݙX]Gc*-%Waf̛6^@gy[MH_U6D߶ߊSl{ cɵEPZ8ְ>(gqm-N8 ]khK06v2y$'@21'܉7Lǽ[itcfN߂΍- s£wn87ިP~+~/ #ğ[}]Wi Xy_O1 7ηJq3>~c2$iy3o-fybl@sv{@~qv>^TETtO||BȀe; k"~ϏnogM}_WO:m?c;Jۣ?"bNѓ0(F{Dx,ou+p?A$7Z\ Bxg&GW7kJ:洃pɵZv?og¸k{!t~?iik}<|t8iZӕ|y7j=X{$)Gs JNZi3qۿU/jAF]? gc ^~"nJOm' YE6BU>WV :vC,宊< U\|#_r?"}8,CCzď_ `g6uGdrP|lT'U!'4G(RqM?ـaAAv8Ewf6sSB>-3sgp}w>=^)MljH? @-k3O.NgNn mj4Bǫqx?Cݘw@ci?I۟mCp h7g( }5jzrTPN#>9Wr^x%7ekJ\3FmfkU/g^wLS} E@r &EGܟ9G|S'cqN}:d{k> [ZfRE_b^]׬DXjߧ Oɶv\h8;TYD8]ilQ}I99#Aa'2!z=\<|}hDtG,77QF^#h{OgZ^NNNӋґ^i_o7V6Nq9w}qJa?D_|S5 } dWWU!1\sG<8?P_>w%˼1x|mbR1us̿WIFcƟ\߬o$:E;o<_b⁷+w"ԹR/QM<0K&܄W>Euo16c"Qb}wVzo@V̸ulWa+淆6H@>}-?1&/ kEQ)np$1ݳxc<Ӽvƹ{YcE۶_,y8ۈ2ud#s'Ky(Sݨ/B<ϢZN׻i0N{3D[_N}W9ѝoz>+}2oR('~[☡n&=)=F:VPN/ _hG"l3zDQ57 6t|U{ ";3yHi-ϒ҂Hs]-_BDJt[7it)O]fA8D?^#No]dNE΅>?&}eܙ\x_Sugz2v3{tTpa{=q^.#}Ts=Qt6XXoha̝p &XnOQVǺ*qqRX⧂WshgǷw1Wyo:8R‚~?] ?T$!di*NG|/kc'{%>t 5JD^7 K.iokzo9}(9=0M̳/r]߫@*c+iǘm)>k*0k,NG}䷷xo~fw7UMb[wGz߾{ڊp{0} (l?qS=rPo%iLObi(to%19MAp#ŁNͫAx˅E>\|SQ{UUgDD?Y_Ƨ#DּDE-f$a)r-vC ޞM} q2KizR^گǹ]7Y@n `n}ܟ\ح=;<j᫟Uq:UWtpXltNп&]1H=*r z،E A\lCـ{3E< Qىv.> '{{ ȹad+)c 7 ;5.=l s@ 2x :p탌#iۣ)mq_^µWۯik { «A\Fs>ŨOA>KB_ E^V-mUgF/.u8rmBZ!01m׈oxDh5[p^Po#S*[w{V?*S|Y k'{t|Fi@.0X>4L2F[Gí+n|\y׼='l.J~Gj3\BNv/8:Xm)NZ'p6}̞6m#Wy|-ٳ9|ُk_Y ' U=JF?&D9p?SH@= m±ĝSF?aehc=.F?~o#Fg·pq7~sn9x? Sx>wk.V%x_toc.Itol0:ۓgEAd dHXꕙitt7_%, ۞i'صnk7G%s IY6^r<;AZ7b~Q|,yK<|ceeȅg[\SX_:;C U[8>x>ƜNP`̬q>9zWkWϪ|w8=bLMᓺsc̻s# U>Bǃ4/ۗYmKůQG4QbX=1 b抏=~grGx4ʓS緊+[_K~SѺmt>q4cײuM)l-|Rm_;#~ >Y"wd 2kΟp72|eF'vQ:FՆttS #.T}{ʳwc!\0{Ӿ-~]czRJ2Ϋr9D>׸y:lM7*7"LW4y$3*yZꝑC .^K/Cc_yF˱OӶѦ9_qܯU&>x}C7aѼ7i1V/tZtCd@V? >?<f*#c p2v c{S 퓰J]BmWG3WFɊJ_k4O; ږ~Х:ƹWsYkұt zz?Ez>)Nξ>CynXa=-H`9n}7Jos/ -8ț~fş7<rD[ٷUV83BGwooȭ,V5˨7.M~aG f 'kl"MiĘ*FGڶ_a>Пߠ 츏B7910OL1u$*+NG{AjI͟i:ǣ|?䧎p5)P.iӼAM|į+':}O6'=!yާӊ?n^s/@(fkNgL+Ryfo@> sӋW+x:ƕbhݹ'ܝM=;]AvGq\c+g1Mє:o(tI~z~D( ݻ>G1q{Jk38ѹ9 t1boJ<YϏЉ p`pnUy?Vѕw?kdjywim XO4~~(>G pgAukOU5W791);B[ϝ,\:h>tn^#>ZrݗS#Go߳X/͟|&ijfJ~F-)N4^+7jj:%?[kn39ۣOʻ/9vvE^pxWciG=p鎦筜W&q1.$&|}|-~P# xnnݐLø )&7~=7#LQ:MFS %+ylĆ51 }-~kŒb$fbsR-_<}#7@&z."ٺ[|퓰u4 c*\/~6%Psy1W-޷~@E6\vs/m~&"mkS%?˭_I$iqg2-*p=j{3i+{~h;,2_gJ\^qONj)p?ghO>ug?q&_o{b쀏Ģ#}p|7 T|)7?N KbՇq7m5\^N2ۣfKr98~zT[I[L׋ky\{B:)P_@\G|VZ>o@=?J ̹ ڝhuǷr_/ q?Ч&oWG{u f&P71]e~L{= Sϙ#yV~JhlM;;FZcKGq| Q,6U~Ol?yΦ9Ki'P};C}.ٛL^+z^@1:N9ٻWH䡨k/>xrǃϽzo'5nmȰ_+HƜA(A|JSuq'8&~?u=!.CCI~Bh׃=Hu>O8<" ]~^eug |4Üe1⍹xsk\7Pq<<[8zҦ=(>XwyIioޟ5B7uhMG{ʂ ^?9/.6GCs,wJ|Vq:2.n ~l]c}5ֽ6nO 1X) Be䜽ZwXh}K$9c&N{=!zi8rYZ/5ߓFt`q.x;uݵ-hcw ۊ$,qEy'gMȢAe|:YN NP + u 3{Qd)У`LEO=h.ttcvI~0qkvyz$]ix~J}qcQ^=w-u;xή1kŶxX/mZβu n%e)/}2c9M+.5˻ gܹ8U Y.sHGxzlyKDzw譎Wq<.tq쳴߿7F 4|z۔'?@laߦ<6z,^ ϳJ>) Mop;-kqva~Z;x=x~t6zmx }c:?jvp>~ llĠ̞$#bl Nv1F&Kni$?"BL+_\>t;e y3ҡmIKgI~Y5z4OZ=\>_M3Qh̢0\"uOq}\-qۄץh;|uwXtQumɧ,Hm;tO7>N CKDMSZaoOwDߙ/{-7H<3eiCXotG:][е;kΟ<h`{'P`?lI?~!z8moq~s>Gdyo)h8/.2=J22Y=Rӫ1<"1?|*?|__ˤ4R:R:R:GRzRJ"rBi?/}z:78"|3_ w@ t:-..qs󕧑oV-Δ:ki(?Rӹin7n=d_oSz(y -Y( gS2`SLM,~E,[7,SV{x{7<22io:IãSy䲅ݛ y6E>kc6 9M~/'>F, X2P'tF&F }k>C;t|o0v9&3W8֘E2up%CMgw79 }YS3az)y+į%o?;"Sxx@|(Slr3a> ^"y r/Wht~ۥ2%l1ξ"^-4rOetDJKhs%,7ڭy|CrtpN\NߚBq7_L|~w.],єs9]¾wKU^zM(oi߾O|=&_.ԣb+^ -}/C%Ug]|/>K/Ciɤ)^f# Q4d^ s$=#@SO{xktY_ʖXv*S9m]'?]Oc?fq:%޽<}oť_ݶ!z흮 Cn+NG]֥,db8½Vfwa:G2|zѱ^ cŝ-}.p_کtHxݐ/JbV_(盘&MފӒmy(t_*2o'$NGhQu1&)"W|Zo(UkcWG Հ"L!6Z&A_vŧbG3]s4kԝ)3S eg}.>ͯ/T%}@ާ~c:|\x/]#2{eC ݢ9 *oڐ*h D9_cꢿUʑ>Bx%sM=d)@~eCG>p6^?S8ᝠC«U&V}{JwCWzXnWT?+']u~CxG 2Bڋjmh[#fHO_[,m`!xqc]e{.F}W]mʻ2i)L1l!O69l&095P/H}_9r͊s Ml{E״w1'~?LxW6Ȕ 4fODN?@Jeü83/&[މ=F\#>jdyS2nU)`cFTZ3#1`61HKx>zwoM9u8gmsG|nĿCF:xX>VND/͗տY7 L2mmשK?]OaX{ ҡXJ9C.=Bi{ 4{]mMqic~Mh^t拋Ec;۶z8b߮>ZS?'&OxB>"a<۝9> e0fxWwnDg1=4봌?įŰ9qtMxd˄k3¾~hp撯/t*%yhYm :l,H[܅vea>-َ b>gxe/{}F=L*ӻ" uaqk7Z|3o~Z2ͅ6GD~js18q_ޙM/~ok#aw^XH^d<7 QMSk{|@W 2 t4~ڵn>aJ&b\?e@|EBpqb-Ixݎ/pp_2vjbeeJ2Ȭٱ~ 125JY~gza7FgHyz%RPV1evזG| 2]s-dYxʝy>s˅cIW>\Z}Bi9_?lkq ڃ.jcf>QΖgΔoY}]-z̔|SڝŴ,^7w6n-k״Ct>?1ka}cȿ} =ͅeF\/7Z;1x&;4Ї~uWVZ8)S@}9f< ~^/(t~n7QvbuOUVz({3{\tKQ: Y n~Wjk*,}l7{Cɹc1/Q5 M϶SOCr$պ$wmr=\Yl8?Q.+~0ӶKb;uesY'*]8 W]g>; ȫS $. ]SNq;bLp}K.91}g8N9Gs<0MǭeoBr+K{y0E}Sl<ָF+޸7~WȸV В5&ue]2 Pi3H#Qߧ#^^"#.^[Ǚx~WDs8J?q'kʵt>17d=`\Ϣ|Drvl')! em1mO.JHeڹU{>Rѓpom?Q!/!yxҐ' sikm\Ǜͧj\~)Kxvvu'@wshxEq:\cu_:3-\LCڽ/>> Dܛq~PwxGcv1G%T؟P$yK1@k뽍q~} Y_'zğAa+`^qjzfOmJkf$ + [*,!>8Y!kvĞ!ZCߜp,݃б>5Ũswu5שe:V(JP6M$aʚuVƲwzوU#8R.:яfoE5!Ж(<św?f_C {C/m;!9s ^C?E|9*`ˠgfgdS(ywp4ݵ9q']_ߩt>`c<:F]wu|W 3+/Hv]!$a=!d/wW.}({HqEi^z`4yJWI~vt\^ZXrғt $-{(o|lfcgv>C68ʱb] $o}$?l]mG$_s_05^>]so9wiF2qCׇ {d:2~e^0.5i/@-?2fϚFXΞqkAMu!Xt'B6?"~O?r}c<Qt>7]Tq=hk>,\{`pzGicl-ݒc.p}1o72P|`3g#A\"Q\zO{+Vuo({HuٱO1WgLq޷]RǨ\oS$>*{m+>ԟıũ3Ў=\qZ-$݌+}gt WHokh9$_VŢ#lx:1f:af ;]cy|a1fO}MٴMqoXⶇ9sǪ| CV'5r[]g{Ivx߅Bn/}.. hI͠kfiٵ[\_ͽek\_\k5ag7o'9яc?B6N>Dhj꺃]ڑ-X7_\ḥln~Uvu`qΡJayu p?>OEznP/)XOT|{x>J~F?Eku䭻q?yUds?0.΁"@[Ͽ 6<o {G`9=v~u'.bYۆcqn(^ksÛ,̓ٗ/ch@OK?k[H5oC6Gh.E9-$_gfOњ Vj}Μ{ɟ9P~^ DUHhix>xyD#]Y$ׯ/#ɹ>[h쓜O&Kvlq:z׶Neߕ3fSu/F.;&B{ܠ)y?Gsl7t,ùxsMaG!:I8ם)eP]W\ ~3g׈ЌG8_Dm}lr7c^ґX36ֳ᪘+k =`8)KǛFa. ;fq$cVبn`m{wu?uB= &!ڇ72Ay$3$;ޥ0(J #Gh88a8~oNDǨ_2&Edz$ej9mc-gvb1m|1@=7_# nM>zҡwWuc`{;P7;y:e 4gp瀳9S'86D7vM5VΫ98NOѲSy#?: &̒\FuCfk&٥ki`h.7' s`f ڣ9"|Oco@C}]Crۏ^".mFvE)oL hKg=8<ݤtq݅ze ԫi?:\mv-h9(Zwž}p[@ǩ`+9vZι{cWAxz) }ʏrv䯦筎@Gnq}xkQxX,x8`G;E%/?Shߋס~_qS>Ό@}3ő)=8GP?ZFDyo 99 \+o۴S1&MɃmӖMcx<\oUڃ4pmQyo8r_\79is`?S^#W:s-2$ȫg|Mf'` c⍘kns7CCF->MogE'.ǪoB1'1@ Я敿)N}J7[`o :nxT X点q/]<呀k9'*=Ѝ)k1VXsp<H:GB_IŖǰchOu6=%Xc=s'ZxnOq2M|6 hmlr_jmꕦ}m'~q#~){[nt3F;;o(a5b&zt &wv{.@ i^?⽡fÀ'$e_y[YAqgWi $_o0_U'ʾ{Դ$:ߌ!@|rR ʧGQsOEC;GhɄ.FƧ۳5x*t?f;PAl:1B.rHan(Y-NϿ$^_Ts?QpMgijmBbP2,>way].tp!Aqm[s BZv껟@?wڤ(N% 9nZ|2~W&95~;U?Qyy6 e.A2ov`SgɽGȾ:z+Y!?JW%g78R7ǖ//`\^XfO-ㅼPq$6ϊ"1G- nkpw&RT1.xhFxgmp&pA&1^2ʽ4?mwg\W@l2 n5*vO4R>-F-c~-仑Iot ~c:B B^iy-(71a>yGr5;|(/׺;͢Zvwo{W󇅜w Y-.[3! Vv]:^Yx_CA:^{([穏kmHCtlf5vt=hIÀt85ȴ&xW*N+^О3r?ovū;ͧ=\AT!T!Vߏos!~L R{׆~6ϟX++ST ^g{au1Gx?Umxsu(oŜXqm5jς2ӪV3.31tffS5S,f;m܆J{L>1?F&no>9> W"3 ?1bt5Yp4n@יwJ1?Ui#(G35N)Jbc1#oQ< K]>bVJW:GOޣe;#[e[=U 3] Ʈr; g|ic(ÞθTh!.>QDyϕNu)jV9'qOt]=ڃvpxkІo% z%?!㓶Ne`h1th[߷TEJ菕9 &]=oMm4y_@{!h }5ׁX>Y2`! !Fe+zvth()aNmǼ~|ǣt{"ѱVt?l"G>w۟sp<El5Ǡ5ٯ^$qZi*+Ǥ޳)͚ڠ!e! MQ:NwzƨkLZH F\XS@>5SrV,-3iQ$~W''}bsm}QQMܺ^ݺ\ή@Yr}rΗ|? e 2O?gߌ>WvIDSV2cg1|UXf~j3_/ng]~e &?]L-V'} .8>{M1!F0tv@.8 b yq*ةզBƝ ]|˞RNaFkPo?ړ"V!QOϛ ڦ px /;E|;%gY#+]~ҖPMW 鬉f5 [o{9(:+σ4:}eC=m>[˸txy i>̹yoQ:^? FJ3{W: 3S@6icjoDnÜ88s g9`qB[12M[~I]~5n?xZSs><&Sі>Q7R|'(}/Bycbܗ#7i ghʇ-F-/l\(HpOK˲gp~V]*UGzmm̹/u=6+NG}r;`4 g{>xk1ڤ|?Md'eIs߹~qA1-啹zy癄S٦>Э*7>@UAb WcWT mw'\SdAӌq~9tpo6E#>xꎟ=ȫlyy4-=ah[|@#kt;v}Zq{w_סB۸G]r4xcz亟Lu(q,FUSK|m0K6v>rTөS|)ȦSx&\{"=7J>E~KyI$+,׉M_Z-wr{h~>}}5?YVW] *-cgOǦ]"դMa~Ѧ6 IŘ&57r3d tfЛP g$r+GJYJ% M~dKٸWY|FRz&r{)#{1W߭Ip5'cSx6d 3H?|T"ୀ^߆vOX=uo)_ijgh үkX>J8gcU6?ljtK~do<)^w(8e 5K<_є Uw2SGFה4utYl/&](=?VEHN~2rE%J+/GŰWA j'q~J/> !ЭD9 1=Kӓ j_4qŠc7&B턶nC6FЮ:[tӧuY=GHk|<>1ww:~^ ?mq+u%@}C^FP;mQgkj#m% cH\Z!):|48;tI~=w|f|&>p'S`<רttP9(~{M>Ke?=ma#cr8[ůZ99}Gjʵ ֈӞJ>a}EGNO;ꟌQ{ϧm;Q;M;G%^,+Pwxk@\۞]>1ns]~y<ljs1X?tgcӞ?Q`\Q5${xFAkENE_>Te1pc1~j+q_R/WJ5b<ccus|Z|xWvJ|R@dogM}ٜJS& j xQ+O?&.q^=*ߖq\LDh;)#2A[k@ǤZe=R.&Ϡ %{}CKF]j.r{#췣_|=k( QN?YqS&1$C$?k^wx%rKձ0OUMc>SSWO\mCNNҶbplO@㭒ӗr(em^e>:GtQLr/MnE@zapng)68=k=#> K__^ n9\+^Cnr (cΩL Vy߆ij ϧ2tt`{-aqEo9vq;?Lj9{3"960}qx{ }h[\yP :Ơm{c{&οG~fYp/cY|l˽Ck!>~2o__qF{mg7}$)Ц# oT;bohwm*ǨU8ZyƱyDl3O+vK_ցmDD&~~%l=S%ghE2Fehu,|-H+d(P9SSe3ݶ78'Pƌb4\\0eLU>OڎhL(&>mo;.$_g@6SGrs*1941E6_✗=[?=1<ǭ9F|K)ySO,|So/=?)هJ\K|mޏlٛ_2}*S{_h J?kFĠ*@I &oC=?Sf .p,:L?HYzl?'ڃH#7R&t)Vk1v?;KHy ]SJemx8U?v>n<:-iOt1Bڃz"}h1L9BsvC4{ed:jW:9: ɶQ\0NC^~Oo>/&:~_-X|y5&b> 9c:t7f`ޟt<:qGbG@m`W1ʋ1 3IQ@G|n3f'axl1Lkh7\x[ĻHSeq^#ϲY3$+'hy}2Zɯ 7CA\,m{dݒ{_@?ko)B})+/B[}ԾE|Wۂg-Goq:& cH6PDɉc'^xL0a%x==~Į1>m?]a}?z5<(c}G_{ԭWA:&][n,^س_;twip/ .&.{e#cfuR~lԾGA::~˳?\V_-Hy ]S~5MP6m:ٌ;<[CGZc@O1~۲vǽuEt skE%&3Cӣy)N~s~`<|zXX1ߨя}@mu\;GJ:eҡuh:NS[W) Smׯ}hoM {<J}i^7owz5׵);ӿs:bl-g~x ۃҡdVre@~ҌyG!ڭ9=nmqTOS6~x9xXxLC';_/޷ s;L'ܛBykې/0NcoB>V13*!$YF_jsME\|rx5zcWNuꠌ#ɱe_@HQ͗=#a4IPSve^oDW}LǠC#|Kqmt~+\S'O#P{Niv@8;8mQOj#t*j d xYU7U^1^.^{u@_ǻ?~0WD~SAߵ/?-~Ww酚ފoPF{şky?rr]yƀopͻ"?uYJM`>u='Y7 JKh /+eǨOBjaCctd ~b]̞i{m#A61J}بQץJSn}h~+7iSM,Y'>N .{/@}/]_ Gt2}g}z bՈ~:qY*y▚a (:%~gX݆MQt ^c$4_K{A#iRXd2yD;r4I0OM. {zwPnhmɔU34OmThg?-m5Ӧ7[DBES)Np?Cyţ6ǽCSe2?JrU:hx70ˠKk ^<3Y}Eڍi᳇!;'@?'RO`>pgy"\#ߪQ8FxůpM{柡@f^Ev}GCbcsL߶> .1ft=uI֙K<'m|֟ XYx18UyYF^ wj; ھ&7jrLyK7aH5ôcpXq:ʨqO\\c }3|\;NJ8t?/J '@'}ߦPV?WـC<ە_Z^A(7i~AדN ׫.Ht4{|76ژ 7p7EdNi*æjoh|m4,x0ݑgcMP4D{x]r^p{?Z/)(Z cȫ};vuhO^ h87 ? /8GS?g#+NG_X X$>Nj1; z-ec#wF@9IqggK'6c$m.S淚wPT IضNhc.i#̒ܧ<6¶o2p>1W!ߣ_,SxkuId6 QfXR*[c ܎q;n| LXiy 2?>vmw=؇sfOr58̿ؾۏ~3J({נњ=*w3S?gV|9\OSߏ*2RMvc_2{Q4qݕ6jߴ߰Or,ӎC}(1Oiq >ڟj~6zgPnxV:x_3۝&Jת[%ogjj b^a3kCRvg +<_zx?? ߊ^T0NxyNTy$?̟N0g/EsWɮ|@ 2Sm_~5z2vePVSxi  ldk9m2v>z;'{wqDn`>{* ,^s@N ?ҦD;Νsuvac|^kLCPȤ/imJm 倹H:D'=x17rL yC| z00.݀?)'c'^߭H2r='܃T!@H9įS_5GJ/S_zm6(BsqN~ >K[Va;Ș_98q}F|$10!9V[_ZR?s*7aP8F2- 2i]MGzf:-ףϖ|]kx1gh_0l=}Vw]y1mwyDC:Me6>F;ծ9VchmiiǬ{?asYwϓSF(~|pp|H:˂44VjB2I0f{x%м&ofx=f:<$2$i[o4ZVp\zhϏ_1RSp/sو,;/c{u˨  Cԅ1m #|Agu:FaQdpO$Y?f@](eG%F"A;,McgRp-F řbg]=2Fڭ/KcB|-mDz_}NCiW7`LƗ.~Oz浀>v|SF9XSAK3{=_ϸ/EGN +j#{DKlh'Ŧc/۰~5_sp&il:o:-Z/;{w-Q<3[Zu-qBaxz]2]Q"_[(/y ΅\+~?#R?;GQd̚L~O_K bd7ާ-y6J%&LcoI'{'h{4*k/ߗ~C\%Z4_qf&H.d m{$Zε?:qoA<$Q}QSwv<{#lVmɣٔʂ)7>Ui'W$:v^xGWLUʱεMi?{Gr#2x% n<;O_B8p>W0 x6k?X{Mv(P!4q?^t(-i/"%Co~{SCמ>|Er3$yZN{l5oQߝ%,,H n-(=Uz8rgD*=ŀs> d$[!GAVmhq$+į5Ԕk/Eka?}!C'Gs9/4Yno`ۆsh6+ Qt˦2?Nٵā?ѽ#xx GO?×& uo]ʳ EW}ء8Dz˕FZ-J?yȾĝ/Z7ǒS~2|i:/6B|-e~fi1t4eqi\$_3 vZ }.|f{:4>O :&J>tI0o~3+Z>uƺ~<7ş 2[(Oߋ~n܋9=BLo7GE #CRvx9>gM7Ca|w;ԡo@&2,pyw\c\RfD>cǺ"RM[ G-971Fqq-4pN3=|߁͹"#uLs}@hb,"llaۚʛ8 G)O3rNS8HۺL|>7#+mt .V;;W?Ý;|צ6s\Ѻ$ЗFwM,:F{TXP{ 3F]e0{Ξ nX9UMYU=m:An<"gEcp^ A4]^㬛l5;|mm%=!h0FϺ)頞{~vkuE7xv9drm A)A&u!h_zGx¨k+uct):?V|On7ovN1ߘH{|U9,֤lş7Zhٜ#1-y9eDFGCY̮,\#gGO/?HOH.2=8hmbpm#cW@uy  +*>IYZ| _/'}{Chut44Jhc\ Xhtg}!V={I2Fӯ{-2QF$8^S;xwuӾW)nkx?[qdO$/O\62 6%h*{7L~- cӮKq[/@G6iQ妦ߌ>fzXW:l3&WtP=Y.!s}?*q:[ak>;e߮w!u>щ/N`<= _/>0 vff~#~tNO@SL pL'orq:JxF4 B}'[{|Pc6%Sv噽\(&+YLɹMe6F.5=BS6@I,4?@Ǩ:5UVF12UˈR۾Yeoե%Hnɂ2^5)#Pbζ#Ow/;RfG3e>[pF)-Ўzm1*nyc9Xr_ɉf[q .[/ҸpKCJ)(HS,t(-Qz:, /kcC2+\{t>[x^LL+Lt'x mBWW)y Dzi}q"l/~>&@1@d䳣^ |~,W~##\#^^QLt\5J |ZјV?Gwhx?u9Kh9}nGm|sxό~XxXS{5|v` CjE?ul^3=xYr#m3h OGEצː#y*<_HW*iǣc=ݺR.9>X`IL{cr)csmx<ոL.cښ;dԲnɟDGŝGY^7yW-4wftջ_3ڂCK,FY1Zv-Ne49k[7%N}74tnv#?{oGQv}%Bz7 DD!DĊ ]QQ,{EDAQ~swB̾?s2{o|Ӈu<ܷ0kR\'ʃ0hDD}^m}mJ@^;_&8c/r?c8=u-o1a*0n6r-c.x^/ ( ..=}JeuLԖsl8:u R[G*ijZu,>=~<sQ?$;Yp?,hdޯz(IU<}vG]nˮh_M9dcd[:Z{AloD[Ÿ-B=w |[}q3&5[ǛKEQ<ދQ \ڗGx0FGg\/hylO@Xo*Ws!pI\F"z6&Ŷgl{o&]>58,'ζ猃߮80v\b㉶~뺿DQ)A=s. @tMs^!&DZ+z|M`_]0\:q"ޏ y9r-O~qDEQzj'FV\経YC}QFX }PB y<0^Ja! <ѯS?<^{|qu:ѹv{;D}# Slt?> UV.D*N~e?c,/܏ gkI6c {l x9;{px̷r&WcL*UWgn7r[QB]˧Is$.a'"NSoǿ]ǟ 1]|rں}D:|ڻ?*C`m= OijyR63D_ Agc/1lz:26%o{ˏ>NlT2?syСðоWPLvŕo0O -bbI։"ȏ} Då:a&c`:C;;=q>,E_D4`qƧf9"u'NG&6 IhGyJֲ1cl;dB*uWx]ncu³ՆM/c9i{_qOy; g)yı+Eq̉yc[r2~ Y%DYR&߱_ֶˑsu~'1R:}bo®)_lϷz}R Pȭ;8<]11u̾^O2$oX[k#>ct|9` I%堯p5';~$ p.;g;7?0^<.anEy9Fw7S9:A̒j Eױul]gПke S B{dkZ {jGx.hvM|(?:|~2tYvGׁ|26a|w[𽯡8p.oדlIH|\ֱ6|! sY(}ՏWsk׊b_ ]eы@Gc{Vt1V5k,ՠb;ڿϙѥ]c䨦O/$g ))2̿0 0eP3;ᠼO]nb5~G՞1#z̃Dbb7MrT|GcT؟}_b)↹&q)ݹ'Q{:$bo{ 9^?bWF[ v81IvGSr]Sx^ù $ĢɽcGHAX>ޭaoRl3u>m bL|#RSHtk Sn,|-gRG2ϳwɛ^z]SGS6c8ٌ]zg8PVDu¿h?wYJ2'u,zXJ~<.dc)36d8s Duûı|}}R/^WDuRo ;{p|m0]r,G:}/'$W&*ogS#_}oCbG$" ~Gj>`Oq>c]/X'YMInCl!F: s&1*O]N]&OQ\*=^ԏv8om$/ئz:_[LDQq4#8'/qS!O2|/_uVR}gFVq]sO}kK̀l\ƻ(Y9*1?Jf{Z<9ȗC?)!w0 ^Eue[wg"\}V_ {՘hM^K( 습W |L.IcM5oڍq{~e <8gw;ﴈfI"_ m*qnDt_989'hFKEs7nX4[4g?M?2X̋}y.25i\.~qY|/OWCx5msEe <2~RM栥~1O0p8x>mCr{{A8B\ٹ(Ŗ| h@xj`/2t ##NN[Fq=%r.ӛ}ls횟mϸs!s8m:vXQ+Lg{;7lO}ޗXo;_qUgHshȫc,o= ڥ͙bE}s1ƈ)mG=xxaɅh(G KC1zu<,9 kɋSc~qD<pe5DKOy'Y{z18"ye!gt]$oxl!kb>K q K@B_O;>~mD_7Pw(N[ބYk>E_Co7LJ3e%y蓤(#Q=zϐ-k>1?1_š?x7‡1m?= CЮ?}@/sN.g#R6M狺ۙ' gmo"9D=/BL.ҥg,eu7R H}X*똹Ί{^~qTx 緰#ƼA8I}6G}U'vg[ f[<g cl%XC-/E}z ދ6G9IC}B\Is.>\o"! IyruD8Vi$Z ;n=L4 ќlү,S!@ȗG'_z={Ff pD X=e 3vЈrmF ~ ;cF8791nKac&\5nr77:ښsG3砹`X)؁DZ&\c}_Xﱎ,""Oc~}.!|Q={TZW|zK~{sLk5g7b<2o9R*{j]vzHr~v͜9ݼ@T9\¹L=;^Gt=\ ^}̰Q{x=ǜ q϶<%i!/Oyx3eA[O8u < ]cZb?ITWr{Ռ98-_i!/.zhu@oYgd:r{׊Q|TKuC%WUI1h/+=OE4W'E] 5E5c|ƞI 2OKψdžlh}n; ;}s/2JX@:Fm6}H`xE M\K6I9w?>Q~#z{EI^K t:v{p?}X[`Os-{|W}`5zѻEy)D5*X`9,{- 0N>>oHh X: ȑ_"2{w|1m>l(XS#0vG8Z19x`қ@3BQϾ#h}P8:zm^O>Bƈc~qޑˎ.32ǾΗa<tpK:J:`΃r ?!>(';S=>K0>:ﵿ[F;lڌ ?b7nIF9\a$8VXqru?! Y8*<j3V s u>c~0.BO+7 )Ǧ)9v[1%G![> >mu}cs ߙwО$~:RQ8-U~דbR;v{+/\GY zͣ{)\P&4~xu|D+Uh@~'A;yOa"OL> c =_rk~eiؓ|޷-|U?m:&^66$6"i˗f3ӭvf+ā/s|[Y,Zx !@~_(/2N7?$\Aϰ3 K2;{=|1Wt\Я|:/);]77rQ~Gy Kո$~߳ m>0T <8m| ^ a~ 79'mȇX ¾;p w7}ek̘ey-Q\/ks'h|_Q>~8s 9#GG?:;y bN)`~M6wgKzr0O AOeNHK^gQgwZo[|m՞%UX _OYq^Ovڈs7=%EpDLOh:u=^b,?5RK{e֖W kxd<rTgk)+[6} }b>d;hɓ`?Sq_~50̯ '}6e]1B˷1ټZ![G$1m\N׋^F>!)r`گc]~`EXZ@L 2KþWqy;9s|7?^%]On=bh51r|"zB}jDor蘑ǧ`=4h4MhX=!! ڊV.YF^_$k#vq=Rձf|KEr$٘:ߔgT7[Wmw9!ϵi|}F)y(^31-ƞ3w} `lԷo*ոRصb\.:7,? iKKd˯boOpq׭.?>>O5e?^T7.{k?ݷ_{(?uaԫRǻ@t }.KzFD:W&@c b!7gM=$4|OS<4SL!x7ycdS G q9aa}-Ǽ!cǠ>/Lsa8>h7ak8fhK>KH pQǥ2Պ37]vT6ے:ݸvV$z[Z6 Ke?4w``rИh--W»U-OYyI~f̈>\\7~@8fg5Q<m̻2Q#[xWMAM7QM}>//s\F-A8vtÐm,P0u\>sA|]SǸ杠Έ9-G'_/zSW='ozz=Q;VԮ{Ik_W5,Iϻ0$ѵѵ.k߫sG(oHm#_ZU*!_XKL95=6dO/Ol]^tkL\q̥Q>oNJcc\q \JNq勒s߃ǀM,R4]6R [qt0 p_jg}>DץOh0dpN"d?7Zb~T}W| DO+5$t9XvX69Xsq̩~EIoeu7/]wyRs0W4 p-}h+;퇆iW=&ok_GyjuMmmh'e&ҾN}m@aO yo$+]ތ}@i ],~|Zgh~ʛEsV^,zh 3Qm[,aϦEgD>uR׹)4b,NI:ebqzgQ?FQʽԏP?H4gg>n򎷩1?W~G-uohמ-S߷_*cӿTf gY}GҐ:Ay껭WcZ?_;ꗪ-[صqvqX.}se!}W_,\-k^4ޘ|zuO0 u֣Wi ֌rg(f@ޛ9=קi}ϡKpnf +^ :̻ABغX1ۚ2`$.ԓV}8BaXhmnx-јGKhnc#/;h,C ̟b4mO9O'4bq.Ǣ{pڞ y4b=m5ipLIz)θz+RXXJ63pY8+׵'gL2y~cp XÌӱnC.d( gүkAO17< ~G|($RE̯}m~͛Ԇ<9)=n| ֑ބN'h?cZ+q=yR(^o57`KleH!eyt^Ǹi/ڏ5ِzɼ𨮷|Lwp AXg9Klt8'S5߯1QIEG]%[ 9MC[עL= R qPuӤ҇tr%rRyyLו*6ߣ-zjˡA r,6#݉ }ve>[$#N}F porj3klQKV&n zX*aP6FˠN}jMpl)]O]L c׀In[@3犝eGXJu(9)|ۍ?Syn ϛސ9vØb? Ggy R s<h3AsƱ})koHu^,uqkki3OQ['ӡ98~씠MΕC}ic m<rɷ잹>s{-yhnCmKuU6 y&w)<{݇y3块 2Mt]: C \c? ? b\!5ap}t~`lWѷԩӿ9$[g+Ժ?< z#\ΤLviܻ<|=~gyϷ*f dzYma 7E/ eW^R/cz_XjtqQI=v50pO TYdb&!3T0~%~qXgڷmFrI/,G 1\>9D߉%h\g*]祝?1fP\d.qqC.VA} c:R%AβR%){Ϯw70=vd{qRQVz}gE$xd~QT>pw XOJo׷?3_y>/oΐX |W|b k/I{hVtᄊ;b7\o[]&}zRH<;1Sએ֊d=. pJunfD_k[E¼)G9+O~Rƺbi_XC 9cc kZ~}3,֬o{ IGޗQCzL>C߆KG;5USt$~f}"'''D>h=>׌ŦLF<ΆK~6^jD8 xI*t=(.)~ZTۥ9s|] Sb={[!d EutbCaea`%g0?܋AMkPA]ycvorϷv(u)Y}zcxD׋y&_@̇[ģ0n{)REyA ce S8s h{x_,˧>c@R}^k밼^e>FI=T{/}t=iX"<.'ƯF)3W ?φ}Xlh#cʗ>SS"UL AeAjGfl"鞧<߀1a̙|r \5)莣Ϩs>ϵtqs 'ouՔ4Wvl?k}ƾ}DPo*)u ޓ< gO{[%ṞS1[ʛv#ʋlg[w7RѳOKzQ_ :$wzhmPz=g&^".My Í(:](?DۥaXNu)OA K'wQ|ߩ\P~'L3!A+`~7As;lkcax׹Oa>͢*mG/r3stN?bLGXx|Ehm0uKV=zR-KI{N"ިtqg9U*~)?6}kyN ObQ~yH8{Lwrd[N\ree¿M1C KQ>v_= g'A8쿗? 1:(r0f˻FY|M8(ߪC@vvbSlFCˆOu/S?N nV]MȇmK gS_RqݽgRUoI,y'uSGȜ2S\3SbS{ ri pPHTC}uQ=rQفr0e AuYn}Aދ"u?߷gԁle:;f#ybobc;=y{RaXXm:zN]gZ ]$nS=o?wiNgZ:pڗ':mW%q <n>k-d-]ngӷvb*o^4( 'i6>oan]'+7,O8l\w'UJ]Uo=]tI}.eg蛎uDADYHy9~*_f+jηS VٗD3'\NHc7Nb}VJ"Lkb Cϕ_aM ˏ5}~-??X=R*'~=ƕoBq_%?u5#QA}c.g^D]ސCl({=W=׻ '}6NC|c i_ ¾S~tan^޹A%h]|n ~ y=m,!;S1a,L}v?nB..~| 3ԟ"~W+G1#yyfbqd6y(&k'lcz:5j}xO7{ ьbz9UG_+1(ű9|~g%cjr@G?—~V:.??}NX?韵||kکЦs8 9?u3=RO3u۶xِvH=sGϩ<{N|ǣ m>DIQ56v߲v<rKB}^էAY*Vb͟}NrƂMGlԁ lX,?%WRq\|vl:_U[po#{8Nmu;b؇9X?b޿Q/_J܍ kCYhͤLu7跢ydo\(}C??wkY!]GC;7?փKw ^*U~Q >;MoK>'G<>pcdwb >LO-]S羧]履G 9w!sp8n/|ۮ&rE평ڻB2ODeo@ϊr2Q? ? !_V&?ӗ xljc^`>; h`}xi/o9}Um#}GT+Eg,^S_8~(330vh/d^ũrmYد7'>4*㰿733*s@"r} bo0UtxAgCU { =t-荠aICԐG}Lt#Ig2Qɦ'< OAH7*ʟ0{ nڂwq!b8s2saX83&&P',{W4yg; y^}QJ﻾.g->]Sx]De=ܔiwb,Ś==v,>0!/m95xB{VDKt<|^WGg(,q8 ! yEu+{ gZLg_ql`Cwsq9چ|Ƴ Q{cs`m G2 ['jk~?9k枙/W SKƩ?)' &<^׺dq҉~Z/$!cK+9Vwgﮈz{ҍ.@rЛ͆~c}oc1N{Lqݾm'u?zS/+,-}oȧ<mrO9Xszqs^MmK=x>`{ >P)#oI|~r闒.b-^Gpγ:O:-M/:Q.1\yVItnHwLoiu[K% 2]ѳ^r '; 9M=Fw!7 o) j%r;g1K8VG.5#j26ekכ(U>4ϻA]j>R3<ǬNwp_7ܖ?}6%q:H-*|({r[\qJsڱr>zZ>贿nE]):y c"N՟Kymxk+^[Tg(:ܸʋԅYğQ?~I kkvo8?:4Υw/ĞT WR9'SQ*C_5ѿ[ _x@tmay=ϸΉ墹^e{œ#ӱ}p}/??~^Rgo{ &.f` og =.Ho/NC-͢Iq{Ƙ4"w4=-kзgV6V=y+~33*3qK`gi 3yYv?W*Y<,7M$ pܕO /Ϩݏy$UJuR?W|.{n`ϽkMObJe~eGƟ_x(gbpO2kԃo /?DOGw<݄}p"IGO| uokΟ2N~ƱOwю-G^hK#ah!U"*|/._$ߎ4O_*_Rn& ,W"|ja㦬ur1\+o/t51tƍW9wv_սE4ᣉ~;yr_s|{o=<=ui9^#7 3v1$>w5{ɟ7bW>=$UNOn[\KW'.*X+4?cfiGo0/Į:!̗M`8ǯ}V=6c¥;ܶKoӿcJ?,Y~T9qz!Vs s~8m {K zdsힶ>G}?u9out(}{X׮7>up=o8FEG8w$yx!_<u;َj}aw0\;ڵhc8A~8k/6@ϓpX M@Gu/#ZRJv__rN2;CWzt;R&h"nTp ux @WMGȳ&9EҮϸi3].M̉v}s[G|B I;/7kyХ6cc{ ]XgJ[3;YSYW~zr6\_pW8K>X4g0J !|u縤Oe:,De94 3i~w=rǦrwxvɱCWYg++ ppN/6 ?\X`?D^$rGBc b~^k>Sg| |7[11Fwºs!N Ĕ?Tzܹ*K Dw9hox>Eu{\k?/nLbR.S͔n>#wY*G:Rg]sݝL!R1Ot/!NɨՔ7lnXojߙッ۵{Ere5vqtm1 짢~fE5o3Ay݈t_~>vSQOw\#c}ٲ> 9B<z䉮8oz" \[A;@C4!9=8G$Mo3^?ʧIlq^a$P~4#+q=q{'ԕ3+e^ڐɟqR虧?걇=a6ֱTt9}5Ism@kM p8>؞͟y('].yDy8:_֞M׆A_?_ ˱c9? k=߸o{{ϒsrlpLx>-NcL*'ǘ=X>l.m y)s,eJ;?8pG+Vb}ceAX_ZZ@ ҇E^ȭ>O[L}O%b*s&#,=UOD?Uky?Xmn}^ qtv):e<ߣNIz}FkD+E噿4/e8ݧH82jJ>r;PۅOaFje qw_#ptms<ż{Owh]-p)ѳU?z*߅5lP9RljHC=3&K⿷mr,pN9WM]A%䕏z=#/yRVf=쳉>_vxyXgCDGL s~G-|lhÜ-/+ܾȡokGK7Sp=]8 =b.>{h3h~y.2|鿘ZWz˸k<@y]b3ǘMϋT[(GA)RTZv_S]nKu ~iC;C"](^'jkY\2qIο?(ݱoKf;J1Ogpʴ[Q:po9>/SN~_x7DϯgӎJ=+spij)Ju{vh.x%XO6t-)??ƕ 舥z^9o귖R}7X/Sw #1z:?K[0<J)9=oLO pFY#8(u=l!YnJkX{'_Oz1G#l"f:JAO{ xCUXH8::Ec/_w3-eVZP?@|֥`Y/ EF1Wׁ07=XE ao ~/>/=ie9'$O{u瞺{Io9=J*TzR*LCd罞%XBNXI`$͘7!7Ld y g<;Apt߆vϵcaL.@S=΁k 9>e)b띬~oQ^-?O~,\ *bG@hs`pT `z66k@&=Į|wX4}1>1+8q::;-gQDzT>/mFT*+Ǚ} Z7lyz)} /\?R?.nr}_Ik:7 su۹+أ>n$+![n~  %6O [{N;4iFWguTE'Byq K]Al_I?4O }2r<8ֳzD*{Ǥva~NpToV3{uaqG+z{U}6," Kv{}y6<4x88_6'Fr }$ۿWLXO>eo񸂟TM 9xXco q#kc [wM}mtqt;\3^_ q@NkאEP)gRe Og}h.AG9BZ?Z+8*x忬=["Y}IT/{g9w\g?`y/ 8k-Y*jG{.߾C?%by;^T\[] pܤc7{F yy>{ڳ1{{ۢ_֮sg6kk Z3ŧu%~?Ry<{2vx `_0BLQcm(ߟ=u+?sR[P/rіyvTv;俏L|R6&):v6bKS&Ϸ CY)w;uQ[T|?:^__5LSEgTg&na`qݙJ73q,J_zy o]/ g䕸,: C_uQ,8yDT[}s%jaw/3 ~֚o5I X k\-$_.CRxj]W=c W(v)Oˍ[Ϲ|%sP״;?WަqWNiaܴ^ 9ޡuﱍuMҫmq䋘#<}1>oћȿE}Ψ]4Vz/iԟA>#U̎|_I!v]96u߫$q=p'f5_ NyR' ENɩ7oj]_ƏQA} 6H(CTb9>.ͥ.QuVSC_os|BB |VV/HYA Ag-uK~s?#9,Ӑg=E;(v=奮:L _8j`T~CR㘊uY>؋(vD[;Es8p?Þ3:;Oȋ%Uަx<ʞQ^>%c f?DC[.3 *b~^VYZkiӻFt ׋/%Ay8 d\^%sK7YHR̹lq?jVRcq45YT~xM/R\gEoʖp}b^Hpy+c7^~%XbM()WOUY/p14M>;T3z^M[(+^`Cj3WȷQHH Vϟv8oʭ2"nSapPXC֮=+߉TJ),VTK-[Bx>DIa;ϭ" p}3ZR GXr?N|^KYzQv}d>.k>h11OT=sv]k96*:7L?.1PT>11'Wo56֌p q-ӫBncl_zTjه6߻~Rcqﶆ~gS;& @} y#u# 亱Tx%Q?Au,7s?pP0bs.lf79M혜s3Xu$ۉ<{N7~/w^ nkr;7r0p=>?7x*p;f8_9jhֆ`W/ک+hb[[9r mqa#^sܺm w}=3[塭M(=.=6|]b_f>a|KHtDA׾+ o-qhʵU@*_sZZdōoC6?%0_zvY"Ũ!O?It &_99}y䭥:?}¹W]L{o_tbL[1XPi>GZM_bk- ].#Z$\Ms>"zv՜SyŘƘߒw:wz|gE$+k>rD<'dQ-m/,䪸E#ص͓T4sgIQ(uQk~Je+r?1il{r{yϙ\.^h=:JYlUJm96}݌YG7| G烆PՎzcQr}˙F|ocF-k:T}(1~>^=e>tP eTDUJ%|>I:Gu99v8ȟ9~D7G( } pp<#!{7-]>#Pj祤$uesO|ݔupQ._.̈|98w<=c@}QL B;'/g]ea^N𝩵{%ѭF _]I9Aszv" T{Ia> -~ʎ@^T|YbA?B.M̡\w~Ӈ7/S緕ҽvqGõ>,}fT`T?wY*cc kށk\;9979GDeLYk];c7}VjG2/|7Rmǜcn{5f>|S17>#KyC{Ni,!k5훣RňodyT+[&GH,6ǤҷSwaؾ׷]Ht [ !~9Jh~BVїc?j>o٤ox$_+b;r̿'Rz7yQN<% ~S?K{j}YkO>bgqLuD9Ϟs>:(4.*SNޟ$ʯ^hLe#4Lwj"Þ\ !u11_y_Ԇ,Eͼ#Z4uY5-!IE|MRQωƆp>{8̰Txs?z. %:ς-+/V$%ѷt=|ފ[S}] {9%q" ,?0zL}>kt ;A3b\ll - [lug{;{ ޯ !c2w GA#l;ݾǜwV8Zg{k>q8(==u?}ԕ1t }_?c^?:1 {8ܮck 34bcߛF>1o ٸu(o19 YAㅰ{ZkcODcKÌcb\2EW*YsõC_I>KEPf+D^m+#8 +$A^׈T<~Ԯ]{SM?-^nX*x㷔n~S{]N*S8y~͇ڛ1|lsIs=>VD]Ry TLhs7_vO}dgQðt߲q%_nT [Q_^0w3C+A g00^"zd+sh(qhf3OQx<!T)hc\[1~78b^8tE'Aye6- (ӇTQ> K.9PlK8=x{yք#:>ve' G?c. "W6R+:Q_|_tsJ&:G% LUY];$1soα{(m@DVvqJOo_}$=쳉>_v +EϋYjvxš\8h/7K{WG>?;/1=uW on}a)<~b5x臠_%3`7.6"C{c6h.:Nvbk+ 7z鍞%z~/M?r0w!R_?_>~^7}c?D&;)یK^6LGG[?ӉS_о]/FG_@>n7d?;CYw>(z~/;{o~K3 ;(,68l\Kﶾۘm/ٙ9m~ոR&)n4_aw#ϳ='U|_mӗȓEuos?~EҟЛoqn`#빢k ү=7پ6X:2~۝Ǖ~0ߤ,w==u2Dy@#}!+"Q;/9g[M{:}8'F=yDWxu&-ʥkx~Bw^ne'I?\BAجvnqAHL9Nk@]} aQw.XV޹ zsd<+-ִ闃: tFStyTpWSWpM 8(c]p`L @o[bl}]]-<|__GEBQo(sO~qXt%O$)ܯcaT!K=Oto׈xpvO#^7$˧LjMKA^vFS^5bL\]ú~qXKnjwqOt~e?w5zlX#ZkZº^ xݠ@=Q]֖m[9qtl2>ǍcqͰTԷs $|KFD~>jqҷ*|z (+R6O#e''hcC;oajF'>:C_E3}vV:֥KMTS/kijUWE?qt@/=L = yxGp({hA}~kϨ#O)v> kK9!sal<\SvU~'灾 .|C qV!n_/{-=*EK7b<(p%r d#keӋD+@){=^}kIg=> ٌ~qcce%2_xw? j yV/ʃض$?+SI蚱}qL^dׯ<\c"3nLiX?zx-BA_Z:}葠$Pz+` >roSmK}e ~CZ.RF0g3w57E|Vjcֈr&☍TTl~D>6%&"~'Ƙ[5Bo`f a 0d^/ tO[1kzCDu'}bҎRmR7;"Kuc=k9_Hsg%Fbu>KFꧨ嚵Tv{ξC~+ωAn?Tg%/??Kc$C%Q)|3Pak[98)ҖI_4@Yr99WX򸏵?cxq+(9a\gKz^?<cSe읠E _3olFe ͵ynv}ϭ5Z#T u7j쀹~r>1J?U?>$os< plJEuyن1"%}{o  Zn[;q?0] tX7|%A}9̽}1ǽ`xg)en}sq,=2N~?ڞc~(̉LfݭM{BwyRU]wwZ߄2ѳYm~bƁG3bWz~q5-}#k;pRǡz{DNu)3[ǵa㘆5s֓ u hs`)V9X2 1b0¸=ԂQ\m5ic,}/FDNӾX/b~02yjfHuWC5Utc gNo#@rc8SŌ m<ݸk n+:v,`x8g9.l.X:4~Dqe/,c7g|CsxQ8Ob۪JXy*jgo>ݞ0eh 88דJw7#lX6c޸C̜p_\NqI0waC>?6!̨̰yޝ7jB6lQ3IF̟]kp P&zI: wALY:W;O4N 0̓]+oDӋDegy\6&Rm'U k$/V^p>eFߌ>7<_CKo wݍxDo*|j<8ż,;|ݦ-Bq<r*Α4ykL[8ᥠ~1?/>kA='Ѝ V_K4ލ 7(ks<9-{=a!x]2űӥt)?*Yؤ1Zɫ & l MYRwaR$>˹1OOk?EC5~|S#:g湿j c(Dy:3O}`w=>A;Ey/e|P}Q]al8ۣT>\۹qzϵt]IhG9ۂc):]JFmfk4$^8񾓪#بJ7WMѱG^}ב~T9[sy|K⣹ '??C.M.Z"zn9_W'u~?L{r=߿'"qߩ6g+QE=W0δ\eq^X,KY"Dž;Z$:?O^3%Zd5} D|++!!zRIs ΌHc\\q2b`ŏtDmve`WtU}gv8}^JŻqs %uR~ qHm|HOc %qtt=_TyL>s  :6,ga9 ,ͬ'ѳk' pP^s)6##\QzsciN9/^J5VsSOGY6u0FxO^(US: K$PmkgAp4h,a>c)ߊ.yqq+^G~Ӡ^0S b0 fo/^C|e&@ 99)1!gݑ?h{8X,?3!&׈i,K}}-TzI{_3/) ucs kNA,')lC}ߍׯ',ÆRq߄>eqep>$e{^բ| t9_gWG'Թl !3j ^D[{%:teD8:yrGr|0DeSۄsWIٮH7=ٗR}G SOl~T8=ױ~5MRG]E"Q^26bH?cE8ڑȻmԻ;6ۤ-Fs#_|d'b,+;؋BzyVX;gg_ 7D}G̛ןg 4m7&c&loT*_rx'p'?Hy 2uf9X|"8fHu;X_y=[|ֲ:&R5jc+Zu !"~\_hۦ>\'y kG8zzO\bkOl_|(vahyBKait󖾊s,g2j_ :N=4=d,qusa, \ jO"n0 QgD~$Ϣ~%`_0a퇹z/p޸ 5SԞrPϴ<2&՚ܕ~p=Qƛ%U^} ˆnJbNnU> Ǜuhztnbĵ*-rsv3= * 6Ϸ11[{m ]<'!Cnzc_/wqwVCfJ5^ݿsTWN}}W#;yg~E8|lɓF&jeET'1o^Mw ptTuS}ƵI/bmq}q}jސX~~L8V;*o shźR`V+۹0}VJMO(k:t=/ƒ|Fēh{0'F w?cl;bO?k1SٿA=̟cbn _̟w~b `iE]0r[.a=)SDT7=y4uعXo%O1poqͥL 0nlS.oCUj^ Tˌ?e>RCc'(sX TqZq|>왙qP\^7ָ8I+з=~`aK+?Y 9xۀzwɌ6ؘ쾓%3*ݶ9L=A[Ȍ~JZ04c7I ^(>yP:%3q_qc}?܎!B*C{њ{V"PNiqp]Ă}N#?ߨDy=5 qp|dR]8/P߱ٮ.X2v½칵*Y>Rj5>"3Vk|8_"zɌmG1I/Xs g_?bVw̸ı!"' O ᫨q8&1]Tg> .뜝Ä ,1b2sѥߕ2saaΦWo`Krg5i*Y=qloiy %s=srUQJ{23ƥ,E}ǤKO >jj?omkϴ,8s1dl$c:'8!ͭ/K='D"`\6=$2sy{{zs˞'fAEP(_3s,͌6)I\\JY#qT<lse(~l9XMt3%}҈}S3@3p8<纟̋]h.`d.2[([W ]ms۷=iQ7 _BN583S_Z,'|3DO 4Gc)Ysbgn5U3:Kk5.j b51̌C;^Sr0,opFw>pt a8vO:ymlʻLj9g=pLXyBF2OdA瞓; p9GmktL͋H9ΖRF|V{`R:_nF6a8'o{UYQnGY8~g'&ovbY݄4i"~4uyF|*qxBxRú yeOd㏈ljgqvHs $SFy(dE9Fx@R]V\љq~T=?.-R:g=JItlNctW9WXa.Yz3xx&) h;1<G1Yh2Y4!n̷eJg)!{c\Q?!{ 8Fdԫw֎y1t?; \R}/q_pYg5&AKn>g2܋Rl7ճyqz;OdE?V0'nL fn[-33U#g.܊ςnA{gks,p<J^AZUIHuO'/AuzcR}|s0,یɠ,Ҙd At`\Q?`ue6t~߳eN`kb?-z&sd vqȚoNiGnn?A^}Vt^IF ㉠ E:=gэiѠGi@Vlf.z״91aŜ8& ;?)knX@cԥ4!lbzE|8&$0QiK߹q帼mV}G'zzݾs cnbIg! ^3(.ۭ/`bM+k3y434}* > A{ı|y&LqŕK?Ma=G8IrFKS2$Gzbݻd@_?Ik?s%Q_:bD;RvZ8'q\xXF{3@NɌc=k>sgX)z~SJ[lf}:A {🸾ShD=AAg1)t}hLVcyyFȬp<@09}k([a= \.qR]8^X?GN &Acۥl9G3c6"2D8CB2gQ%1T^g91D8J4ato6p(s{D??6/ +ʼnv裬3mB;X\-6q]]_ȉ%sg0Hdߊlm ȹc}>8/9N/&A#Ì8ȏ>kAgoʌ2˘TrLG\mY'SQQyqG5_̇473R94< /r7ּ8:gg~sHe? z6e~UNaRSGjЯ@m3_9~q͌c0xN!KɎmlltxլŔ7#k*Ʃ;nkR σ5uC9dðɳSk#3c+:FeVϫcXz\#~K9k8bާ3Gtv6{гåOIwLYedkXKϥb1~ {fn#.g1<tt&]X;%o̽S KֽbwakPޘ.^1Όc\ `?E1/[dnu\ q/̞ۦV?ω^<'-{/~1ԧRwafOsx{FyVi]n*16F[ mWB<} J2Ĭ|> $ꅢ1-o꘳g}ƤR>*YJfcV3V)}&kl#>zq5mC~:/.z sܾ=/Rs ? z-h({hL.C}؎0T#28&*k+L5,kk 7mp9_G ϪbE?('r_suG"_Zi$pָ»cr)Wi \.d[[_U_GJil8'6X1v+JvF SۼFd/bj)59; Yw7"o7#țD|ً9ӗ5q|j 0}=+cD`nQ^ /=_ɟ1'"@-nb)>er/djyqL3ӍYy>Cc~(+) JfT$8&=/0~@/=D_>!_Ƙe1^z<υ^7EM_8oe=?J*R{G/A?pIoyNGrki8g~1%ݞG=,6/M@wbP::?Ag9q9qL&IAƟ͒]ΐ(ύc<֏@mȆ@gǁN~Y[Ic<3+l[ST+>7Ⓓݞg5F?*.q,%wS֦8& 8alFGPXy3rΜ׫vġmóFDcisgZU-Ѡrж{y ~M,c绊ڷDϊu$Ξq2R\& mBѽAv)qlfr1~!AMX?~jy|O3@ N?~7dnױj?'k^^B?$5AۜG|M}&G[=* uyfN>5373PkjoMA%`y$q#U銣EE~.d 2.ޅ=_%j3H?+Q|?^'3IVFѳI93?{sR8'!F^ Z&z^9qRٲֶ9^?^:t5Q s|K|?ˋ^ :4G%#>_sGQޟC@.;y^ z)' ϬEF?itGq~R*}Ts{^Ϝg̗Ex@b&pDxb;Ci |Avɋ#ǧO9f=;a\!c!s̎/=|tbDueY/EhYMݵaε~'N K6_U7K8Ki(d Ξs_!?ˣ1?.i8ʸ|@zm' ?,ރ1-2r}rI峴VI4f0zc50N.Et0 5(o~ ԥQARcy$L7> z%2h$L!URp9$uL$CW27q5`3OLZ^B:3 NyĿZ{Nb)*+q9)0DX&M޷BqD$iewC~9rql)}J gHPy1׻5ԛS56wjhϳ&vWz̶Y3AXSǨOTb(ahPɋ#5 `8z9YU,IHS2ۚ'ՙIGA9Y">!꣰\ -@l=w+\UnyNˉðЇ<3g p'TЉ iu8)P(}o)}Ou6qgpSyYe޸Bg r\ߘc"ׁV"fCz蹀̽zV>~eֹs,3cbI?+@̌:z8& ITKf<9qL~K&lyFVD}7ʉ³wEF~W>OkG$.׍ص{6,MA C$b\ks+0?[A犞g@ωðh#| mDgbR^2&ՙ<~hؚ lݳ4:R5> z"KsxV}wʊu81O4nvM_ 3ۭ'ɝ#uC`Cˌb%gq-A_f矋͚SSyALjzr }!׀^/ED7^9"v'g=v?+s_q2ƸȘ%;#|msSw1HqA{U}gJC^CY auVA<Մg9qLcO9XgMb.En旇8lTh-? 膼}|u?l՗1od1J1MDudA uHfB#ib_*Zɛ]to犎O!ilM~9Kol +T'#RŒiECBCD=:3خ[JtuN=p`jd=>@@^&*m~hL~$g\lf ԥ?e/Jy6W y;F\::"!'TySdX8>*ʺvsny:Fļ8|t36qh'-#>(Yoflud"lu{g``Lˋ!Ş%j~]32Wk8(sE5v~}5"g[bl}> nxϙIE{<~ƀQB,b c*sQqt ʇc- U%8*<ÇL:6哠y R[ny2*Qɼ~Dxk/+jꛂPQQ}rgY|!9qtc* ^5Ne/֑CK*x>2bᦞg/+mqa6wc)k=3?‰eIecnӠT绕 ?7e~dq݋= 1ga1YITWh,#ɏkdnrW,*$:+CɉavAnn~fpnx剰e,A&I\?ω^<#-#~.([,N(y4$p5֮TEDq՗5d!Qߩݬ7> e⋠N?ՠv'N><3n#+%:73V >IAQ \/] 5`gynG; ;3u-! oay?Ob>-8647DJC8Ɲ/D8 K|~uv~lv8l{#o#_9?'_|?S` Sue2Ehm='~(򄌷|E_j\;Q933.L8313f888n+9co n,m%\ 5]yqȟ%wM@bD7^*T&xXㅾwI13\>׳&m#/H:0<<|aΒ1Q]9q@a̡ƼOʍc2glG׍ŅޏߐG0*qpj5Ǖxџ⽠@'VXn:q(g>?xܽxGQõ4$Jm1r,ϩ_q4sN"c{Ws>ݠA_YP: ר)|;ޙ ]I뮭$t {LT#@#ҩ]S*߄3g^#?:6H7[ulZM)E6?~! b _o :G?_kIt}ov{6)QYG&xLKvKdqh.]q'/@8c8Dk3ǣrX 2s{ٹ~8*ʷ:k1ΆA5r,ٍoˉڌK#qh ǴN)S6 8V%/kV9S=@Y}E{F:_y8uN2 pܳh4~bkvhf8"<`ɒ=A=t^S2hyI$<7g} A >@ޅ8׮y}:]/{5cvO۬gL XEuD^E,s6xN."?^?_n1h};o ɜN*fDO)JQ9<#񙠷> )3ϨN 'BRex|B_dzofcVcĽ?䝱睒W)Q~ڙq\}3bU#V2wb+viǢ0YHSkiKָ 0x1b!!sI-Փ\q×5V߰x>+1 8"<04M;i;I*ר{Hm[GgXS3蓠^guv?n\!q3:UZؙ}Mc,g91X״&pLdWVMc0c9Wt~s\(ݖv]hEg?/Ɍc’d"luW`X|VdSMD6t^ r` EcR8GA}kG2m<(Βwu񹉔q]yqA>JGZq\Fڭ@w:t tAp_]?㬴:ss-.1iW8*Cc]ykg}5@~wyD¹8|+.A{e^^itB?sF:1잼Hnԟ2gbQ>q>_aX80}_,]ϳ3(%Q"Qɉct7)C3qgJ~˸,3n} *o;3889qLV%#͉Q𜸥gꁵS2{]R /3'ho,M݆p~>:'-{4pΙ|ymNIx}.0γv<ωڕ:5hQ^&@Mr,$k>"gy!ud^em+ A9kouyfL.ɋWavE}%vˍ5YiS$KO{2oZxF"eϵCߌQɟ:?K;ܱ#R)pfbf1e_otDޓ~ڏ$X4啢6/ ;rd}v{)?\F#AgA)>os$My!{澪S:1FUTܷϸurH8&ѱѲ`GkjeET7V5m!&' Qg<-FX ~_0;fۯp 6}9/!nv.{8& A*>z=@̋#[2{L+m"<dzccԱGn Qڥz*b΢to"VK-d퍫O6[> 힊Jg@_sݮD˨~خB4fVVS!' )>~RlW7.Ȝ8%3³d78C3'gaG] ZVGp4,,]S2TEGg1'meki4cA#w~!r菨_:%sgx4ρ=?0y/=Y'5c~6'_sߣVS54]І7hQ_8zuNw0v3DsdyvI=Y?F̗6Nߎbmt6K볠-} tƼ}5& [rfAُs|Y#՞Rԯ68w{=6?8Ezͬq}@R:hI^/Wh0db{ Rf̑kR~ܾ3*y#㿢h0\z_| {1RЧT32ԏq[ͼ?ȓuˈo3>6LGu)m)e~murk=;DxG{^s߸و\+s'B"=D B,m <3۞]~;Mă/QQY*k|EG~nf:q%'òa6'U7t:3 H5V;h:0RJz)Y ?.ǝdR;GD*ް̌?*ݣ|ΌK;'>YIT@}hI%k4 vХ1Wߐ륙&pԟ5c7#SeNBf?38ovvdI:]w7+3<<~4uyFu{]uf:+k5GTs5ΕшD WcJu4q啷2 ϣY?'B>Ta.7[5> e|sA Џ@s\G8g-SBOb'{%'r__%u?;<7\/t7ŬUCkB9q2I܃#RbɌGfb%gq `̼8Bf H2t-A;,kY Q kcԥT:z)g|0 sL$C)U}6q8 v٬0ڣ N[oZN-D?NxcEfǦOVm^!KSzai O73Pڭ8_-s/I;ZΜI[TeKHuMlp9%Սu|9qX,]~ KC8i?|U dsu9wzLjARc{kY}[Ic<`}S2jͺC[Wɧov?s:t"(~~锦ڭ8 }mӔ=BAe ?c>q[ac(JmdQ:b8 "Tlڳ M*\˺>`4%Ɣ^X:{|0@@~g 8"<¹4Mahd>gvq:xg!YqhsliĘQ_Ҡ~nC]dՑ| Ish K|/пAfCwGr8^:%~IcD\/ o1poÒv&ո(f^Ov/{^65绎Iu~WVb:V/9qL&Ow{l^(?_4&03=sny'*jA_gdA]e?sNh}>躹nп?sp$sUk!qPn ]onYElj|ld?gCf)߅Ds].jl twݠߑ%:uG<6µ=o$~(Ѽw8"2E3NJ< t&8 ϐ(w~.JЋ??=@S~88& MT& 0$6#n~?eɚ eWQP2* !yGĹwrR4&U>'o{ᝓ8_țmGqAO)הG)q\ rүlDf&]Z"Vg%yqnc9pCoC эIn}% y:;3=fDQz4A9q(W16~k/?.s47d쾼V-aU:\HYC6!u%ݾKBf,}ɯߝq}ǪJ5g9=A1YHgxx Yeφ?h7d}ʊn CTO0cɉcl,eb|S0û=:{>x T&HqP7,rv2iSqg^#E9!Q&tA]@.6S=}8qi?/Ng2r4'B~Q46բ5xZX.%'͌N5:DK֜8&JX(?ɍc<.qZy ?kp7Z4~Nb$U|}iܕ&Jcq!8FqizɌ߈ܟ͝O 231"J[hN+߾q{>.x8FbʫE_<k#9qXqpdgG̋cc>8%3=jŇχrZQ?o倫2 \A c>S2XϚm_l;@@[=ͩ#菨_:%sTu]+H88ka1i|5<,6 9#rw]y]fw0SjOȉa\?+s%25}+L/RE9hW|&c_&3g=ʮda>{m|?C81cXCcAx'rd7]O3g zɌǴ̉c-̆ϑ`~JSqɍKRef=3R `oz#mG$:Gsp4qNb>++M`1nyz~̃sȉð-d]3Fsx^MahDAهI=u!zf,JrK~Dɢy3kcd>gՊR 7*[,qOMm3Vh<),͉K]BјxK7Dw#R[#[l]vrb65(UX˺nvW!Mc0IlQ61AjYO=2%3cr70Zjl|Y}7{N)ky.*kD6>bqu̩L&3 _8<^]sϏƱk1YGiH6SvSiϲ*d܃z)(kwۺ ~iF9dxãgNI6mKA"UQʜ?*+jM?ky{]-voWjJ3iV{.ܺݸ<'~4uyFZ>pxTa{Qtt G\+YFQQ&xG$=刺,}d2sDSxATϻmf^l@tVyq \z=n0c{hN}@T?3^.G̃<7ïA] 1@l-0_f2}qnzGn8=8 *eɍaCD}s0,9yE矝cz15AyLTG1O߃s^)=ߘKYLp_Ѭ](_ߟ88LbD?\dwa(a g 16ĘQ˚]Ԇ8xȥbgSay4(dPsƥR;'?ݐG߹֏njur]T1A$Ӭ}g3O>ȡ1Ť{|n̛/58&Iw7C|~C퇲"и?T6-:uظ6f+AM/n=8)o?^?z,3^e8$HMG{X۪s_Ӡss9 t MDϣc8WS[̰3*z }Wż8:>>|Ml A͞X:uے[>9_{TQ9qL&Ɂ!M2Ϲq~2}mhF}uzNy-;Gp#qjyN&"=6R\j^2[@Ʈ|>39=F]'}r,$z Gd_0$Qc)G#qfۗamzqh~n13Z:Q?sж{`vϳ>23ϸ~2? >WY䐤;M'<:7fw3b5`cg{a6e! iۡ M;qn45,;5 KXbLŮC^|uA< QhhiNz&޻m#DװbmnHIRQFafA老KbsDʌiNU$P_zlm[<1p?; 1G!mE23 V(9EV\9CjnX%2  Ȍ67ȘO%3{Js&ϙ(%y*֕JorU.CYsDmR̳BuyHwNS̵$ź^b -G=]zzaNri7=9۠gGgr}1pPdV^/Υd8>-Fc̞g=?;s|˚-(oϝ#OT|sns$qn:'-}Y֓Vx E6%j'OOX)n͌#GaX^ pt aX}_t )q,d0VQ5c瑱¤ddA[1_W͌uwظ]lg?( kdn]FAΉZUe)}Y8x!X7ό#ovkrR8%3pYu35jC蓚2$y =p5n8G{u<Ӄ~gr|4r.`$[f/Kٸ!e}$>]'3{egJ걩IXx;.Y"[`X" .iSB}g-7 zu^DƵ=Dħa9v{ǙDi9Quc9X{K͕<9V{,ޓ 6?ȳGyݨOa1N>1H34=ˤ}Mn?QR&(q\l9h~)gv0'䐺RR3|06=~#լs آmHɸ=ϣ%IF\"d ê!=cZ-^O5O귳 %W^:_#Ζb\o)#}m[[9 GxۑOIgn}ƻHH!IvgUiS˿cuױd}$aLa`̍>3HlL}|{=^ W>W׳f=֩g^`ncDyVH|&#<֭YnΑsQmcC*ԭK$]p Ц8C,븚Җjߍ*VcǸ?.UZrcU|Fz#S,ӼoQDrOt#:xۥȐ5(,ݭGm,׺_t/$9eu%])^#;b=ڇrRfPVR?'~!GUR`́6;ds>k[ct-P|kunT欳=#x[w;(c̃dn\5,~Y c*1ɚ]yoJ8[s R>scS׉x _eukʏ#.gl|=.4Lbcyٺ5I۰F{olQRXL;KǾurGkBV-C7rFci1dzXض!l_s{.$c&nA MS:ɼvw\zȻ|W퓌9JK-Ghqm| ,F\|iu9,7R5ϔo+3M㊐Z:C͗*SL>㹈?]]c:_4`_G4%%]N:ޚi^ⷬGYbz,ú:T<)~psdwgpQqGā1GIoMsQ4Jq]o ƤS-m%Z cHrˡM8a{h&XO>ٹs{Tm]^뽂d~e!c@[rk[_]l{p49p`^~}CdkV_4¼Lb5[eA~ޒ%6r$[s`*`rY I%%G [Ի&SQ/4^8"Ic8^_"ɕmH$d%`y"7FnI}1GGڝO W}'뗬XfunK璌aC*糮e(ڛ5Y)3> ?3V5V+G^/ʼ&xI'bR+?Ă8o`$ Ɋ"mUZ\cϧrebh+ixqIs 6;Xw؅u1Кdd1XYM.ky_s pyv" 㽬wn$u%G-ٕF\۟U߲_AϢM MXchNڳt6-X{݇>|bI!+=Ks#&nC0|DS"?DM4,mp. 4.^ڢMubne\5zŘ|nǪ>&ɕhB29d~G!{~mmdsyW+~uYjl8^ۃ-9Ξ3- -+tqv|J3E2g =>~4&zڏ5)>JQo1}>ZT3YŘcVXkf2<2\=ެ[Y׫`{4vuz@3&G\ Y[v݀iSm](>HnБgn$~c_^}t^*cro#{Lkx^O%4gc`sC,~FfcH"&l6_gӜ T'H>So\x^\(u1G"/i(61Gz>}`1.$c9)?"a:ݘ#N1F~T~z[si[sx/y^<wߧWs3孬[<8EBG;w|OY\èŃ%gEgŸ~Fp>$=GO(|oI.1G'϶h1C1GĒOޗncǚKu'G wc[ve{Ѩ1߱y%y5xɸ߸=u{8kwk˅x4άSG-Oӷş砩˜!Bazl/,v: .+!c4}>Ty߾b7}A}KC7~TʓX}HDNO\[]^ۘ'%l](=['Lj]2%z-feeD GTQ=هۘvC$+93LXː"vM;ɺ4K|WmYŸ#IB$kgľ%G_K|3'm* āi*db~%Ob~8Ҽo'y1?oo 9Jԛ#z.3JL1mIiRDN-\nR˸ۚ꼿):sXO"9!R|7&.>PgDo_!ַ˶m,\=qmc{e[Kʺ|:eq;ٌKX>ǰ%u;iP[|#lw_i|=/U?3'@kHj+#׋"7d9R JX7wQ}IqrG̰fRK6$UTg`c=LDpx)8=9[j;WzGr,s #ZsKfMc;ҏӉza v{s o}]:ݒCYo{ܗ"ߧڮؚ#sM Yϼؘ#ٚ9cPWM)On xL^{HkF5mĂ:u< cf-o]zVJ=#o\Щ\mڊ1GI_ojPUDgeE{B|"Xh-.#Gs%kf_mzuΘB7DLHi>bƯ(7kortsV1OV?_Y/fڋeTX؏[ ZذbYrDw]T`is5HA,AO_sANq'1 \궊IfbXJohʋWb́^_!7rz2rc }!|M6-z1$k}XMc!sUiS˿c1ָrfhcj\/{|4^r/~?a/D bx-. g$G^:>6˝`[I$ys"?7EٶY9MiZHQDvW1H ^јcn1:cY9o^ǃi5{4ჼin-^I<<9 Yh0'KwQݵ` mE2[r(K򍛘o92r&D=^uq6)3ƘJ/Xslډ݀/`:TߣgnגkOT?rW:r$vs0G@27nIlz̳̑P|z\Eqϓ_Zk.!K ОߓTs G_4XrY׻\y3(k-:ayFBܧU9&ɱR=߫Ys Qc ;~i~O[|kQMa/cֱ%G$ 9_%Z7k_e;Y7Jxf+Y2xu$}w>B5HoK}JuəR7b|=+iIہ6le64sU>tD^9-Xֱq ҼTz뽬w%wr֋,9j/eX?fg|=}"@Zi^+O"ƵA ǬVc^ldl;]9pl퇑MvĒtIϱ7{l}^ŒCsCYQU*).Z9 G։a1Mc5<ݸ]}ɘ tmXMe1b_d-¸q2ȟe確8K}|2`zfAc<-q_K|N0[l{p49psc 7ZoIw3zΒyme%G_#Km7H|<0޵eK㻔#Ob7n#rK1&Y7<W)HG҉D>{/9P'~+V1GI}29OG[Y'.e,(u-9 5;`\7fɺXo#KuV1լY?aO᥶2^9z)3[sd,=voQRs`-X QW5E߮o&pKKYڷ{3y^~#&%zƀkd3L2wyҸ z JmKu?9I9MGZ~<&tNE^1尲Ç/\cY&}|G?D2qq_|.>[>*YIsRmwkR+=}Jx7qBvw>,Cnkwʂ\*)Q3LfOiqrebh+,=ҚZ7R\gLsIb's8Vͭ9kdﵭs XBbv(K(j͠@ HӾBi1孪|8hI\M%ډu KgG*擬qq$yl޷Jg<͊6k\[Xϴ`2^$ ߖ/)͟DP81vqn*/^61`ςXGAs9Ϙ}eF԰ C?uȒc|4;LuN^k*έ}5mu,9TVczuWnڙ%K3<$vs4Í9f,o.~>Qʴ䈪`)e[9bWL6e#>b 9=0q5a<8A:Z~o{ *?;<װNe i^C yms~HO5b!anÉo.dܞ<̋"'Ř+mss.'W}9$y\۬O-I;#œ_؍,,ݭGm,geqXЮ[RS޷ޗ z'd#2.Ct})f1Lb5ug8߈\+91ap1G%/6ubOMcG_4AX#sj׫8u9s5:\|}b_c̣nsXch-9K3 Iʗaks֓G\];@ bxnJv\Ty.q|s;rH/| T#諚R]Ղ#kɡu$eY얰~ )ksWNŒCYUѳubزq ?Ĥ1GJߺT0񳖦2"#SObGwnQŘ$bHݷsssQE/챻 /KvaM[ am$ XnqZ:Ҹn<5 IƠXXdqؘkɆ:mSs9d4j.5yKFޗ|Ms$lnduYPUOb-⚠}óy"ucSA]OhU-l"ލyo?m,8ØE2&6$^a{[D|7 R60]n7k*Wf[/-ΛVS,Ғc63](oacsvzo17(s[x\9J3_/RGͷj u$y"yeE|=^Ye(.WRv>^-^zk֥,mZ3`MysKH 42-}.Ysp}V ߏr u^`4{k&'|2+tc{K'wT94Xn1fI>yɦ%Ѹ9#euk;kmř:u7`b\nq'ljǾHb"dW9r68?>9}={ljXk!ìՌ9<;5- p!#ڴW׋~;콆HːW V_za/kTCʶ%m$h KӘ#ύ8l,%q=2?22ߗ<6ƚ+c`XR#G%GSeQ=/OTQ= mآKd]_~uz#~IzȘcU⌤oX4qmp{}cلol뉅k|)}"CYG l| zUK=uk#?Q3e$iC$m9l30?4S1h1<ӘD˴hjFd $?m1Wu퉺Ҙ*1bhc,cm9 ``7|ШŒ# 6komP7L⃏H:ޘXw>L;}%eK}\I㮯*ys!W#,цMHkR#1GZMq=RKk;Cs2C5d1+I}2 I7Xr<[+u2s}-ڶW6 gn<+^yR,?{Kqa:3Dja\/й$o Qw#yFh0!.#bElh\> z1ǓHw"VӪz::/w}k{1ǨŒCXJ>ߕ['Ljw8c3?؎]ƲޑUq'k0To=bF㗶us<1}M)F ],9$~OmK9rfz#n+:]?;z\۸bɐs49p}"/=MczToVJr'Cs+e-˺Z}ɷcj?&:fHZF)TW;fnK4mWO_hw;C$sd| 1f[]ޒ#HH 5xܯIQ!{aznwYeXFxN`7xK8KNoQ.>sHl:8}'Yr2 0֗y$fO׭9,>XݸkQįȩv20Aܝ=Kw;DuKO𷆿6%G$Qc@u_L,}.ՙŗu\g5xO| ͓[avld} .>Q<єϺ8H{ͬXGc]itۉd1CG5HmK⇽ՓƎyO~d,^Z3T U^>Kg.Nq-cwb̐bhbm4&qy!ݷEyG`E>xx>[S[lY*yأ/CY-Ks!MwcqnW:cq?sȮK[Ro&RZr( mlM\#߿\Kyu~[\y**S6q<;4w=|։, {]PՀyF ċF Mw>eI-9^N{u{sn<_%GQmcɠ$mY}I94}i2Riz[♧(0$NMF7ߦxpxA(UɁ1Z83k]l<Z}gp'ǣurq}HX2\9JN#0da۵<`*GN>5To}~_m%hŘ#KI)nY AǤd\nRc??g2bn69 ds"8_"M)/xvM 3~zʓBjBsUad>^ڊuA m*‡mqud=&p|?D}YkDn2^9z=9FcV1@^IbPXC3bYar.}HQSm)6ŹudטX;_6%-34\ն%b9cu& ܣdcl+[GrL!aDkŏ{y]X5Ab+zAz1b1~^oɡ,G=դrjznLf2ߺo@->`<'%ъzU$slױ.!ɛ4']ts%Z_g+}u9uYw:>#WN W}y@/QcĐOҁ[Zs*Y~``|6yMh06lʋWG>YKY/:;2Z6{1mߣ$$NeObc)89KR?lcg7q=0?u%ӎO NXj-9jew8F+ UiBjEcL s54mwϏweŽ?e7ֶ#v$q>ŘeV;Lߏyӌ$yn[#/>z뽬ϱ~q=-y2_6}k g#Ou‘c\IOyv=?ćd;|f*cjcqzc#-FB gn0w ֎$coՄm>ס* ߒ['x0XWk52z,Or1G>JiEmŘc?b=d9K(:M=+>E$ a=-\(OX^vHGrZ9\u2QKd]?c.aq?u jusYW/bfUNdp()DFyz}fí|D6T1;x}T-9js7dgց,. ӷvN1ag\hUϯgɑ$guzfm<ٹ2{. 2zeDsY<&|^עE>'?6Ԭ׉%SM㷧zi3Q:p䱂CgQc(6}V+G^'h,jf}l%,CTIؠ֬Vj<#Lz=ߗ.'+3X0'Z IܟWgr;zGrZkvnD+pu-$_CdoO5/mz, su&g4=K>k-G13c]a=[**Mshm<uxhj$tm홫>CE>Q{gKey+ɘMM#jb~؋p}k-)Nqs6 ۳XYz*kE<6-0?\r4rmby u;:/ÿ}8x3T{s2K9:uCEV|_ݕjj 5orTYЯB5~|e֥שo,=ﭵճ2!9WP#/x5N %yܦҁgYs:yt[Kuq'qd$? ChʋcM[c7hʋg^$狘s5:mZocêU-9Wׇo&7bbNvHqH 3tk|nwOrse>To?|_7x:$ @:ӼT۷W2^ͬˬI|˜9y;nT\KyHY$}dN#Ә#yǾC|~\o7HySێmؘo$ıDȗؒ|_=u~uh|=y羽[8rkyug?('f׋w5Om}sLW*0~vnd2O_n(ƸӺvޭ? s9r_WvɇAZHzPW+-67fH%7طQlڒu i,~}>q:aiU\.d]ĺ$;MJ-e=f=׵kQ01Zd980A ΡzlaSZyҁ}Ti$xXΘe ܿKmȊ D;k짧RmV/eq\)+Usܺ[^@o>º%lS|\#||5 sT[<8& H|aᓺ$O"dꧫ%$#s2< Qf݁hO"'|MSC;r/>ĺztnb-:Z:n戤F\cX2^}b k=~tB\SgKeYW:oǨfj%-na )Z%zƀ+'[I*71G'17)9*;?A|Ie#9Vޏx:o!D_{:}ľfcئM9*GrCt=c6ƣ-쾪cPWZHZ?ڰu'HHbC%:$Ŗe<ȕ|&0l\5hŘ#}Iڞm,aڅ+Ǫ6#;_9FSy+-8͓X|Kܯ-Ⱥχ[RƂ~>\- }XWz-Dx;zq񏨊YG?/Lwb}M"HcwaMoQ /ϯpYgz. 1 N ɑt1IsHGQcP*BPvm~e1kSlB~DOObq_}I=IfP^sӼ<=xVJΏwųX}q$vXcQ5Ϸ1tyB vPv$u2+pp=`Gim7ᗎ8Zrh(_\S|->U1qdj(uwcc_xOax WDR@uF'ǻ9v~Ƙ@ ܅z[YRD0`=;xG8${?^[nGfoY}b\oIDx́,ֺ!rPkXg3YݠG_UM)fxkMc4ߎ1nj6vp c?Ի3I{]b#Of^BZᵀbFϡ:/*VV*c~#$_`}٘mwn ymslqoV%<)?[X z[% x7ݟ3.v"ܴ?ȏ~-|j(˥E>Lȣ0Z͠vxR#ֳўhѶcdwJF1-)WbabIk_,6˫Y7iXws\BbsU$Fl 1?te}-yCTkn,;caz-$qے˭^j 9 |7kC$՜%G!"bFu~DGڛ>>XS/:W" YsߗdCTݿaR7Y?K4֝|XSv B;2z`oOH#1_h=:t2swǢlʑ+[-ؘEbI’CYw>caRS;^KQ]7q$%zƀ+W:1/9PFO'C@ɯ,ZBX;c&< #{|~Ltx$9YgN1x.$}Xg5Zr(˶cҳ$>9Ill̑ݧQ#ԅ܌=MӺHjӬlB X[r( g0/d4q4\O~)ߺocsDr\naCNT|I_߄,iUlczc1hَ<0,8B~՛}ILy0u^cMyMyۋ~$q#Cd1I>-9Ėm7%%%4HLnZÒCN2K8@YKg=``^`&Dުt;˘hCoO@(۶w% ]8Z?r "^ŘeV6\"3$oi&p}XX˺zdץ[56%X^zC_l|qW籎s)9<} +Sm_:Db_1GUoǘcRbؒa.C{f ygOgfu- |-AnčTsHmlUJAg X/f$k9FF6C^l,i !վu}d[sL- юb,^=J~VG,9jf|NdwMoQK1GMy{BƱ_GaxL>s?Hr)g̑0p8ߏ[ZfcKncy7Ua콉1GK#CQխK63!psJ⛇<7P(KXTd-Z3h1XR꣬^ q ʁR:ԛ|ӻ m$sh[68c.ĢEac'6&~nbI$c۟Onk3?K ^z1G$3Xd=2c+1gr<Ǡ.T#Rw5ƔeHvavsEeOQ_b}ȒCYVk{ܗ2ߧXÇ6HbGkFڱƾKN65(y2cH6Cٖ$.lSm]KeYU E#3s[?S[h_0|L-\c\ì~.*c^F+Ljcj9oz)@-_$QTݱ9p?Gc]rK(fX.s/5Hy(x.RDW[/ﺘu_H|^<_ ^z|$#['ZaC$Cud>Ϩ@~iID^cdc'TZm Ϻ8HAr&INYs,?kl)Om?Hl`+=+[}c1һk,Ř! \Ll;_[eIn/ =EW)B|YŘcM;UdlNٶm+/XЦ.XwnbGu1Z-bxM8e<}5ٺoʟ|[އ󣬿wn1z.:֨i>7Kg̿oWh0vH6wάX_);.i4@)XrDkH$1fx?뛬~0@</tɸrs ìY`l]sHkes, ĺ$=*Kw_Y_F0NiwΛ.@lW"{;j#K~)usfd~nHd_YO1{B2q ֘cbU$SC))ɔ3 lYbs\/ [_y\-X2s'$ q{FWm1Ǡj2ʞɘ#`z˺Z}ɷWn꜄%e=cwǦsw-\nxV90?5LҎ{V.T#N<$HaSwk:S58$FxzrcQʦ,9% K726e[30bA[|ж!c_S}mݬNfyf~5G$ʑkE9w|؆u3X=ǒCYwyTуmśC$p1nO Կ/34\$c$OLmUHS2dSsZ7QT/1DL6p{ڹ\>G1U\@y묏sD2K ,9eƱ})}}dS< c1Db Zc]v^TېM Юij $vI؍%}0|MENvޢν?{FٷfsZm3NRd>km,0k}ցYaIu1Z[qd"Zv)aݾd$wq&k!K(k,YB~5[yHsɟ5执$+{ uHS^eI[<'$ HւeI:1To]Բlk߰f\'b~ g=@'^y:]Y(igUÓ6/CxA2x@E¼fOV93YcZcLk%iB'a}a;,9zmoe2Tk&5d;d Ř!6@ʙcGZOJu^=?ޕ,'GjŘj}KwnՒ#9dvke?+b I*EQɶ3(uM2Qmc-tEkߖJuΚC8vJ,#bsh=3y]X3a|ޤO@Y~u2QKd]W>뿌~=/fCºEb] WdpM;UNL(i\Us Իя$ h eFqc: iH?0McҐ|KDR>lɡ,CY3Tscؒ .qΒ!hd6-G#'^>G9ޒ $~W1ֹ_ĺ˘#C+iŒ#V|_~Fg%_ #@֏wCѺ>𧺙u#9r49&稞Kt)n;c|=&bM}Y57PՒ{LN:y~1cELQ|_4t(LbJ>e$S ٯ# iHcysR,9պvޭpq?ΘFq˘pl!rzOȐA9>GIyxejCG%Hdqfqz;`z ~-w^u-ZsfZ%Ck/(! ݙe\Yv!`gcW}/֏Ib?j!,ay!ogϚ#F+QX<xpx6 b]~bɡ,{Z?C)RmśIn\__繪RT;R 2iL1o5~ Zk_×-I~,*LFrH]Ϙyu"BX3=IJIr\ؘ!ϓdĠHlfs`nz=Rm!cDO^MO`% ͬ LYsDqg1 #oX֫nuߚQ6dy9Z4:J{,]C籞e=+.ԈwbX}N2~>34FNH1Aq%Gݒ-48ǰkk11G1ZsߵfGY9db%#XN_JXgI:1LԲ#o.ḵvIgNкK˼!ɚk&q_\tN1aIGfPp1r.'kϏAcm+/X;7IlwޮŘeV*=5x" |M&wk_֮,̡m:zdץ[Msi $/I>7þy.kX9 G;XvIxG_U Y$}t;ۘ*cjcqXȒa4.uC]Q39JSoX3k\ lI;c ܴ~+Ac;< g̑-q[oŘ#=QD'FJof+N1#Il- +ݠ5Ogu5kwg4hQmoӡT",ϴa3YƢsY6a=5eYD*U<'$#[rpb\Ɓߟ eWE2ϧM-Yg)ƕz7\Jk݈:(M0\DY Xԛ6վ%G W،%Yjt,CX{1\gz3(G~h\g'Ob:OV1s!c%G34~E:ƶ_̇Xab 9DbUy<ϻHr}S]q-nglķm; -9Lo's3{l}*lLmá#cqטcbɡ,mVѳub8qxa=-9HK3K+k3_5.+39HcbVҟa#xض$;wy%$vm&em޾y?'7׈Z%C<1`}GIo۵IAi~ +kn/R%6[r9 ygHޗ*1Dz*c˭^j 9R\aOYZ;M7e|baMj}X:\ ߲8u^Tyxg=O^ƺݬ[9"W^O"wV$&q Iē9ҳ1jxlKK(Kcc* ,=(՜DudV*XZx3ydhqC=JDp%;dWBUW7{|eǦ$X;0g^]x;F|=VvK*{^(Z֙s|$oI=^Ke9qq_:~O][byeH"GҖ碭XsU1:cPW<]r3RfpO`mplɡ,<ΤIbD!wbATEMM7c ;ߺo0Z1ɁC˗X?Zڏk_֑Yƿ"#Gv_<];|8zϥ8(-GF$rz+y^i="gG5?[43"X&%k*|Ydw\ɘ1ph|k詖D'k\pf?CgP חU85O"`Lzdץ[UMX5oɡ,W`ݯl8Lc%-#߿FwqI9zk5^ T7qemiQ11ؼq|92H׋4-M^ZYf* ه$*5}l5.~^YHlk_@ƾ`T9(61Gz>P_#HJ[ks>nqqOIqpaMXdƒ[T#Ǜ⾮3YƢ-0&.ZW9no|IA]ϒ 69"9>!-=v3I7籎}2?:ڂ$.zw[l/ÒkݮT?!zԭ#& Nek֓9:'u+ka}4g ӸZsPI }/1Gu/$O}1G'ffd t؞)Z>䑷:EٷX`]g+3·Vs[ Kf G&k:Xf}Mr8q1hH5&һYRms֥Ҝi[WIlOa'k '_u:ǵXo#ɕn&:̍&yNg8zoTy=I,K,9j|_n:϶}ޢ߁>b"<=bw@2Nc-RҘv 6Ѱ3+eB߃7aۺl>Y7;nsib:DuaO6~:K<ƺvޭÓǑݘ#5@i|[䈢F陳sdJʟʡY-Lh5 2dPO~Ux2J#EILYePJ96N$vxُu,koYu-Zs.<~z8~HR5sToV<a~sBE<ԞKKٸ:5}ɷV;5<_Zw:@TC-\nRc??gȑbR Q=yUzoQ?c\<5 ~=;Ռ9v%Y&MćҴIoT[<֙|.Kg8\!ᙵ9ֽw YoףycGt0Wl;N4ݦc*'!$12_˕H1$qfjAT۹won0v^dlkR5hŘam,OP<!Xo6ot1XQ^Xc4/n(f}<<cz*Q۲7v6@k&?qpz=,+,m0K'ɑx0Iu Yx['6;}&jg@#:/cm`\VՆ&CWK܄T&yhOI=]mҼC؟GT^< El$4p ,6d^ ecQD{ JZ`>Ⳍ9y$:ĔXXZrhݩ U,6x%G3\ 1͹{b0Ķz\M4@[:ł1z[dձ%GT%KeX?"|֎z[Yfh)gszYrd<R~Mm/Obڛu-H֍W{\tq)Vm!yU$9}:p.#߇b=Ց'Iyd<dH12?JZs 6qm\C*qxt4.H{˻m6_wGb H&>wǺ[N1h=Gv0L鬣H|?ۘH|ߒ!(61Gne܉QDuX[siά /\(McqK|Xy.-W}#ploQǢʱN}!\0ZkX$W>&`9jMђdpkTzyzs$(U1>~?[y91ǫXo`]˺$O8l8/=?sl v"c?P&exɦ:pjRNd*v!JMtRY`ڋħ :Ț#s&*3oc[3Raи^lC6u-qF^:>|1׿oǻ.RG s$Ș㶿~X_`'ǕѬ ^κ$q4~fqk!Yw#4$h+NcSڄ T^&6c7Z gcq9;(4Ne'[zʕ5K=b8!@GjbS֩z(ז#͍Ṩby)6_l-[]R&ޘce'{:~&gɘ[`w9;s@svLv^K=fΙRݎO:&4Ji|=eBb-b4iɡ,#%Aqzd=HD? Pug{ t}kъK>6 aK\/cl[gq|%Xa}Ab%akk#G˿ܮYofɉ-'%xIDJ[rD]Y/%u gs˻׵".g`<}/H&?C"T\Y<8EKqF,'~ԐuF-,9um,_6I?#!]>|;07J8W2D>7ql)kb́\n̋<˰.0<1 'qn-n#PyѭK;GZ?T|!QA_v"CL,BnOϴP1֝c'PKo%G WxkFau݋͛A94c}sS5ObI%x8?j;7 $nez!cQ%GT\ۻZvPsc 5[哸u mY_c}ZĺZ,r9Y$!>#Юma۵ޒz}\lHd0Ns͓ұ1 懰>eno-9F+xOS>7vЁ#׆yŘke)V$Xӵ("kC2MG҉DIPc9uq- y۞xÖWo Vf=16a?5{^:ʒCXmӒ`{pILlWavGykcBl /戤2^9z=9lY($9w؂"2|s0Kϙλ(8slFBmśC$xp1/*g}1Zj[<Mɒ?h)w54bYHr 'ͷOEPku,.v#KWIrڍa_}2qq_z/Oƌľ mLcOnqM\6IT۸Oӿ^9+.[an͞,9%}KTD7JzfBĖ{ !L^,Yi)dəJk.5>նhֳXoe} ֯ ^ǵsQlv)~*_ʼn#v2dߏuHܡ_&}&c}Ŗ/*)7Y"b&X u`nx̝Aq#6$jl԰`is9ǚc7 H$50y70:O"0GSogP osQ%/ "+9niL9#}yqP~qΤniz9 Xs ^  ]͠1G(\j͠{3(N Π[{3Gb 'A8|o Xs3(GA !|W›A9)Gyͩ{3I f]4"8#x7ʸ0e5:=Ûi9b 0^͠QGq^ aꣲ#pEA{3(GI]WӽcGoXƛA8:f b3pg$-Of7p!|(]\vfP(eMo%S9&ɛA8I (6f0C 7rl͠Asv:/y3G7pFYtgP!oc }-};߸sF ?W})s~Dc؛DY7 27C$Q;彝s7p3(G(r7ptffP( 4ob[i& opgPsQDA|.doЛ16 _fk؛A9B|o͠fߗ1Es 6EƱGdx7pi[ą7r|Λ!1ڻsy7rS`AV"JşA8 k u 1=ļ{3(G5( Ɩ ﺯ})x3DŽ 16ʓE&K Dc] ϠAp!(N\M!oқA9y3vz3?r͠Q%ŝA9 =gR `E5KßA9x7p Qy_K*CPD ÝA8 ze Af8}o7r7pDY?,  $ń_z3G+6ݙ#O\ZoX%D5.kx3(Gb Q<כA83ND_fˌ"/ a-J A $I >$F(8أ 1goz3(Ƕ 11?~ aED ?   3͠fP (tQӉfգsG1˛A8:Q?͠y3(f Q|̛A9f Bq򽆘w" vf  f$U7po_7 (oQD4Ƭ})C"nsfOƻ(N{3GoX DqbSȃGAT0(G_(1o y6 ˽ q7r (9 ATW7pf۔eh^(6C/fXryƌ~;pt6f[fP\fc<YO%(L"=͛A9iEoM'?DQ #ao7C_m%J>I{3w#-Q7C$ D4a%oYۚߨ}ћA8&?ӛA8&F<-ׅvfjQןA9BnOoqߢ|o(of*ceo+D´V &~C2Jwx7ptnp3)Ǔo4HS- AFk5"Xq_˝A8 o& Ex&Qy%O e\YۛA8#He> $78vgR (H| G3' w7r  }ݗUQDa3Q|Z˫#{--f0qϣ1Exۥ1 Q<ǛA8zC8DO^&Jқ!^[ox7ptio划;Jp؛A8ʛ#J\/f-|Q 8ٛA8% 3h0zT o_x3(G~a ( 1%p2x. o( QǤjޗrM[h(ZQ_2"6d' Gs Nod`^( kv\ؤғ"<f$m7# ͽx7p Qz3D(sofcϻwog6f$ bͷ%꒱ƈh[c Af+H(JUZǛA8NfwZ_Q Jg7C$Q;y Ax3(G8oLf$.kx3<>Zog1ǛA8Scp-oKfo{ =xq)H(z7C$벛7pDyoy3Jof <՛A8ָқA8f~y[ f DaSB/A9Jo3xۥQz3( $K7pk h QsaF͠Ӽ\՛A8#H~;r3;x3?rD7pof >6Q ы".{3(G  1ao{3T>z3TDQE7po(C3(Gtҹ8 L%x~Vscy =z3(G  Q~E AfE$o$Y) QwU&!|™2o$?F'Wc QxN y3G_'HTQzoYٛA89 E bK4< 7 1yp9ΛA8 9"ģkc7p OXz3(#6r S Q y\(dz žr? -I,Z`9(go᠃ʊ d.bY ±u?`& fGqTCuGy>I\~ r&ndͿڛA8b)"efNB4 ±r Q  EԿ1 Eq҉ Qbs|q=Ლ7rJ Qf{N{Gy7ptf$ Ӗt 7r7ЏgعßA9JoSfj/ 1< +ΛA8[I|= 1")Q%Lf2HCIy_:kz3Ǫ!fy[K 4|ۛ!(8w5 Ϡ7pQHD% QY{ ǹߓ#{ۉ0ofb_ogP9 QrgR˽ 1$Z;"Jw`x3(7co 1~o|o 'uÇ?EDf(~e ±֩ }ݗzob=R?Obu QK" &\~ߛA8#}ÛA8 Qz3(GvV Qf*c7ps7p3Gy7pv /nfPw刑0) #<C ;o7pQ E\r3(G_f iq /21e\dݟz3(G(y#ıǛA98 x3(Ǿ ±ʰ7p̈|aL Q ev8oZ Da|£]{3G_xW"NfA92npgP^z7pǠ0,'{3(ǃ "~ u %/,o划' d}j ^w0 ì 1b%,͠A67rDb?Uz3D_y3( v'opgP!ob=ɛA8&|ʛBoYE<<ӛRu"ns_ 1lƻ(H~ fFffۥ(2͠QBG& 27CA|Bۼc ±5 1em(Ds bcEDC!/ܬy3{3j{3GBog¶D7c`}7o 2-fP6v#.2o"?/Abl}bOyGq7p I.BpYٛA9#oH'?#J{c D\ྚJo1no3wp7C$u|of$ wz3G_dgx3v_z3`9aK<-ׅvf"D>( Q\  d7pP30ox7r Ħz3?rЛA9BGⲌ7rDiOc7p=gR/z3GÛA8#+ %Ix0!|#H} #Y*\ΛA8hWo r_fP(#|j&|9nf0Ok3)G_9 b'B4%2oymopgPsx7pП }ޗXq2:ЛA8 yǶf$.Aʛc`[o#{E&/( 7r a/x3(G?V@7p ~ћA8(^K cd=f, eo7=͠A!qڛA9G*B̯s9A9{3(M IݛA8& QO#ļ%۽#Wx3v_hc("71H?9|o ʱ7pf"MAܣ0(y 1!oX> QfI- Gfaor7pпÝA9B1G" }.o:nP/#Fn\4כA9X +?ZSTD EAo͠Q쪃a"ˆ hopgP(}(5!ƆD!ռ/Tz3Gd-gu  fE܎E?3ߛ!DɗdWiY!DWf#(O"фz3G D<ϛA8bqQFhf2ӛA9.͠ drۼßA9DŽ2ΥÝA9\WLd  $`_ _{ `R (gz3J?f0̫ÝA9 E|x7pw׈cJ ľeYWy3Dy3(7pDO"cqo|ۛA8- ʱ7pLǛA8(yh1褣$Gg oweޟsGo7pPv-wy3AsӛA8ʏx3GxQ4ۛA9fdo(vf:˛A96fPқ!Yp7pD)JobLfP bf-G71!|}5Ky7C$q%fr|t]\fPx3G$_j!QDql7fP "0(S"uO}7p,†˵ %vZI< 7pt ӃĢ.KßA9BO>1dνd1ZFf4o˦+Zb͠!qr?zͣA?f$ ߦ As#Jq7ph[Ý!GQoԛ!(sL:ǛA8 4 +"Gŵ"_(Μc3j/AқA8&-O<-%?iQoH 1.ogA8 oHr7r E{37ppg"Jc7px3?r\ {#s7p0(Gv>Hܢ(yh#6 M dQ Q^ w-,f΋Jo(ğwgP<A ʱf؝I9B0`V qM AAӹ Πf9 щԛ2ӛ!(N> E #vz3DṞ6y3͠!(0CEo Eq6fIQ{eJoH": A9G͠kx3(7#_jy7pГcbq%Ѻf0- Q GoޛA9 A;pPe.y3(G~ 11D..8֛A8\Z֛A9^͠!1ކXWy_濥~֭}aED )xř# T̛A867C$Q>+͠!l0(ӽ"K#\ of06!Alc,G 1s7py3?r/QD"fXrVśh?;dr$MfP ؆AlDn:ޏ׵7rɛ!7 kB\vfb7p[z3D ěA8qLfo8Ǜe:525J%Rg/oH~{%фx(Lreo|7C_m% 7~Ėe>ě!(L}ß!G?f$.{3(: q7r z3(GxksNf7rfP\͠ ʱ7p'6ܙcso(aY6Dy Al.ey3G9o) ѹܛ!A8ý 'k Q,6 G"e?ObG߮7p ihY 3?d>q7{3!w)":`P (vDwz3]W} aE&?aG#F5 ?(uā ~QcQDqT z3Gv,D In~ t7rD1b~,ٛA8 c7p+eno2+Of(fCCq&Fq;Y މr=^͠OfPEÝA9JoH DArpƛ15Aؔ|N)LU 2 q޹>K(^͠of$cG<כA8(Dn\.[{3(ǽXߛ!(7qpc#- ~ϼ"Œ cwcr? croH1 1khp{o'x3G͠Qc!|ˉ q7ptVf0 !QDqT^ {#F@.!օ a eID.OfPQsWx3(Gqeo$_ (VfP{3G7p ^BfP(#i6Hہy3G~!ܛA9#< 1ٛA8Wfb)Ȝ@7U }ݗ DT›A8h7C_U'o7p 3$(HQ( 1ϛ! A|cg#*fԛA9s&E' eC%H.(C$Q91Bu+o EC :8NC  ±z>]ͣAf$ &F\y c%^XSf$ xܗ{3(;rӉ~  }ݗ(Ke 1Cor_(5oሑ/!xto/B|o&W})f f۩'to7C$Q(~  8fPқA9PHA3(G  RoXћA9n͠ ʱ7p+3)^ q7pL9ǛA8# V|QlC#R݁y3Dy_#wbf0fz3GoқA9͠ ĞޛA8(J>L8c 1 f>ѝA9{3(] Qf:ߛ2ɛ!(Oxb\wۍ%'{3(7p"(P|\cDC7p Topg$ y %Lޕ(vny3(Gx>ӛA8 {3DŽ(pQ_ # #<߽0o֛A9fP(m+x3Gy:cΠQ=fP quW}Y|,my7G }ݗ1lQ|f{3U(mӢox3˼"⌭B{(mJQ.!5D^"?nĔ).f:A9B̉Dģ  1euo7y3(;C$( (8>1Oؾ\6f0!.?fP)#MfXaAlxVƴ7rћA8U"7z3(ǐ7rD%# %ӛA9#J QÛ Ń y7pDiNJ")P~>QD47pD,Vf7{3v_Jw͠S?Obuaq D#LfwoțA8h-o(co͠A6D33G 4כA9LDΠA9\Le 1%Jw ʱ7r\͠A|I\nfPw? ^ox Q QYfg՟A96f\n8vgRқA9=p7p < a|}B=S划o=S|1w}/kz3D 7x3G_"K; Q Qb|Űˈ" c&#D?K|~mſÛA9 ~Djz3DŽ  2O&԰7rDcUz3yF(̸<؛A8aS<t7rDYb0͠?fPy dfPқ!x|bo|כA8b+)NJoÛA9] |ћ|$Kqo =Ig7C_UbK7rՙ|7C$Q3WbN5(/D,(o ǔқA8:Qlt?͠!h(kA|:fI_fz7r3D" " 3fy YM `͠W5fP(eQArA q7C$Q6\o>]o՛!8fPw(#J*H?7C_mşA8Cc en7C$q;6 x+=ΛA8G.fe%("S|7r|ېg&v\x> vԓO<³.8=8f[KO=kǞαgyҖzjtI[qnV[8V[8V[8V[sSҹj<[@Nn9 g"g\ZY-W䬖+rV9k9k9劜rEj"g\ZY+p3Y,lyF<# [##-–gda3Y,l>#-ɍi1M]dB1H` [iJNHx߷0n{W^V͟jFxF&jQz6{\L))`-((W<+M&D&R&"+cIs) %8F&Нe6532rr{8۞Y{dt*uVrb9oKo?'YtѝoeӼ*BTLveբ1> ztidyr/data/world_bank_pop.rda0000644000176200001440000035021513440010345016006 0ustar liggesusersBZh91AY&SY [B{* wa\ΫynWAB  RH $(" PWf*[Tj0lL=H֒^ƍ@(:}l5AB@})6uݻ8wjd봖'N=]5ٽצ(ֻ;km[vk﷽kRy{ӻzνǦN5_wtUliڷiu }ՁۻuOy ugesen7Z.wUNv;mrZhӶEQjծ믽׷or:hۛv|qu˾m鯯{_={]ף}ow]_=o^o]]k{vZ=^ժw6ժҭ.ynvvCTmӹWA5tٽy緝m*u:v;Bճlcmlw̝wvMVݫXqtۛ:ڮvUwwe ˱ݎr:W2ڝmv:dᚳ:n뛮'qWW[wntJ͛vَٵe=ݝ^<|^홳vg;Y]:Ro{zWucOkު;{umzoYjeHv񷞀hz鬀+wfn{(X˽Q w`@Anኩd``4щ4 M L&4ɣ 141S#&U? L&  xFL0#&4L h4Ѧ&Bx@&@Lb`L& F2MM2i112d!UT&&ɦFC@ 0&L#&S`4ɡhёM4 h4Lhi L!h@4h44L 4 Lh` Lh2dz4M4LM0)i`cFFD ɈwS++(_dct`\r2Q~W4F{dn6ËCjm,rׯbX+"ai!9>ˢ|h7 Gjx;W|iBM.=+-_ +]af0&1ʈ氍bb;xj$-W];)OިqTՆK8dLa T_ R+VF9MpN]JQ NCF ^R!؏SS1YcmN#.@˥^qkj:"]d5W6: `yO" @MtDd2ٝJJ/ϟ0ۉ B7 B9,rD̀\i%u5ޑ&iDǻݸ\hd0/& 9{}(a(L4xӲEk5δm _W"ֹ;={:89Cب'IO_"3F"H}'h(T& ݖ CxqNY N׀NM.o*dBv^ \*e:fbK<$-- T(\-ECRSM^qS+O{cS*AxhthMoñ3f|k{~ V.5Kk-,IƙT&w{4Mo2k53Vzնrw1mFhycltd|) Pgi꜖(DH,B23I-& JzWK!DDc) RB|I*,&s!9U5=2W,#w7*̒MFƔ8gyF^h;!8  *;.#b@?)Č٢ WBT9[>EZ=)QʆPsfH*rۆmMeF2A%* UXCz5 l!dAcFRvzBD2I#F ^>&|DU2/EO%pG׎S[s>KηMSf/J7|?XN @&DK 'A @O"]Ln˄glZ7#;6pqλNO%J*QgQǐ-0SA+QH|cܓMd&b`xw6@CBK"r~j~i~C' vR娵p~H+Y {_VNwrU7A[Sxs]Ƥ.4xLM[Hqa$T$_Ma =K>E.ihP,y+o ޙX96~"1Eq2=1Vc8Yz]n-VKF^dܫ%{< bq0cm)::%Ҩ&O{$(#]Z,:$dBopרRo4շ;D,w+ǜӣODbع9j=6H sԢ8tvb@B0o3> //H_̔^pX&NO}^4{*i(/O*qZSgdWsA_[Q0:P<PjkN*k &KbIs >i" ?iNȳh-b+<[ 1NVJS@[}hJ܁۳lW(<ȂN s> VP"|n\eVjKMI[itqy7 !wɮHQOz܍mQzU4?dkhG2U1:EJ}p% "&ZhceOZ8Dϵ(_$s}ZF";^ uV1UL~R 0eY6Xߗ:dѰ ?K9spf'цx}aRYz=ɓ2tVv47Hgu?[G=FWR#tGBX,H $ ft}8:;.^M/?sI͇3Mg%wO| ^BQɚ qq Pg'U;QU'ƩRy2lN̮6ePCq>CVVSFg"C&ڸf>D\P2oQa-˴|86` ZѮ9C᧶\QZbNeW-Mӑ?x1-CrA#X%l1X͟&Q-Zҽ%ڢ 9  &=;YE{ JAA0M)ɋw4LB iiF0P 4-Z1o IA/L`JmX;HT%zf;_/G?duo,JO_~I.~ܖb'ׯU<` ֺs?o;BSZ̏yK4&W D-R8,Ga{)`UOh{gTT=Rܟ㺷5*BL~Pd~&l^$Dvo4 nqaKq[ ~yָ_xxS,)x{k+0dICoDZ$Odp wپ>ȸ E1๯S/<ҙd!o2:8~R5"e#Q Q٣D6=И:B˭r&9O*q[n]%ee ˡu:M5,snQJb G`DR6XQ޻/l&UnsBWG'ѿAwDUGT_sW30eY>>5jrxMmʹ1RKe0-as0EPSCB??&>^ؼlGG8h4L]\ùъްrCYE[-6ew^jh{$Ts&]S=a i_S,=^ٜnǺt&|zFr>m9*w:][%LUzHA͐NAF+%G~2. $%PI]@rhuԒ6@?MQ{k\NӅ_d[sɊ418*JD0/hQ\!X3L0YiJzNKd:Q#(#Q  ym}hL ޙepޥeZ'ݥh0Zw6SGkEV:V+M\H?e_y}[wC7"*gp`NP} Y>Z?3E֖-ZybSs BRlvI.k V~.KyrfN#.]]e߽Y(Mp8^G ^Ny!wɽEKj&IrM\!n8N/#٤f}8]ͲT2)Ipo6۝l .@sӗON%dFmqQ`_W?LQۜc97j 0o# hYmץ4yY_j13/V-3+Q(ٹ9IArPіjr;wG6F{*-dm& sB$OtM&t$Vqqo'YUs5HjT`Kk;t3{ /u?W]ٜڭty5+5|3ڞ:cetUMi'Wo1)c}vل3p7C>5Uq eu?]Z"vDaL& DUdd%@&1#wEB!s'P,JxN\Jx#}HAd !O3}zǸ.Q+rys[ [tEH52le?-L)W^\pr"B'r7S7T'Oѳ3ћ&hX+LZ0Y.-tsEpH2;9Wtxt)S>[hC f{rX̹@ş+I1u=<@ǚj<8!O/ڮWڲWd/(6N+Y=V]. C2֭<vz&=&IAM TR7^ZL!zbT\%ʜd JwTn*tm*Nv ;*R&fpH[[M+ns00j\}nt9z3,۱ygqc)S[&[H0lNGw]9*{MD,SNHqN⬊*T`Z(J$$ ?G LCtۮwψ%C0kD [F6V-X= 2Taj?qKCWϮx`F+[?-M߂4 =)oc fQfqN1Ss;p[/jce%2H.1WCnjD~]U ؚ:VU k$7m~bc X?g*ä =,R]'lUSS?ܠL{KHRPӪՒ?%O~ ĸ-9)}:4˵U%#Ӗy+rxPHN!=>F8 3qeCxrݤ;]l%qlK#aL9} M&1ȔnN-VP#(ʥ i 3;*vUc4uWiO7Mޘu6B. HF3kj,D aRjL .\Ȱ+53XqH:QURD!=]j ?cȓg8uP4`5vXvԧ^'B2Y"PfuSǞ)j(}F-#++딪'-ţkjl?^M94RJ5xf˕9Iщthސ 1nLBj8ơJе#uv_NJkļ%G@0XPe+bwsx9İ^Xz[2\\1, WC>Hb)w$PFr\g-YA|3۽!)brbZa3(d-= xYdRZ[D~ nGc3IsEs2L&0t&q:5u53u v_,O,tvٛar *6"-dz )TZt| vfi RJca2IBSd1D;P E MN$ "Q"NL*Bj PRimQ&M0C87 lI"µve!"־$ m,n~$/:=td2XCO*+gDUSXìƚ̹. \ķ<2uB~X'uˊkX i*M`<*W"3i#B`F[l–M2-iۈvR$Dpڮe I4ݙY.JÂivDI|IJrvI\(țnm Q bR.RY ilC-D6ě؀y~p؋bX@Y d-;SC`;$ {0VZi.wpS*q"BHWZI$`bM  Hlm1` m C 9H@" FLJLBlSh 4@ qn"MC'H%L $94E!JAF)0Ri1ђdsq&ԚA MSMт`77&iQS$ʘ&Pؑ 0&0`6JL6m$1D@Rd4hC Ji $҆*4C˲98II)4Hĉ4lmhؤMmXJll!m6AғmBeIvJ&Mm, eCJmAm%6"P}қV+LWSu[bu Ln߀ 1", ¸B;T) 0 W&ʆġubJtDM$bHЊ4"LU2MMU4$Iҭ *hD"l!"LASHDc+b ؄ i*4$1M U H4 mC 0` )1I+i AF$`4 ShH&*hl(CHSBI9*MJpj Q4aS& mL!&C$Л T6" JBCD@L!"4"Mp)11bd0d`P(2ڛBm)HP07&ssiMmqbI `m M7&2 "M&Ɠj1C` m MmW[P !c!`6؛M؁6Ɔ C`MM`` $6Ciؐ &Cb`bI6IhH ؐ,mRvCm&50ht8, 80 $BT0- Va0BVAP`0>0* P A] AP0<1B!0 0^ a0 t&H0@] @P2 `^ &!PH(H$ a2V @ XAVd * `[ @L.a $`cA@  `[ 00 a0` L-] h+ .(T0dT!l  _  sxtPӿ~C?b.:,,,,,,,Э-el[-EhZ-i^\BM~ꑰ4@ i clY^Q$/znB#]ƞj.$)N4- r< mGߎ3i j{ -3Mu,o6uߓNKky_\"J^JD5adz9h氉ʅel~6r<>Ϸ{=B^bLG }7-5ܞM%/33 VyxE{ AW*ӿn˫?z;uؐ.Iz%<˧;_ix9,Z/?\KջayaU*TpQ{CR9{_K7c%'mفPdIN&U6 ɀ*-Gl,v+7t\S QUn(pSԘ!BvR4DϞP5fճBӍzU##Tƭ,ף݃B4YT SdOʄJR|5GP')E.3QMqǡ#l\ 2/{wD]s֖ؔ+DNDMٯ]"=ǏGe,%8WJgKu2:%ðյ -gXP>.9m`*5O' u =m .G{Du? 4_ 5vL4PCmgJ-'&8V{땒&=Ynx83=YA]Q+'K}WI2JrY#b!j7٨zqT%.ED.Q.kݢcwu2?R_pO*[is hB^֐3\ϿacE#O,lFKKb=jbڧȏ-{t0~iINyIWI kYCYnn^@{fhg$4K{#!%opqo$낿L=Fb18֎_9@7۵6<gȼ\>)~A:ɟJZ#=4$.'?#咑qqܖσ#G-f \0SQ%u},Ջ\)$SlOŷ*gT;:_?lr w7t==j7hz@e~LQK;-bHDX fδ'nOu* B np .$H0M߀O՘.Y|^ P Ǎ R`00=YxFƒFNgˢ󏘯Mlk ܱ&n+Lj[dr C]'S1ͭZ!q!~0ηB)ȴ;sR 8JBD̠D%ĸߠh5$D"oyf5KN~EPփ^]eF{+QXON bsW&1hj@ZDUTSNBh59%0CsEPD!N!'r?'{5nḐ|WFq& |I0jtQO`F՛ f!i?_3q2: V B }kyg.ׁwgq{_N'_*9ocb5e}75L^D!4jZ=[Đ ٞcKGç(Ũף'?OL?λJ' kG/%jtŸ{C@g_ADE5?dhz%\-?TT(uvf^PtYy[n Ǡ q)kkb+5)>?XM/HSAoOmN< 9M|GjzchlJc{| ^r~N@oY1!1ٻ O~O4T>:/.'OwaN*':,@~vgXf_BYZn1RA[ëlg[\K'Q-OsLn۪k;:$5Ġ,!$,|rt^dZ#Ez@Exd1Fjk U R$ږD]Y/JLqjL~j .r"{^`Kݳ7mR[d4A5Z־#fat%3ug:q>^}T?O+hg.Byx4L)cYϾtyvRCjQp%IH:$(-|SPQ}(ޫ<$duCB2b,u } .T Q I|}P}C=29n\priZN:=I#DӾou_{T4F[ }@4+͂\PP0CF8E\,bG&y>YvrG;ru5\#+?\1Yy컭q0Ku5odpCU3.kLvez\ٿ``hJAEkQ5ulY9t}u|!o ah+u^q!m}Mim_ѯjyLXvO"*fs<揔G33⇺tTEG&@Dkɞcڠ}kW\K:|>xj ~?QBؤUV"d#|{"gJ&oVY9#[xfwO|P5M#]@M@@{n\\$O7iݼ7lvėզu|y<+(ZS' TOOI EKU3*YJ׀70dn\I%[#{K#UXjf0CzCipˋk=/⒓*jqg]f[˅?zz8/׵?Γ"*!oWwMQ))ORQSLa]N4=/yp-_3Oyo|<jSFF4pT4 oQ`Խt݈W2M=I⒚I#lko$>Ww;|I7˘?nRv6a#`>q}RLᚅ~ncvr`+;HIb_0?E(㪲ذ7kP@A2"i,9S%KHՑ*kWD A^]_o6kݝ@"5iLGz cjLgczxhYLS/ :h~ /#q+UKRXݾ,\e,yEe+_Uu$VD{_t kE3&,@>/`msUv$SIyz*g6DY2 u6ktsgxPS{"q[d߼W_YpX4!IȖ~jWR}PwmZR1m-L\3smdKo94̞^;Nu1FHVA<̧i5D^ݒ20%kwwk>ow}Uc;ژka WKs1D|AeqOaQ2/2BxxcrAY0W}T9+\1YG!ιbUalBϝ5 P%x>@R"օT\=r~V-^尸G,`kvM!cN "F8GWtVJu N,.)`LUw=VYr.[I;nldY"C4Γޜ=W${;bKڶygh2z܉oȿXIB8zXb߱ÓÌ`+\xFJ֑sy@aR[qSZ3sDW Vbz>l/>DÛG@tU4WgR&潰A}?>5K&hS}_aT pzu .ޔG , 3|HRnS` qr!Ex?a'rY Jw{F#t[A~ ma0ZNZ=$iJk~iQL i>=jh>k+cyRbX6 _bү|h~YsdXд(Ц o *0@8U\obB2g}#7h"z)v7w4'NS[ZuSb}kӧEmks&Z"b.r4/Urkp7lU Tud > .^At~R3jB\D# .|eY1;s|NVt%ݲ,RLc .!|-жޕ[LQTVv|ԁ*MIΛ;/BD'zõڊ [C v%RUd-hc-nw`9S3 E!-!>d7Kb7v?}eEk9B)RaQa`OS@Oبwx~ GP_Bv*Fw=ғʻ!t{|}?D}ZZ:"5%jGL@/iZcV${:Jx[7ӧcFekk )EY&,)rR8NKE3ZC]t`346mhF{YiloŔ%TumVIf]},_ y28U6e/W47=nxπb2B~pHSH( INv\`LjN6~NW vX;wkY-5Mh1\? ҿ=rGB9ly,Sƻy]8\R6G 3~#lPd0}Lb"Hc ؄)-9dߩqQSw&= G#T-Oό_ ޥ{p6Cܰpaэaݠ PDCtt)F(i+hvNm$Z+c؊m-<wofrrPԶP徖 yI0(ގd$KƭOc;ztx3ٺ\gޜ}؛N2vu@!_{ӶͣWs]Jv W8Ub;s15is0 u&yMQN*c!նlyܞOY"l6w}Mqb)Sޟ Zu![,[~<2hKg_H/*$t}D s7L8BϮŖmVm0ƧSz\rl=|%39Pl-vm+b1N_\ ǣi _:{+e1e-:qt4nשvxR!lFpr5 ?-JlٶJ^c쟌1i ~^:ap|D% }Fʁ􆮲}ݐ܂%e1hju>_ swJ\9d;GTFPO8w yH*?yV ,7uUC$E# =d2} /IAZ-.K x+TuP7 gt{C.&s3c\pG?dD"#\T~*g0^b♉?J JI)HK~s|ۮ( àP;0D$Iq(::: 9&}| ׽*cCLIJUEj~o&tihjZ#TZW1 yӗ[[~TIr`^7ɥwp&x>=o4>^ eƮkk) aviW'J,X':J1Ul;J˛`e2!j}.![B9賊ߣE xKJ,d_RcKdïuYOI*Uj߼t QpMQ:@RZ\_kM3`# 5F1r@<^c (mGk$6Q\'5á؈NF HEha&7"ަWtLl^*,tNIyʡɊH0:9]sF*A|<eU_ZB. $)vncwG]Rҭν"1WHbf$Z»7* к"Kţ؋ϼ*ry Xryg5+Dg5?ŅKGϞÖJ;jNre0LU1r:]??sMz(#RdS/}X _j܃Ʋr|݂ͶMb{MλB|FT ;Ne ڳBj2л'Y`ЫQaޒůlےSC>-D ]>3pRLҀ%˫iq5zg(?6mC"EXnsԀn5wڢ8)ES++y3k.7#x (ybe'Aa1٦\9 :G, A|uY- Kv7g#U> <`Xsv,Zp7"[(. 4wwXK;}{?X7W >}۵L/C=*slOLpE{3ca;2xPk?!0m,O*R]H|IS#Z614mu;X6U7K/:%9^ gm8ֶo$X)p뤋"s)jox4|IxaBk. ! Ew :HcKiݜw1zԘ~97)cHy_"+}Yq(|ɒkF\7͕]'% 6,ɖ<fKF $lj $a Q9ѿ\:|牷 tUYWa}>濔aQ2Q |Gؑ:]~wk1 @UP/f1 %t䈔BjxJ„")@!@}_ %UP ۵[ _wo.8ԓS%tJ>l.xjbh-Y T7&E<@=)!f&?Y1H>+=uZ+/V HK!&NUejIY|1N!p~E_4e H͋gD>1/dPtږp/|d!zItg NACĔ` +G H(܁:.|Gq˒ h[R X;Z:L nw+.n$!Ysp.!;eJIʎ@6x$wTIlD 1"-@SĔSn|6hDc&R. q毩'-&i.u2ECcm㥞gY;4(!lbfI#Y+I2b1A\~A@#p9Gk(67W1mG{Xf$ by*YsbM7Hlk/OVȑPir)$&&FHuOAv?CQh5J I0zݪܻ5x֢pn>Vɱ-mk9=?_Ev9>X5VTP.FG#iש/Pj(ÛǏ]!-z :Lc\/^ǯSw_g|0$Y*`Ed\?_'8@e\//\m?a!rPZg4[e> hRGt;3 {*ċ69gM~Ol{je{|OeDѤr&U6!ϞSqކ?Z4.[hu)-.kmgi&y`?P[x-(BLw:ek ơJot} bW ^j\8W72HG²N_OrF 8{/+d!|5opE$XfErqSg`!uٝ#EFG-\ǰ-Kt^?=#) vY"K4iQ+񁫅rf֔BDޛ`O5Zy )_p:^*^79 |%LCJSĖoO0qt`8"@⮜3^k/ qG&[ 4{FY&ֶ,R5 lRfioaxT)83=T„Ѩ>y:Ut 5UަSZ"U`U:\RWwW,mI-Td/@PAz#[i?+-eDC or(HECp^7@cuZKڴ,88o;,'^ӐZ{$^ ǒS2%|ݤ$j$O_5 }a{+?b~[nST (*~sג.!9HK[j$/'/*WcrD!r<>naMq1r|VIW~vK@xc3ÍC!Ӆ}|uV_L.`+pCD3zd ?94ѳrYFu$[h}#NQ{^G cBVo%5#t6Ҿ[iB;;#s: /SOيxVQ&!k(]" M|'RUAkm/^MΌ|VA7rcP_$x dA\yq3|Ϧ+mEkh`<6 b\!%=k3*hb<%C׽"<^HbZ -@ cΪUʯ6T}s-cI Vl+k*ñJ*|X^WP|Au.{?p}-QemZׁ]Г'4-0 NqM:[:axKZ5}uw K~o!p_ݫlέ(*9^d\O],ҩ3NTA_|dQ5JGq8pX^( Nҕ30\>ޝdZ 6e#B?b:#{`R.N:&BtΥoWnSs)4ɪJNѦ"E^;!&PG8 *gF_"4.A=W"aĭeAZ*e5~ҞX# %4_E!Ŋb>ufP.G'0JqmS)c!< Vpu{bEK+XqKw1G,Ol@ BpFdy'V=b:Ih.)kP^*Ջ>;&HŒ~Zz0E-c5ͳ=Yyk]+(ģjUJ"TdA@Uوw 3~k3$F!8DŽ>M7a9"r]ޞ<_@7儵X)1 6gUSJdhTG؆|L @%WGT`; #hO7b U&v@u2@(m~N ?\6#>ֿQ %jl3P˝&hE~KQTs̱L~/=K.F߭O 5܋UOH% )~Tᄸ)+ݞvD%s p65a_vpPDDA;4;vD`Dž1ʢ w$':Sn.*D 'j>BUk >xXֱ-:S7FR{+\]my!Sq۽D3:0ׯ]|ewbԇZ29JDKܓ"RnE/pk}/T!٘b[:eDx9~s1 FTLхSH{q+~`Nݘر(|.If _| B%T>:-_ڐjƐR5`SQwu!4I>mQO].'SGIo򶀙G1wQ{ ~a]NV / GKʤ@LlDibR >d_:۱9Ůonuv8i]bFƿg[R~m^Bٍ0$4򏻺&*1~|W$\UN@4.,!|UTVи#6#*~=CZTHk?m23& GT5KeC1Zep I.|c7-GssUtТ%HbPhJw3 OwdH;!lb];ˠϑkq&lv6{eȉ$= ǽ %LZ׃sx7ΖZmSߍj/2S_qS\jjKec@7}{). b FaU<[5}]=1[8W1tݠBj}i/IA24 j[8&<֓3/e͝R_O[x2Ⱥ{ i̠FI0a&c[8 Hw'N_ՔSq@QWVWقfn]H= jhR 2bDH}sf*dn^)~cEYraP,p6QXyD!w T{SdR|{6vN+yWVJR.H}s@_ 19ֹ#)Hb\? GX-Ȱt7Є'^=M]#pPy[^{QZY!LU{(IQ;B@Jd(m9s_d \CCi/8ȸV:xřFxZSq9EӜoFW-Q®> rkA;`[DHV#S_յUFGd.Qo1S}J/QjgDpc ZBLx㯛㰺١VԵ"{_Ɍvgs n(C {q?ƍ[Yo- Ho*wLèA)b2Zc)ѨYx(-;pԻ:_w8#方SUT.D":Jv뭫Gx؊׎HNjbgz%wV<+$&]zn7b z( @rl$?8tFu'сB4ܳGB~S\P< pPé `+&g[L+9E gr$~N7ES8(aB)>Іm}0L7dDr,a^gb1DYWKߋWEµע.F& nd5EղS\hg2V|K~m6HRM'Jd>6ۍ,4b7 8\s5}XF|Jn!FvuITv hg|Z/ҥYzTXuʨ^d :#~'}nTel0K8V i/43<]EC~qݖ]O7TM_9[oe-]ln_eZQI˹` (Ï ?) %r١f}bÇQC p}!i@>?eEt{L'www?J=W&kT$IJUR[j@$,)/a tq a\!P9מOxeb.]wl}wi$KTB'6xy۝Ii9qldc٬~׊ a"ov)uBtDuvRhj׉DB5Ag1wIVJ(Mv^ZrRS`,fsi=*aAn/HJ H7\b3rJ3䳬J ҅ N|01=yQ΢sw4 1mnErڣ^o ^S#M3X[Lv2,"9b֑bY,#A_7:Rf9[hlTQK'BJ2E;ԇjqkKyāp_{J@'e[#lh^QrG#>!V0YAWgVl: Mb% yUPT:X"lj~4 h}󶾊iԸ׭Y21Y}Μ9@뗧3$V/v-AR@O^kR}T<pJ$P;Ohe\ԚLM1!0z~8A!~^0;Mˇ[~S؉ +X-X=6 qܡ߽bX%~;9 $=bCTrQЌG"/ 4v4Xqz={c"u+P!ݠHZ2rh4: ~ UK)arN p[lٺĉ&:=xc%TZ6Fm-("3,~5XhNrxaUy ?9d4@tRe/nt :u=t5eR xfk-a+߬FI>=hQ@v! XF`ٜͭ#M bYk)[쬗uq\vcENѩ+尿N@7ѓuUSs3iqRv[.PH|`vޣT9,$R\Z0 ]? u]gDZ}˾f6A>DY?q6OS}w14k%Ѷx "!^W\ ~gRk?@Kes+z yL[4yN/d-{*/x 2,a Gv s:=vKfw%Bt#N}AIrNLA1;犎n)E]@ܜ|DP-*qaV\Zb*PnS-u /4# SPBI`fj`ץ&$a6 %\nÔSGC#E-_i)3q8a-W C,IQa?ghC?zP0zVV-DIbs|S%=DzBSD]AVF->kKTTHUHNrs[%\_T(Y})GB݋g3E[XpZ6.g-=D1ҏB$Al@^Z/cJGsX6F Ș+ i1 ,}u{U4KPzڞI67(p8>qR3;=XS'o}W`KCݰltLŭRiL -MlX0XO9>>͞hj|g}1= cDoyCG%=<ɯ."q` TNdZpCc^;܆ ě~'7l6c41 "(oo&^:@zД1]G5bPg%pD`T&n殀͞ "'A6"}OmDr@ٷV 6f^|fu E Ze)}nֺ'5#F^:5RVN 8ޣ7HtUrvDٟQvߊ~aI{l$U7@AzjT* &D_ws' :98z:[y]+):+Vyfho9%ݲL#5 ZG gd;: }( 9:Vnˆw={x}>V! 9T4V@XrC ؜&ji۝c+B1(,"E᪭;ew_v^fWͪB%Zl !<606[7ȕz ^ E詔'[ o Y@Br^nNq״] Aq=\)~ @lZ^p.sYj{0Xʄ$ ;Zp]<-lHÎ/A[|czЅ4JzWdlz)Ρtts6ܨ(C1@s"O_|I<`y@ͥHt'w,m$uZJ{zw F*=TR/f71r( MpZuҲ)|xS]bcmmc.0\v~ {ؘ,WwK <#gSm XͰBTn(?9|uQ8Xi/.9G#I_^v P@|yNisEBPˏ:*gq\NoN 3 NP)A+"C7gTL1PRd7i4*{_X -"6}~,b:xA|Ě%Nڮ1Ճx ymqY#x5`񷛢Tc| "V mvBSX0 Zf*K̓ETܑێd U ́bk[ȋ)*ݎ7X.PU@/= XU׬Ӛ:ŏ_wEo!~b߆̎$GU9F7ΊmD3>G N! (CBe7yoQ?HςX<6V10\*!MKg 耔@ӃKiy2Aׇj3ʌ^U]EWP/c??%:zm&1f8fIE(YmY kl(ƈnUd#rM(9h߿0䚑Ip}@>ޡn#J{FvŽfyɂW_(ҡ}@f2)UTۏd.e@;:&{ѵȼZGBRAZaA\0$Zɝ֯B@/xgw yQZ6F ̕bZ]* ,ahPfP06*>sH3+MqE N깱$HDZA6RbKZDH&6&0Li6 &I,BP"&8&m b0l4%iaI `C@,!6؁  h lHM0F CHm&lc A@ @ؐƄIq"mIMX/Ј`.!1I66\ 6&Ć0_KbwllIm6 66MM6#bJh@ /e &Xh 6$-%۱!bB[+M l@Гh?{B``ěI a 8Fa f*h&Ci!`& `B{7yn[PاmiĺlEŀao ]X廬οr6]w$ix^ac|NY$O A}HK-yNÊFYozb;OM;aIj!ȄɈe:F3SrT*܄rk`b}Am_X7ݯ]>}q0"o`{Tav¦'Y5RAq`ׇqF&9U%6挻)엗JSBHV#,'ȇ3@h(8]l_{?%{au0pИuc&Rx 4{%om/Frpdk1v-z"de 眖[_ZEo/y>|=0AѰ&4Hm hā6G!CbCm"M!`ě`hl8$`h m6 bHH\ICbM$!u QMbB6 6&4H 6L`0? Hh@i M֒P1 m!ybMBShH?lKh6i$4/=؆M#٠ @I*i ءl]+BPV#4.GUoEnjL_v36KAZ*B' /`ys:6MQ$ӯy8t3&F|$f A'=en* @/64BGK }翈ʐsɛNZrbb'>N &T&9 D˜gPT ~fu~]ѝ"D:V侄p/vo0hfD$#<^Q]i͋z)lAi;c&XWF(7-W;jT+ũ܊?qnH[a~vK{-,\!jRKT6zӑV$ܨKr4nsUZj9`m2}\D({7C/zzf]ń%alՠjIbCK(7D_x(= 1E0zRJfM{*3hyY7 +\.^89@G>Sq]y$qI M">؛}{*.\pW3ZF ]+z1IRH"땵TBXץ0 /{P*d.@cYS.+bgqkc90C:C\9څк+Ne2XnOxn^Vпpݸ sv9*'oyԙq9bl'# lEwTê;+J uſ5Ń j_OޛkZ}*7r0v59䦽)D-'Bՙ=FUtn8P6 ĮԎY֟o0{jfڛ\2[D2Aw"xsDXG` feW<8!V] ,;in`bgL|>wkOkfwpE&mYxƩ_m"È'9UIl_|zl$>3;o7!ugEciDq]}rQ^#|V{s^{Hgbmsm]}6 7o((],, a0{;gxu˄aoܭ'͐cPYVB06KD/ `vW -])x[gKG? UhS|[L~c; ԥob]0"r18>u\|˓7-ײf=(sAP Tʥx=x*2O_IKڙ,T($J9?å= oiҎrdA9¥vΓc!#ӋUaԞuP Ԯ+r6 $F![t:E÷_C"y ˛ |}R'بC0|aB]P~fdN3Ya7lC|N'iBƺb%|? Ȯa)95û9L|:o/>Ta+"VLUlSt[g Tڊwܶ;2d|lstqUmPbA!P?}&m-nxq䜩o'Qp Y۸"hr3?>ᇧ~laT~>I75Rn5wT}:En;ZhRlۖ &ΨǰuX3ν?~A[ճfq1B/1E,ͫZqVo͵k/#/m2܎ظƴF(rRMwvRZG\rH W GWJdM6kbl.#%hGCvsXk?#c>fv<CG-ZoJ?:RCr)5Lݖd0f5Vޝh_;ᣫ_Ĺ+%c??R"D~2Qu/- P g ~-aۯٰO|Fc]N/-"n6<МH|׭E?)<ǃ qB_nYcJl)Eղrґz`;d1Z %+lŋ9qŐ7+o޸f![ rׂkʛDՈS;G0|«´mT:_Req?R\]aKY”:(E.n^iӯ 0#`9LE;ݸ 7}q|E܍RRL OuѭJi>7@D/mmN6hOѮ75ϣ _4[h;pƟFO!]iIi[&İT[5qa;!qNDsT8F*g Ƿ]#n~#dt :7e_FZ+<O'.u*㚩ntMpuڣ3AZ}MB>}xS2QRm?insF`Ӂ8HPmRhxPvƻYݺ;WlB쯢BL|9S0^9g?`aȒUD`R HPV`*vs`ks|vvc-{$ryfRvdSA``d)xm; WTzz6/[|Zcsg}bgdW,E9viY٭ ӀףUeOMߺ}0R}֑Ⱥ\*E0>{HQ f 2hÛlˏ+n{]#A9uKoy .o)+W(g,Z]cr$$~0S?j~ʿw ݆Y:)5ҳpj ]獮cۨ/t1bM9Ѱo%|U^t7y`R,v_CQԈHU\)Tn_:qE:3V߳XU>fk:.X6<ꏱ/29TMykA& 5o>EY*$kVg*(}u(@nlaxDj._ nA"lrx "$|]kRB&`(fol8 &9qUP sҺ= Ci~2?mHBh"ց֏!Ѷг>F:W Ho wmM+ ]\Z BW4)Ԛc߅U43湜G#kvr͇SP~ö[Mp'iJnV# 1hW,q:L+zke#} LKc={薢&86v )}߃gh[\]|o~zYF kUue84(НwP}%^ :8mmr|Md†4涕R;R)ڬ?s ):y:?GYUW*ԑM4['C׺B?JvRޜk?yp)җxjhV+NqeST!Qt?7lP&|Vfp;5J2%E΢HcY2Mn-?,|CIj(yp2I8= (ԗt62gc{Tj4),P sDQJ~sPKFOIc@xJOBDNR2h!3̪)щӿ/絻m*ۑy{S%&yQEwYBi[wϓvA|c~* >y>G_S+~ʮlzg#9~OʜHY]cq0}vGmjLx7<6>u8 =g;-tfnlu;:p^\JΚR{sPf+3q蒍9dVX^UF3;2w*o94ZQ˗U~,RvƼ_<dNygݒ||n٤nwF6GNJA亣&nd(4u}b\6lr"|_+&Ka&- v(}Lڜ;s*]9U13$?o]OL?aršdΥXBOXkD'=t,v{7pڳ/(T /Qvk@RHGd:U{ %?SА3QBצֲK7P 5qn6x=PFF`7#Xǃ+fOv=C IljR|v~5N !7w8%!$;|ދLD"fw\u`?6g]kXtuKUV$Y'oyH#"X^m;4|^ =Q_)zF|!NLQmƃyZNy}}BdL"}jY&[*ڳ&&g7צ/Hni]|qz:^Y7a=7 (޶l>m=(ĒN&:7ƕ; ㈗V6UkC&ƫ CLJ8VMgjqcoG6Pvh~xzy>w>[^ΟQ ;9F77؊}6s~7s(8FuyJh5zt[fX* P:=[zBѮ8a뒉=44Oz&/xU=(__K# FO7EG̞ZJX[/C:ԏpt_#yX_GddZ>›Y\%ӦojS9(N-|GihyCŗ׹tMWO߅zYYU\խBPJjs^Oes\8 5|,(u2ԧɪaVzpu6Obzci7[6JouxvDlh2:r7Ȓ|&5!-v q7I[Ӄl;׏,-@i|4!Ϸ ֨N)9[f|P}fAX~ο^^xo,4vGw7os@!mz89bc<.Pjt(*2qgkX&R$RbxYģPq]1s)(9x{go:5[Pp^vsmr&kSs 'r?_}HcJ҉w~Nb[1oYi%ka^ьP+䫻9uyk,>tqS+. zAo-̵1FO$}HЁpchETee8ׄLE }<>=^aZM2+oN?kszf-c_^yJ۷"?~+TcʆXg3Z^J/RB5?<4fdFwmaH}ʤ=wج!^G $\2#kiۜ5K+Z؜1ni$4q3PuI>0j۝2|ki'tlqZTODiٯȌ=I7ۑCoiNPQ*w qb$n^~Y8O"RK=O*[cTGw7Wg31;3i>6:5`Mya$TN" {z&#qJmeϸac'{]ٞlvϋeNpqɟr[yS3דR\|g>o&Y[o:6FmjR/*l߳ω@z^!JPEâGXOl=hΒO:ܧ&渒ɛ.R PZ1$5 gyӗ%"h|;ޠOblys r%Q3:d!(gn}rNHSKvԷ6"ȤIҜq'D~a/As0=;OQpT^}F,v(7hf 8v:ds&D`ϞJu(}us /S_ٳ?UQ`a0Z)|VZQNFUe N1:ˍ~;'EAI?¤,$S5)l-|q(VUʔ IY`Z7w?NL|㧖#|Uì{O!]AF3T#aFCj*!gB7l9Q;k3]FӊW5qn8KM 3#er [B2 AK@4MhCb03OXlxNFv,Ǯ|/FxSWSix*ST'%̈́J|@[u֗jIH췄&y:e0grrw铽!~N~q7=uR>/pˠNƭ^dzCqd?L"^LezN*ZL%(nƎ{GO/c1N~Qg~}H'3 ƈΎJ12ȅx?5C.\v 1E{ aSrAjE͗"yXrٷuj|o_|TLIPp!`#jSnÈM@P"srVx4m#?>s#/cmQI^lKV+!9Xif91{R2М^.CN:G&7wH$B5]_9xVLo*##SLI!2Zc$Mq;lDiRVZۍ;x&ohcLDČ5' .wTWDO`صqȎY^5f׷ْjMoK]m |/aWe(lrbmTbRxTudjBm[Ѝ`fTar^B^/OZ_a3r<(O|{$S9hz Qs%l+yS3Z/ Tqg~Wob"Qm'b\*>Y[mws5&> Q)}aHs$d96  ^>y~9ޙ+- ru 'PfJ3RMA)Cޥ9iMC_&( UZ?p4x+`o!twY[*_?7V6oͭJ1ReAAKq? VLWBꑘ\m^ZR`1>WJ)OڋC^{j> ^ 0 &(~C:we@]Jlw *9e^5r;Ds-ձUupz*?)0B 2om\lDvBO29$n'͢8>k|qzd8Y0vP(cvm ]?JhD!<_duzE g8m1٪+&5A!.Bk/-4fT nA\i+K?Fm{ oub4w  ^:S]Vm՗J;?"R6{V-I|_{@`rBCKftd$D2hKruJב}&6s̗'Q,I Ykp3SasLΓi]7+=3#?U<g&Lfagfm0 0{&A@3X]כm9~vt?" 1~bDjiOSQ2ӹ>Qo!DV>f^$\roJɁT@sl djLۤ=&nc'!\j:gZd;z_,lȭ uig }ٙ8fd9.WXy COglo[z.LunUEsxzcC`FHeH  V@@zgq>/N7ݥp="KV+q50ZS"Yk9 A1@ahm`=ߞ$]QAѢ,z ix$J \w|.3Wjz2ڪG,s1H)b-v%OP0XR~~|e~p@p.YjR|M#5oAdҍyQQNPR1UMfHhC sm/፻:Ikyj#ig$ O,:+p?$ ReOLf(c42ӻ0T[*DCbUeg003L X6u JLXl{g۴K6׃._篛9:U w[I`1ߜ _H_(5@&W{,ICK}AG2-Qm-U4L weήC۟}Uيj{[E|ȼZx]\])Eš>&Q2Z:"/`0nW:pT (qxOUŃ m@b;~rN׭.K DyO&ۣ#Wkr) >V6tkôjXAwIӍ۞K;tN ~xy//Sۄ ^ `/*Z'XX#1 ?yNwz*m~9ŨàSUQJqzo-wQsldnٿ ?Oᱝlw+L %QtXEQ0 b\$HA7%gAQw7J.tHmXL5 ~ct3LZP4,zr 0gP?Qp4]al?M,@@ >TFÈ kCx81A-{$P`o?[6W;~?1<Z='v_Rĥ?'T 鄹^  Nڞ۹=oO-M] u1T|v"w opvbo^z<rSQB?GKħz{l7j\+nKm㰘xx{ &40.= ~y `@ـ$t%(! BY+` | i9n?`;3ƊTWC2eU@㎎_~o2N>GwCFq[/'Bc^q3U(J(7!m5*;,-_ Xu!^|p;}=i}aEsg`-~ȁVN+Td)]bN/U*@ Kn|'ߒ Cr%5 3QQl >I0aa"IWFfkfu_{yS\twxF93/ )_M+at @2T P &}tj: $ S]`01{]sm/L 2}J:6S9s-w5 f[a"$lI rթ>U s✅bg^&;TGe噺+ Z`Tq=Y`=ׄ yT 0Thj1EX㮉nF(@41dgyl>ԝCe޽F1Ub/m/#?>uy &Lq :w',iB-ca ♇0Kؚp>FVAȸ8J'Ni/,Jky90Ji.|JK]7F4ɨu ̐vd|eK)"_c3#N-4:q" 񟶥=ih"e' σ`d0JfYyw [2ĖbGpaUʮ#L~iCU1pkh,+gx NALm(@5>c~[`.97 Pqr(cbBhtw0qO_$a}Aߴ%-u sk{_M Ɋ@Uɜw4L Z}Ӿ%vh> brSUÌUr*xo4upHmLI# %:ٞHFf ke*m=$#L9_e~4ʪ נѪJK;8~3v 0qS^W>7IUAR" &{+*.gdXU;&a=w˖[`6Y):֫\e?J*%?fў1J퍊4`Ycq$ )߆W8XP N|XO'eaQ2}NHUb_suN@:mZ&Qj<2BJҬk51?Hti !s(dã7fH )gpcQ$δ"9?/u-j+GCƋzz | ] 6㑌'> Da;{)$&+_p7s(=_{UTޫZIˮрo@@3c@ S$fuo{9dy $PD8)q]Q: } CM`6uO \_|A+WݗvjǞ ,m(%hDz+`9M?v6~<\T&|LK hD c9@JK%*4C;Wl}xF'mI޶ :xh6`iz`j[\e63e.<׆̹LhfLOHiQ!Rtzzb]`>bu5.޸[D~VW^in#u:Ga"MXY]纠/`Y@@܃\ï fC䅁ׅ fϼ:pڼN02OȆNrne(( tӀ!r>!`"ae}9QWܯ#հXhvh^Y,ˁd`t|zOK^y聂 HTIyY|a|oL< ~hPH0x{} EN5# &|\?8N:pI,Т@jA9)͇eA,0+ޡ$z;b1, !p9 /˼];Hpќ́ĕiUx,]8 IWu2657*K9@ Uqg1\ 6XB)tl__?JYngA5_ʹu-P%D |`5ah9l+  L8ȭN[DȖc zzpC >ei <`UCuGS^oyIJ7Pw.Zfc?z#b:;t_c |k#x H c=<ۇYL- KnA_X᳻Bi;f asl>s4rZs6(Otq@Tcʮ@@違x8VpvE.H dN`_xD#Gމ8.{\1s%hhRg`?| guo<vA@vACH}7[`W mwb.@c8B!1dA̐Iu /g:"|Y`"F@ x@tN#sȯ?S鄸+&D+J@M#旐AQ[A >@Dc<CF q30.Cߣy89 FNRc#[vL 1PEx0ok|PN9Ę,reA?D^rzQ1ix7HrW/qw<֘} N&uդn8&+a_?fïfoz,w)K5?g?ÍLYb{)rBk*^^BJ AH3xfFoK#  `亭/օLteJKLv ͉Y A@ vim9kW,SxdPVեqL p}(E1MY#,*)g'י]߄ѵӎYe>RCeƘ7nߍ`U\]-]iDs{ rp{]t͚Hv^喨3O9H ~A;3i?w8R%tj=:ȸX}|U~PFIw63T]^(~"Rkr_ CV/nTAۣY^?T ExZ8 LxGWQRKik^lcenWɉALDy"lCv]k -gagLj|ܛtOm_A7}@C(:` HA^WCGup/.7ˡjz }reY0;Y@o {kU CWk0JOZf9?^` ^ZO DVb::‚@*mk >NAPa-aX!@ΆX`ǡ0+~ v L7ϰ nbB@%0\Jԁ!DY$ q)[⺢H]Wݎ>Y ` ^:'s[L!E-J $#3:K[oUOR_ ПwJ?11Cь`Nt3 Ė #gLy\%f;xx5\ LR1v$Ĕ؍UӔ%@ akA<ɞկ{Lo9<x+nџ}5NR,.D606c<09N(a^!@9 >-o oAX =:o6n vPc(x$@@q$QhWQ[o裱 :!"sd.b!gKmU-?2XG (g[Mp_X d8E%A c6Uj0rD aN70hєN6ŧJcnQBAňգ#4?;C`[`WB4׶Nk.m__yΉ/[yl``0@sp8WШ]'^\7bs;s+~)zU7[*u1d_H2CܢI 4I3<kɰMD-ЃDΞ+mk:~T2%kL$քl&@}ft'<Ja5.x Rwb VIN֫ hg_D @\2 B;hPy^{P rK;i"0;]^H qU?<)_.X2 IIW,[IOzj%˥n瘒z`Ta5c+v.5 6ؿ{_":q~`@R^*bă{mWH/#`M^*3*Ә [Vޝ"Dڗ/2@P0-,4 P-_vormP"+Igp19h}XiOЛʟ)CX)mٹ9?X90DH`̔~;ĂZ/@EkRr,aÈm1Ɇ%h=s\`vAx3a0@݃󸀺>-cNˡU =b@`\=VP44 |^OR[h{؜b9"G*b ldདV;`@@.}_mLʌePNG7?"&^ @kxEA1^ Tuf#&%E$f /z",x12GԸh嶥.y k@]V ry9-ȺxBRm)(n%_QqaXOEjlgQ ׿z<x SE@kRSWp 9#dHlHBƾdj-GڍkEES3vP2˔$pY<K1g{aXokH 9/kYX\/g/Nw;ub5neF`c{1kvP$K>qv Ͳ\hO}[j"T[zXFGj].~ )MmJ\(D>mTw:5Vvw̔K'xCNBdzV<ínFdP@KkWY.;sσƮU֍DǂD :_ 0v-+Bzz' OnS]ҜHLU8F氦ex{p^yچ18a 9_A#]^'B9Ok,CA{BѢ\UW]fC< HsćۖxFaVYd0%>oZ&Gu],*Q֮3oҾ F`_Z)p'$Dlǭ9EYAU-ȮΝ)oEp#fwa俊Kp|+C"9m=6E{ o 0"X)I?}Vq&B3oΓdeTm: rcCP0 oBpR8nEJds(f3JD7,sb]C=fi&t&Nb"n((:q]P.4[Okx:y{z71?sf8e!1Յ8;6j;tƻ;2r3gTv_7tTS oRe߷V] ]tp/6JIVkLfBOJQy~k(Hl9aɅ9)]pIM Y,$'E Q #F }38h` = Dhҹ1؎D,+=i68gWcw^؅RR v . Jk.P?T"&"bw\kEMfٴ&Sܺ$I7w~╅z!,0o"HSmr5U.ȿ!V}j2^L?B5 0袊 9@CyGImMM>RփNK=?˨Ӥ|Hb/z֯ Dܗj~#n&.IY=8.VD!/ЂrW kHIݩˊJ2gsE҂?}Яڅ ZHXz Ee ߦuT&Fn ~Y{ecV?AS[EYEU{D6Bw b}Wm}*Q3T9qxbLݜ / lӎPncڨC!C@p|ǖCo}3YiH\|V$9d#ܤ ^Up kiʦD 2wZռ&{O:|*sAnSE$x9<)qFX5L:ݪb?{ݕG_Ѷ8Wsx ě+sSQ[Uu (UwH"Z1'Z]\An;DM&dV s̟rs(W1M ]3[W \V *+S뫡OUvT4˺¯ͻzy)s\W5[TZ"Ai\G_'ǶOx4B3Ch ߳"@{MYUoHXVM!5L}TU<$=p?$W~v=F8!\n*B.qҍ/e᭙rE.>ZZI":-# yFXh2m" !X9&;اFQy0z|P)<pn׎ Wk%ˍ@9`Zg^'TC+;}d={o%qm_'/f PW$8ՆT Gb0T3&-W",J͘+'vM>M 4P rbTi4] 9[r,5{ Nem= <eA͹ 㘛8*E:q rGH>7  SZp/ <`,v={cqP ֦,~ĥL$(Mi>!^rLbƳ?G+Na(eZ( I>:މ &P+}FՋJcf0 #˃RI-NtQTQ(vd]Xd r04)|a;]M%'#܅ 7rf'R)mGXM/S}?XF$F)xcM[7},$k>%N)itོ0X_J:!@X㘥$8#S!"E WWSα&Y#@Jyyݻl]t+b-<<Һ#A`$E LPͫ>Y[k@#RdnͰfi3W@`hQ@:ŒWbU\ 77ocƦVͷpBI b^۪56^MMVGk|+T'Ng,D?.z2t5mQywGZdw~3\K@aa9 nVvik HɖGSxY q^˗14S^'`Xўv泛Ux`lw 0wWWhE 5Xo>!}Ojz6Ix޶shIN~^HGSMPG$p>Gj䞚=2bx ]{+,IՃBx"k T`G--$'mN&rzƧOiyGC0@%SzCX}\IG~[AP3 ?QQ (0,c-Le.R|_KUNrEŃ F}mgcKM 6U#mq(9_n'j)w2.i͎xQ;:mmsT[7ēC _mߓCW9nwDe3&Hĭ'y '2JF5hRbj e/Ws8Zzg S-7)€g:TA^vwյl6n'J~r1YQze`G*`l<~VV p(v|;I:ʮ=7V8onrm֓]I$ OJxrV)zUPpFXd+Q;&0ƉCJ]禎nsl B\ry"6܁wĔ ȢN>I8N# ܈@g,{S)kNB-E\T{XmnŗSx;\'AV;nK])|!LYNtLIWP⢞" GkIjxxćP b<&ϝbgT>"ˤn;( R P.){3 >3Tcw.ūG1mKvWh~XE@xO[h5@ }Iʬ}!_Ļq !晿?gLV>I˨ȕ=CIv+eq] lN䄰8MM9z94=&H:POtî1EaQ~ WnvSqֳL?3!F'a;`DA~p+FéR3iͤig(fрL>uΞ̍WRBJh o87}I#h3Yn>$rk= B“*ǿє,^u(( !׼]KqtD!yk"OŞwYHW]scO4C7aDlmTy~yYXn5/!$\E)P; tV>z0ZTP s4 8'u(eb@vVX5~D,]N4a!;ZF\ϷI%`" Tͺn%#N] U)['cL2,P=Fsq^1>Lekl=b?m}'eu5AqB" .]H@B-0@P0>sz >ɼ8q^Һ"UBT%^osyK>Vj$K'_z@ =U91p(</u3"K* P(aZVWHパ yatpA(?39F3Zf)ԹS%:a-ӽӀ;Jd %љYQ !2 Gd{}<3s fNAsGp/}]>>a9h^9mD) m='G^nol4 "veR[S6D~kM'fMtH&u"76_I.{%v9)%o{lt-="rT7}SdZ1"3Ns°@O?הB!+g8@3A?_-;؂?뭭Zp-BDԿc#)5#'|`y<[X-yy-;IWr bp΅5AiWLթ3{8iHHf[1aYJ_)!gmN l1Uҟ؁2V'!kȾ1Q)MSZ g tNKR0{Nk<:mak(CjC^t5HEw+sDp e!EjC} xST0R8ML9RxVmN9('BB+lDU+nY_ޱW*wGsMБk{˳[baUXΜ<~4:ZyP>/@Z䯵20D2wԺ,a*[iufۆ?Ua ">ņb/ VSZST adMV МyΌ(cA=O(ݤzތ]huRN8C>;[瑇$5lbt+>WЮlyexݨ51Oo4Y1EY_&(t璟 2 db5"ȱ,uGJgwr\@)/_KF܍6dto;?{J%awW>s $>]o-g,TI᣶M_]kR"lȴR+ -` BYqp[?^܆l,B,v SCΧ7)q C{F54|j֣5K C'Y ⣡gXz\UK1,q' F+WYZ(hPT4>8]3B1iq֗R nnp>TVy_N?%[`]u6߱H>ʱl[1)o8't6&!m:"jZǓ\ =ؒ@-miR&;s&ݓ~׳鋑4}Y,UAfv$[Y<'/u@=G7b>,H#ZInݾa mKS[)]^avmf, {7g.|YXDӬ Xj|ÔJ?KCð3>X AKɪss Fa"ZWm<9ίs:2`)H1dKIE83Y%G. RLP߽,E>Fֻ'SȦ%m9oy[tw(ബnp/S`\d0U Jkh⺊+l$O x달no)'M\̯7[pjyNnD$`{{|9|\VXOǺ1 3qI洗V(|A9B _$E ZeFzw)`2sSU#eL I>aTt8P)j~u i ?^; >b4`&-oپռϞ:}nơqmVgdU~CG),kjEIGUdE|H`'į˭L`3/dRҤ⓯6P.DIJ@q (9)a⧫A8 J'1- 9셯B!pׅUn$(<|oq^S'45qrݥ1Oҏwqs5fU:܆aG `SIZZ\ж+~X>x3eea0T- "Xe_̏8N¼-<G>'R^TsJ3oM ǒ:~L['+O'R(zT;%#kM,`b*p ,YXtk@s{y ptbMZEn~E)=p6R7ԜAR36o~[edl<}J,(N%qFV_X홛Jm K,IU-t0&I|HFo^ݟiڟ R!8@՚3;&_ΞnYw@iV!{] Xo^+ĻD<>Cl. Q|ՃȈUf ;J:첐+.i%߂iE2dxg];~%4x@Oj> ?+f0P i&&a>q8ؘ'B)3FWi$dJd7f !WdieJ%oŌX~pb/>&Wp)wFe(`|`8#u@Z@Fi͂C N%%y_̌z虷\Cn{O@᧶'ƥv#] ,q|n CN޿r\Y1^.,΢ C5\YKȧ$L^;::\'g)ĚѢowGt>l*~ݚ]<72 t*9Q~%rJk@_$$XJ6H_$>.?Mߘ/\QA$iz i3MlKN'ZrnoĬ;i7ChxQӱķ$^)RxZ :M"/lJϙb(*BW {p: Qʱ"% z4 4jFRAX= ?igz21cdiIx P#!!}LԬ Pp|=tb۪zɶ)_!w,^e_S֨zN؋-Pb&ufraoĠuX+*]ц~$m{<<$&N&nS:q)ur_ռX#om0Ͽk,(jfzN0)plQX%se0_Cĝen7sBtG/:7Peliӊl"n<=$ܥ1MHMN5}B6[t>+&±Mߙ9#<ֲu({I؏/g=%%]Us}W"qo1|Tmyk}=VC'x(4|6PUvDmh9dMc(޸N,_9Q_;,x-{%w wỎw6Aw*'Q:gxs|琝F‡BAΕdYCs^[n@RWw Y)$;jde-(OcV?Wo/kRo0u7w}vFgShs\6췐B F1z.1|EΆ0ɼ)xtR/ڗ|S|ὒ{q~p˂'KGg"/}̲I1{ /N+& bg?̩LQ\3p8Q1no{p@,ahylcNax~w2@HK_ ieDM ˠ`I'Ȫ4Z|@o֔KSn0 Dmu6RUt-_/yQN!BqvӮy7O.VY8uǢsy8,H=.#/bZf=Q 0I; gVG* $Squ},_Om1Us#z sG)G>x6>nSȒD3up(#ë`)☺*|"!oRaCJٓ?\A7Du&Xe <~UCFyDo y68  EoeؖjB?<9:Ios#`Y' DF"$R<8J`pԄL~|k#%c%#]ġ#;`ΎM@I|,B4"`tV5TW_K+ JD~[%0{,NHL>̩1vxJ%ùȒr:#@ i,)݅e17`y!`plЫM3cu3gH{ƩO.};(4hh 9[?@ 3tugjwy#A6%"O{m9X)U+]ţmvZ L⧂̣;o j1&?|'] 0Z y z6{9.! &{aB.{+\/pRMPx[6IJwD ̂@cK?EB(kAM3Tb&wy"0Lv4ͨ#9j豒ulD8D7۽xzMd:{{}OS@{WQʢ>kP{yvv?j@Ӊ]_y^NJ'M:Pz",KvܿuI=gr$x+.l66Qsd?PU}Wn|8lPj?I_eE)_c5Y="-ˈjOWjg AFSLL{.OV7ȝ7{\pCy` U@Ul0720ߊqy>\Mϙ^/|uFlƊ ,IZ<$4)ؾzȩB dzU }0zf? R1JATuM|~^1sIi! 32{if=';1Q3ހ"Ҫ`EEm"Ӹ7l z3bv7ݕ|mi;m |A\Z 2F;=oR{qM_=_65!`\Wj|ON%2a#'h}tY ExiG+r}dBPᲃΖJN.fœDqX ۋU3!0ě0N#!x@X'D"tiWġ9຀{a0q (?w(u,!H(INH?6axl݇IZ9{&! a /T!,ީ&gbuG?CsvoIB`-tVMapt1XհVFa)HP>uq#YkXbWg/\m}6 `壏`&{ k#B"NFC@ʙw\%0Qӡw o"vBë8Ef*(~?/Ezn*h#ӭ1;d|כ|<%e3EإfoЪ1`l,;ђɂa15`8h]<`YXk#{s,o\$~i㶯D]pn&m' OO3؆||X-a̡_8H] Num%E9F!t JK+#û^KsGN.*ȷ4SE,7Rc !i)ѧf'RL(岮Gg|=f- 9pi2;>4ùo^T")5ɩ$jTnw4𣞎w I/)z q;=U;Oe/JzE/ aÍl$bB`qn :ZDZ4vm1鳇XwP 2[Lp{ #7.p좭kB+ dqRt ĺ9~ѓX𲧸Q(o_ do-+_okjNx79ظ0r4(>/GJN-!a>CrO)E4d 6 "Pzu, F[ ~x8.pVAϸsDf}f#8 ?W}.'hj4cdGT3׉ȭ@%7O Od& ǀUa/4{nlx.ތa+xesI r|F`mҰqJ,B );UZ֊sv~J'~z^@P",hl6ݸ#]а[KO Enp\'/R<Ig(yBV^|s!,t:U jvR l2QytW V6v>oZFZg/াQI.|T׮m3eec&V*YsNC]U*͞ w| 1TTW)!Ӌ`in7@ōoŖ+IoG5e.ͱqHK`ץNTMzpi[#֣L {ҔJF: w=|:sۛgcCdGcFwwF԰U7b2|^\J|Q[3HΑp0Dlx躚AItQ)0LL7]np^ ֤G^0YXڏyصMΌ[$H_WmPx\D},/#/3NzjxiԿ 6bq# M|4KLLm%i #6ASG,OLAhм3vxoe,dm9~af`?#֬Y5W$/фWtf\8K3irےzST=0 r>IJ.̹bwaGwኄܮV6qjOb`{\nfB |Z?k:^93cؘ^^xۢ(F{RAk #r+KD/*։yJMan=J7Jb>f?p;7< 柏L^ a=|t3Aû2KTB_bV?oBPsjcʟB|dDp0rp9B_[4G7~\a @z$|<迟ܚ((6cZR9#!{wlE%PCpi<Na7/r'Xu Ӟs'ݓ<9ynޤþ,?-/npЗFO~EQԗøÎbZH,"<H+QYhFV wk~rh0w@.TRQN1шZ?65M=kAs V"jCcbz1􂎲(o}2 ye٘p|xy6*ݴѯ/}m4+ؘe_ٌ̞gHjifTzĒү*[I{P[9%!c~ uEXR|hr"t!;-wOvP8يn{nӟWɆ9LVgN[i;ֳO0r'k03@2y>> ryڹSH9i9͒f3`0~?4-@~BamkAۡ*IʠV=\C0Z+lvr)~f~~6e'4ycORSڵX7n>qE3zYl֑o,l+1X:(/o@Qg(YxeIFPaDOj;A ݈|\n<Pƈ/DE!Tf 뒅8;Ez4Mݣ"=1cQУ#' 0T^C{/6mrX z "ySS|n(}ߟAOmAL;} FWǩ zcyh6v2OqDAZxX"FcȠ'ʦuOVwȾn埳<.1*"Bvlyס[%a{}5;ƛl]^ο zdIh &FR ،̈x*e "y&[/_?R\;}Qv/dcԞK'ʮXOiS_{ҰJ3ŠZJk#7\KO}TjeQA+l3%+d~dzdhn&-ӿj zdlٺNw:>XMX6߶ݔPsM9xLcCp#bO2nƺhuU^?]x3sw$?loRY/(y%yLϾ|G> &3*W;v_ NKj}À,*Dp}%/ P7'"M,kw".'3&6@k勎"x۾nyoD;ik#==Ztt*ۙAnn^ȕ u\=҅E;1@RJ4;Pg|߇؋y{;$|t!h(T{/M| rP%,>Y;r2GM['=,7ϓ(ĭv_b;e[-7*[e"d!/P`@FHqZ[}n<w6V_v\ LM Sa %qD Bڜkl`jjdӻ-$3a㩿y6u9(~ WD'FCƑ^laY>JmʣEJ<7끰ّqjZyKDQ"~6y3f}ᙾ/FHf.jBv([[@[f)?ɠ}wTc<'NEE\dt~)2pZBjW;2O\>fU.je tl}KJ78mGx@`=\?D=gO`N{xJBw(ˢCˆ-V[)dz9{} ZEv-Qm} NiIClm7FOC᎖'R`uJEKa;o壤|^أ]p~*!%+2k![12R *9ODgP Mu+_ ~G0 pbw] 9R4 lJe7`0`~*z[9z%_j)9Oz̀ω@wۻȊcİA5/E%ļ<,;RL 㦘e2ޯht`H'y߻;V F^EMDnM(.b1E)tAd=LŘ`xY[sAѻ1⎪OU{{my]uPW#-E":~/~-9 `XLXiWX*8:a#Mnu65kM@zOV "FMӈ!9Uqcռʑ?bWeZ1A0aKAEU^IϢdZ1ͺmzv Ew" n:5a4‹Pc/rKk$֕ƥUl8 2K%?m1oz:.ߐlz5M~A6S]>+[JpZߝ4;T51l(5MjIߍ}+69+ U}L; ? Y]G1뼱fÈe#^Y>j w4F3" h2)vzM5;f5.O˞\ n)S,,ƃ=2MXBo*7e3,G_oԧv ur㫐x|}פ'۷L cԦƄp?Gĝz ճ?m:R.ݰ%LQ:Xm4~j0F㵘)m@ {zg[A8X\ώÕLx8gN y:a/js=.xI}-vRlmAoCT_hYX!aLNOv*eEH-@!R6hfu%tmX?fFUhIbN6D̄% _w<$Pw)7FA)/Ӫcξ[qϯ=uVhN -|MO阘yWSMbHYz=]-"B RlmyNުp5Щ+0p<'kQ脊PVOnU Eڍ/zy^bla;k_ffrU1kz쟋͇ :z X ^!'TfTtsboϻيA(MFTc,eP䐟d3+vf?Բs| hJ$+D_tؗCSaP<~;(QToT_4xN푚8"Sˑg!Y[f,7NpOxJ[dҮfgD#nR x<}|eњ6kt^ȸ*?3#SAX{co@ævM/*&Y# ITX}sЍj3lmQX`^%VR1W"fBc%)ezks-:s5vv=u>JO,K\P]8MB-K׺؆7G+48]LZ(?=Gk|^:Ve"+e= Bu#\O\oF$\K?v30oQ}n cp^P&A2kVקlS_>)\O\@ޚu!Ywx?$178lSVRUSȢp]tu[duJ!'#6 ꫙:O^knȂH65i|٣n~Osbc)| U鹦LXdje䡴p.Ui~#5UP?2d0Px(DO=TEFX?W1 1~&=!\>f&[e@ID9]`kOuЈVԜkxg7A Wlӛ|&%`4)}:U?xrz2ggkDKgv(CB3?XX≱"OSɎ*ZR0kSt!aVOU+P6΋ lKt0Xą eC=O:ji'[zkw\,$& /ibP T!na*ut1Z4RP"-o_5װ"k11+U!e ןЬ{-s<}7!)6M'oMlT2tôюĕdP "c~;UCrYo`cOn_uWU5hbYz1n3 Nq%-miR44&+N!eqkM-K\Q?EZ njdgٟF%8ΐ zCT׀ 3 v;z7>ȭg-n6S[p{)7"%n5j7qLB_3&,/Agݡ:jҗpv9pI6N#ҧNDq`7Tr]5dJ@q+O<4oĎ]}I꩙%gӓpzBauu9y 3KamTT& EBCx = paX#&Qd8喓9k.Afn<"^{~{SVtP2 א#y~ 몯|O{r09S5j7Hj"=NvSm>V=0oX{2FC ̒g=ح0v׈`22{*X6{zdд> .;ͳt:$ɲ0!.G_*2] g?[6#F]fI/EKxAΞ sF'd;h3Ult̢X]-7¦?e-M@S;s5 @{nu)z~n0 :[d?O`۴~#EV+PH@"UƘѳ*s16(%蕁6G@(>0G~[( XB#ENdO ݀zR  Q4hc)#)(uyxR4Ċ*f3¢*]ÿ)bEa/&˙APˊs[_|J*F ^*|PN%+~nC3;89$T"VQֈ^M%D$!i f N5P%,pu{fM!1;mZkt$.箷ւK{7;-櫍LI\;q61} jH[ 2u-W,] qǢYyjOW@@}-*zmɨS@J}`wwO-攠rҐK0YϏG&R5A]M5ih|7꿔|7|B^eMSJ{. d3Ǭܺ"Gۡm9{69cE?_N+]*qY ({ω) - 1_GX B4+&q-$;RE?^\sQQ<&}yI&/Y(OkQ`L7#Z&䘆:Ĥri|t,2mM~mդ*B/L5 su/Cɬ Go<ӯ.Gޛ8)(_ 5}uy򱱯̝4_,ܢs!-D ?;0"tsvDOctEmXqkMz0;aiR0= efEl&}Md\67f l~V>x>2]E #K,}( U7[`X5:eghpw,\o3}uytҧL* 5c%yK#NsI-bf4ǧyPWoyTvBjS6AgA w$sϊk.筯 f2](g?o_Ĥꆪ-6g]J &3lu!I}-S5^u)HkGӀ?cmyzQΏg[K*YVx>a'e ҅mۺ+FTd@RlpvF^krP +Y6hS4-^ctj)fGWFy/|zvH|yVcĚQXeGW$2~3O3>kAp:fNFNc`V@[,1u=by.Ba]A9) dY ht-Ȑ͐#uǥ*AQ Hu=^VL}E*OuGU#t"tJg?=[Lrf#d ]ųޞtim0f*!HCdLnuƾTzWͨ&!S]+T{sUFDEYKxoc$ޤgA̍p*D]7Wvx+i,9a4-|kzEP~qX.e:GOŏKLþ"%/;,l,qT(;U|LkIpI:r}Z4 v}!Pfq' v#7 oUuĺ{JKF/LՇ ʱE>,,c{REG]n/mXE7/vz]rĊ̈́eahN3hg]6SH>o_ !'78a. W鏌d\^G@M:{&| }DҫYJ4'ϧ_(bQ!'Ocǥ|8nOij/.ָgp<9׃9 `ĝQ$ʭd$!tqeMd唁a_G9kŁ&=<$ XBvꕇmd(gwMW?wf_z yWBS!y*:!8.C!5 eve $깝xuĭу k9=1MI*}bXdx4ݱb|4r "VP+6]sO<)Z\uqWK w 0 GOh)ū+֞@~2Gn}"†ԇ_(;u%q˭dܰ\{#>dw6gHȮ^ťf7n.)Qu|;0Ny;HsP+gMM@W:0H 1J"gbnrrnƸluw68{#t|], H l!q>ҜWqt,>n`+ImqQ֙N]5oE?d_j:ڷ3_CFZ0(+afX={% rߕn_4ܿ)HeEMe$rIA|9*Ms{xx." |4#`h|Rݳ .y̠fdMtKh}=?m=$&w#| Ê5A%[z:cegغDFVh! ;30R;}<gUmMW7vgÈ7Ƿq-Ƞ5 !yIoAhHO!81ܥq\'}z@2 ЍNyobv1ЄwY_% O356z#d#iՎ.`L4D:kF"@my|Cf/|' FvE`̹şEC#fr+ãU󪪰MeT7-ݼMScͯQmNU}V8Σd "}=0ͅ9g7"Ɇq @%c(ۤ>ԂSN7|k4nv#%?)Y_>m-_ඛeꏂFb׃O毸d3y"WM/&SaZ>9q.pf,$>a R-5aõ;rC$"fT5M?^D1\[@!dy)W}x G2Yڛ}Od9ȳ7UQl?-$$,z+WBe;bm;͊PmU4+mwu},yF$v9&Jk*q1Q,jLmFHlsu,;D0*p: cdh&*pD.KĔ[s (`]#:஑ww-Ac#K mAڶw(\.g3"pRjZS|=#_+BAۼ\ML!` &z b!fi + <O[nmn.3RTtm0w }iWs?\+糮 SP%Rݘ"Hu%7L10zۮ> )$ Ņ%EܒTD"^BF`V/d6xcEPQ+$E^ͷtZw_r ujCl+FR(4^OOƎ̉SYЯ̂f6:mCZ@l"bQ|m'xPŠq^y;9!# /Sϴł׀aYR:=]1zK .$eDɉ{~jֽ TX4KÏ֎6EaWIi9Jo`zwՆ&ֵ&<1L9@$$gLM ё>v+DsmfJI1-6{e?ߟ T  ơF B>G|#7SbD]rɧ /n I\ }[r%obb˜P08n4\-onY'{eӆt ."->h-sRndУH[%S,NJz,L9n,YU0޾1G 7E"k ? \lBbQCݺ$xI[sȳE`2ث(^rG,,{ѕw@1p\m ()"?5|>])YnXJ FDU&`nNc `3Œ/K\ &gr S-&atuZ({RET2Ͷ2zMy@wGC𤗘?ct;#YFb.P^+Xr 3^W˾9b$[4`& A =im%=#/h`g0Dθ e1W xjuV3 (O:kvC- n)8|1Z"'gYn~ ea }36~ oZ̖e1Иy|?M&dF$NEvWPPJV!Nw$5f8'ig U䘎Wi7s/U[ΣN8%U $'ȭü).8[8faLkyH׭|]77{|tݥfI?ȼR˿ΏQ|y@%$ |2ݒd8\o_$X !܌ǚiY+XZ/@uo9^oȓ((h =߫.UI 'i.O04E=3=͔tB:5k}GA`V;P"QOMH5ٺ+g-Be!ACxWٲs٬pechVnMzE ݋9uQ@_}FLi-Lam|kyzD ٜD$KZga[]/3nN縖י!̝fDD>X=vO> Y'm8{ҤFp)/@o}; nTg^v2 Wݦ a2}3hb" ˺1R4K"SVP,4Acn\姟K1ׯ'N^AEhτ' pyiiX#F[g@G`P:,ƘV]P{;y$q8^~UU&gTMzl.lF`b^V)1\O@LȕHoGHd.an*`]MV#p]DI$:SK?̤!-Vk97؈RRtO 2q~x~g(o:@YKL unO=-1:gWloߟR1KlY򺔳qDHwY,XIu(1'aWٶjv\݊Dž6ye~?7*N'(`|?jt#[dBǯGQJ|Ñ#D_d^M'EӔNXC&*!9dQ6UVX(~Ffd@WyY`+UIy+ndhj!p}zLPހo"Dj95;3D*mA^8!,O!8QLy74L<̡2\'VUkfKthY$> j |A?pgҽrs]B7\Lz%(;VEЬ? )`| ?+և" s狯 1!HiPPQ^i,' u&*.Ʉ0VMX쯋(>B=AQ;#H-~n_Lӿ+}A`l!?B,Ό4Kot$eMJ3FZM>+{_]AЃD}Fg@VzS;K*KbːS ̐6e`-T*apF5 K ֨I8ߕ;2ۂqH-0Q[vV9yZWt޻[;`gv `t^gB:ʉ]T7mB͝K8ԼCc^xEñ!WXFmV<%,+UWEJ"0VW!-#M۸HW%;R>h}Om0Lw?M|R0nۨZ/Zbmitd-Mڤk?تT+|LJs%.EyP02ZOTuR68+5*L~oƫoq*k'9XYMнnz#^u_J~WʥO񗟧VK)Z&ոh8#Y[`O|+FN:_MBScR]dz2'`43❺^D+NN+xgu#z,doG_'U݇i}LgK~*x/Ȝ* ~Ŋ Gx`C]%7C.kPø ]SVf,mӱ{vml{|?Bf ֑Wx(kpJhxh;)$h1ȀAjkg%ӳXP ByUV& Ae/7٢T\p'6ʖ T/]IFnpyh0vNy堆[2sw)G0JZ9 6=` Y 6 Cnś3Jf*jBmssS4j]f>| #V H ~z.˃qթ@y$9EL4{#L_t|VtA}LKΏ':)"BDT M9c"֨aズ%{E&E8pBzIJ k[ơX8E:sI,ā _I$%˕n1 8[!:oOO SKOeQB=OkXy2~PA)v!HǏdUO0JkFlV$@`B{m` _a٨MhYbHodvPAXjK?Prw`>y쩴q㺼Se,tE,w+I4"!,#0BW7BJ]. y}bTj=TF! ^ 8N"Nzn#^me)lNxapRZ7%R z6TfsG\Bd"]q\0}Y3.\륦 G\d2KH.G"AQU||bhC/W'h݁bc~O%z`1?%|=5=dPaͶ?KOILձARH5f6 un*!HƥT1)r{֋PW˹Y0;& CҶ,0 R2Koa\ndE [Nu׹RaN9'~,Ru=8߰s|̱]¨gz0\ݖYdF Qtf3צxpهsv/"|Kue ./?0H+Q!&1} ȺW}~itD;^#]NÖ"Lfy^cVV-afw7 tQ>vflRNHHo %xJ6CS?ifYjRfLƘmqi Л.\31\£P5v6^@7It =Ms?&6ĺħmK`}Huw]Z=ڨƞpmTv6 J'Ke/?[Ĵfs\h> 4VQ#_ƒYZDЅ}{[/) ;~aY5腯>jʳ} D ok+ƥI= Gp2(ZRfp< l 2'Ќִ6!w}p\ɠLSO Z#rvнIP1_`qD&\@;"HS}$H3~L@b6)"ݼDOniN5e:Z܈$x$27w((DEX0)FdݭC+ Nrf/iDy.Շ'uf_$hAs#!9u|a|(;}ȩ$*?Vrt`LSG-5t݅S%\; J~^,0޿Y藐w#0{wqn<ݘbbR";.L1bͦA`@tO7̜Gq)P+^֏v:+wu!& wXӚwaby_e&5 $^oR̔ caML`7LvE3O92&!p?wg0~|EDy!6浫oj&G*h{N\TB)6C,Y9{ "N*A֕VԝoѼe|eɈm;8e%T,v}<~~_4ULx`?OcQHZ;$.H3g񬈊q wQ%UZ-%˲MJzs L:ɕLNyF:JKB#*OJb[߸d_RA03їls2Txf;E蚢J|Zgp֬OuT 3VJmk gjD?  y1]-6=ky^)LB|](M~OoUZ 5 7^+QrKL:Zf3~-i*JR }"BÍW'zS]HV_T@rY,}ʠ\oMkC: N4hsy.á{Ҡ3 Vީa15DH$w%9%9+z$ |#/( C9TXd^~hXV(Im'CZHMha'3 BcVQ١Ch>eؠtxrV EO> =4uZiw`_$I6Eoҟ|1m|'yCxk/L,.,݃oN.hTKot5iFu"Ky X81Rɽ&qui-T|@}e`{F/|ŽI՟qrsy; wL >ѣ#2DbT\'a\+^h&~&k%-e [`AN_v/1 7sNs}h騖7Rf&dFG]919=sɾƩ{ʍUp:{顟 WUbTō0+9yai]c/SOI*)c @Sꌌd6%qViM" Ytԯw@0>m+Ne0'^n; ,oNvNq1v"[}, .CjKƜJ O{m> O ,/F6=y\И7^%lrf\39c7 暽C`O~IOJ:i,*ޘ&ڲh7cS5 D9) ~7$e֬}sNdc ~q;&r脚aK ? hN~%p,k(En8גjw9B(,Odr sä}cY]^FwQhSNk|Ft0H+b=2vn(19UZ)%g\8$]U]m7<53!^<@è"**:E70Y |Q7!t&)|F ܑۡz3px1Z 5TX5S>KVs 3ڝ$y|LNTw(ܻczRsii2,4<H#E{W9d9Va N%*s3[n%H9<>HB.z@Y/$,z+ޤ. aԚ@,kz 1hE%mFmf|-C315mIFLDN+ r=¡~x,idܮz'eia3[2hfYCȅj6.3.:ە6`$~Xj 9#MlŘO#9}.ƽWEůt)IeҼX͹n_l66|rp?6'EF&$!}x0HNK&ќPpdlv͐t[4,R85:;DVfCYۓx{ xĎKǡ?GvSHaWsQ"WʄS#OfcaXTvkY6F%7*~ x,c'S =x=SV$GtfX3xE? gfCP]k8 Af ~ԔuKWߤuMzl9#bMyI{XŊ"$Zq݁"zp.[f zrztb tűE{BL1y`N;;7ON[xi~`(̹AHmVj#9z+7E@ErA:TxxfQT7Jx ŭt1ԓ S}Br-eЕi-wAA23)#r.$ɉ2걚. XFN'PhQjb_3>yQ}ii(xHl05P:lA<ͮ1e2צgCΜLߘcR8`.5+Tu 鎟qV_fFhI$io 3D>? M1JHA={rq/>*n4BMLb9V9j C=^`˳?֘,{on+^tLeĢeMoDo'/%Qz@-[ֆ#P,*/ qWjdg -d/: D(rr;ql"(o#gɏh 4vk64Qh=VRqu3XKs q%-UPZ[C9q gG\yVzAk8$ XC4W;eҵi;km⽓=lDD;99GPc swv?˯oZS& lJ܏6^ .գBM,K}+B$AC 5I*WJGWfM,qnlͷzSW}* osY>6+2H$al͌޴y*l,Bt෪(w#F0#G9Q̳"eF {Lm^dYGJ@B|Ĥ-߭!S<ڜ\h%ߡ H*9Tc+" h"2ih|qKM'fߴӔJyb聪HA4)_[T2及eQT&$Z2bm%@Lܧ x؆S&Dk~4RV5?ܣˠoc|Ivfr=P@3 zuq2V?aډp3ʻ1CKܾأw9w$Dae}1c0M R!L_;:yA!7 ~2Wmznp|*+1O mOa0__ƚ,1Zyo\+hO&tF-WV ?&N]WtXQ8Z}Wujf)PS2_K^YbC8 $7.˜uK7^^\B$FL4nuN1L@gɝze`ިu.%.N]4;(vX" 7a]C _B?IChkfgmծe>vȯRf7(2g40q͗/(?g@(t#tVa\WFmH[;`勨3VQζ/0,cM8Hd`}GP|R''+~|b)dKHj5 @D/|Qq|9ΌE\ 9Hgn?\cMr ;BڐzD9b{J[k[`k*hQL4K⥵ P 4eE+pEm @y2YBXyWq:QYuG?Y:G$&DCL&t@޵1l[TEŃ%2G^qs؄^&O ZÄjsXci tr WJ@KO!t;!~1m]ӹ5MnX+VmN^v,7#w\ mުXz:?f:ږɅ|H0CƸsXa)AU{;+nSfP{1*GZzY7t-d|RhK`Fm"F\3*{x=gL#9>agrhΏɲp(Ntkk>[aH@_Ln-AGt-WiEq8$@qNo\Е>fYSPո;#K>:Ӻ,/_4QL#ڋfCV-nz1|VCD Ecj AĹP ʠ@hV я#pLH`.3i*%0 \="E%=q4õm 5|qƚoYrνgp U..;1.zcO͒:QSPOiq>UImW'j+~dp!=hh _w1  og8tw;n2{w:yCmb)17iVkQUnF$߄FJ{taH@uC`8sIInӑ*jճhbZHXʫʵ8fnfσ.%a^|[ֽbX'zoux(}.Կs8gC~GHv-#!HL+Yn<O(v4Q̯OZ_<"=&8AhQO;g~vhI'r&cYMT%$nΧKDQlP` mTl`G^ ė8#)IGrgKhnr{vL^uK"|Z"z0&b@N@6P)VxޤanH1z,yX bG/')!r/0_>.c%Bz+ȞBO%>I"Dwɋo'S/ ,2XMʌlH1=`6`oan:z$p֗cn?QߚdיuT|7W_.m>ol.]wrmfmoӒD1&disulԾGJ^B\FcJ8E$3c еM(&tD[aPrO;ЉyձI#7ca=e?],i Es=fI%Ek+0zX l$ Ea{A1,݇#CCG| 8ج Eŭm^".a z2*8LM`ך*FcYFLI}PTgLx:jw!OUZbݗ,Ih(}^juX6sYj~s Xin: @ %h VxsZ6}h`@i~qw6^!+叐%c.&!Wױ2$cnKc~ݾx~xY\طGwZ򢎪vQI5}!*6; H„":4e;I&tޙ*TGo9x/1ǥ1QpڔS pd ֯+8>cDG{v1iض=]Оҷ=ANN4 ]v ^iZ!PrxBGF蠊+Ɔ+cls \JovND0BRADϯvUyv*=Lܮcݗu1o*lLcfODqbMQ"jy>az ʶTqLvt E)3ދdN_[An"$gN*BJ֙m +PQa1PC8F6h:Qvq`D> Xr%{]Y5oBnbLِh*@ f;rvڥE_G7:IHmnb_eD< Kzs8 tX}x&fq3KE 9Q )-];l 2Tݮ)ЕhT? \-'JgmN!oWb &#A^M[K=O,#% l_'2^Ih%NwD>vә. Z$Kωғȡn7gx)QJ3;>_g{Xcw!L죂lq 9R39G@[9K5sǽ,_&IIܳl3wda4yUΕjj`jnpFAX'xxRxfl8+rَJқ3=JJpɰ10tV_d .*] i4%0,#~2{D 4l^sŔu`s젻Cqn)0a"T E"/)rmjA1jiK" i{-0 1T9nHfE1`7TR|%Bm6zYnskPaTP@E RMQVu;. Ѭ!_{SV'0zM$ ׭w-.iA&0pcݒ|nr7O+Yq %|- z'n&RuY SۨUKܤnjAtQuݻ"U帣z ?gۖw.gX!aaՔrޟy(ݐK*k=>\DNv/ٿbTeoE_oVב xBx;o fDOſCbSڟ9N}-nhˑ ǽ"8G 2C)T'%roO1: ީj5j I!+9ZEȸn ]_/-WsnQP%1Q6NEzՇu:+W#nBݑ@k 2$_-2a3gE`,Y<܍c271@[ZʩO:58}gQlKGР,t:#\ocq-Tx-5˶ך*A)ʦ7DVh R[ acAXL":XDn~+)+ g-RU5 *QN[*:FLpfKg,DHUhl|¯I//vE` 9LRth|Q÷ה>Z f[*d=2v{QH$ gRo'M 9I ؇Z3Ϗ׿xik mQ+]eL3䒙hI/WgZדX/njm.uVcb5gY{գULPӷ?"xp΁JJB!I߻(*ĥ%4޶|Rzƛe=hjnd 8gD|4]=eQP|vuTal$p"IוPFզNU f.{x/+.R`{mQ^F F5h }'jB8A8sPe "xm+lb KЄ0aג5՞!,KDz`YȫY*!e3xTJ08  {\`rwģ 7Tsd;r`MkJFF7M7؆Xܨ S8a^#K͒%!|s{$VgN/{HL/o.6)Jݞhd m~k @SX?#0F୼t}d+~fz ۹܃T4.⟸.a[_!87`=)%4wQ`I؋|j9``shJV_W~ҏ(uWEQp0HцkW]FrȀ H[+čhi)饴>!pU%+hAD.'[k9'ĥyiRnqGxt~&֌nJ]5-lKFE7/4E:#?MT t| RTa|H[\9eVD+QMeOh[ZhzT?dlQW% s쨜g-خDSa B}j"wIo=k-)Ӊ+Qf"fP-$!>~|w:zD o|W2ujIkUD8 Pzn9KQF);v)S/y͒P [[-':-W88LMo~8x_MfF{;Mr 2s{0ylFFg䫱&y3} }+-oC'rкVm;P1vMϖ؇ɂˤmW c7W,%Ev_O;:: JQ6m4Ãe`Z5yјYSZA,Cw|& $1~C`}KzJzϖj%~?**!N%MD^. - Fzw) 'g,cSK#Oo&Hc. =NC*δp)<嵽d uQ7[7&$ɹ^i<0s/th9J]o$x˦\2laPA=g-A:+z,Į{ϪMt5!EK cQ/]=VNT}fU-;}Яkbrnehŝ/1e\J8l4ɜѐ>'ś2ʵ[R <>$x,5`^pCr{RgiSrH/./o_V`ʁ)Usq}g;"ྣBׯ%o[g$'ddjq6B_E?@]Byٯ*#P=XE#QNYNS10U;柹3A >€.@` J K:\ Z}blH(vn/HdKZX󕑏H.O65M\zQ)#z}ɷ q/FxS0Ak #paJDHu)]'Ȳ9 (R3ĺ 蔺kV͔/,BB>>aXI(3e+g*_)8Bn{E/ez9eRmQthDrvyXScbJ ɨ0d`Y;lkݿ hu8 A$@w$ebuH0cikjԭ}\膭5$S4C!"D~t08 N!ƧEk~^˟:T2rOtz\iٳ)[MQ/P)(ɩC+Bl"n_>K`<!NKj ٵSj Mhe! :ż%M}OHlQOּٌ?Z$9! $3!ǁ|J^mrK=B|t2cyBkTdmu(ǡm"{6kE~iWDXwXE~$7?>L+01,Aho~_xNA#?ߣͿҔ:q+^haZ/INҁP}1t!ħz0$D-Zh/Rh0ΓҶMhui(Rר5 c^7A <U ZHQ*H.@ 53~24 :,3mHSD5{: E*1@@`u0#8UU\@:xբC^^kDiwucL\ rڣۺWjaz8sE=Y7<"-e%6deJEOwnEIiZ);UR]W]M8b]-3}=Ө|=B,t )54ܸQڢDwQV`Tl}`cCĺ'1.GVSKwGUUWPWzo鵝4R;lf5?fgnTR@ڒBcdg}Hm N wF,k8*e̅bJoMr!Z1}:7 :-O8Sß]0 sR).7?t掵wы}]K&佐m.U(2ŁnR*,Ai0)eoZi.Bj_K Vv@ [d5a5YWۻUJ>+qG:FEts MIk„uS41h 7džJ OPgũ鴀;Ē-Chvij]Fe52oDӄDd$0Vf@ 0nh!۷:TfHPt^ѺٙMN) UJyd+̯6ϬfZ":cҳ@P?(hu!uХ ƣΰiV\ @SwDVѻMmx"bG}k7]٠\L9QTAe8'r!ƳpnΚO*]8;M_n] Nî)q w[JYtnR2޲$m m,t=).emyt+PK@w+8t3Fѭ73k5gL|J䶡/A\֑<; A2glyjp?~ %Pf.2-(km0{ucl ~.)Xh$NF;7}3~WcB;Ro8a6rLWx&)}K#Lɚ&rg%}|yYLl,hUk!# CPU.1U5_,j|9z$Ƚ6 wdV |Qt- &>m$)s&87|oaZԞ'$Ceٯ`tel]42&R *Xc:KWZĩA.Iƕ oR1xwʞf'[;UgP(fO?skjH$b ҭMed\–9m=gĂ8h6 > Ы== {TpwL ëU^{oOwP1KZJ[dj@͗Qr1hh!sWɥljt1k Fcrwe%hVܙIh f< +淈ߏ/^Akꊏ`I^Fe(,N5 $ቭ~i`TB3"(ZrC,Lj)SꊹlNxzM݌pzHDhǼk|D >T ik,NucbZ j`\qJŕrvM- ǒw!$ oVlR.ȜO0kIqjW #^/+]==~guhaP@\jB޷q=Kˈ/6m i Oq|Y[}mWLeV۫IjJyҞedVHknVdAz_z9\|^[eS>CnPOCB9,zf ԅ 3R?֪?j5Ay}iB+x*>\N,5I*VS_]HIʠ4UK 'QԦ i)V!J%H:ODT6>a,]RuS N1@e ~> p d)ieI|,*vg3oQ_Rw!`hKN)/]@Yͫ5ˆPc¶Rp58Ϻ =aR}Z8J1) u%7ϐxW`76 r^30)JW"P*(3q\M8Lט7X=v$O7/͑}۟%q13^uu2z+ʁ>2W'sά:+{NJO~$Ƿ/wHh[N H qdsNKAI^Mb5˽6M*85tZ Ep`@UJ JQޤB[t8z6~d%Dj YrӐ{ֺ/C°ңV T BtUO~Z>0\D\'C TpW|G`Oɾ[UOu;u ӯ6;sK/$$u-sapsgݱw$ `zUQNXRlrG{_ճz֫ps֨q-ν+?it$8FʵF oMPkVUKOWD,pԔmb*EBH[X2--j~*\jE:CGۛc\ _i;rR^~{5n>U}ozBoZGE ߊĹG,Ro1$^o!&' 52-O]yEE'kKh(ӧXVJ x=kMGbkq~WdGxH%BAcĸ?` -rx I.z[ỒR~:EN%nvl5yX\kn %D`4@3uw7_2\%NV$X{+U)(8BUš, DQ ڪ>DJ .G%"(H~tidyr/data/table3.rdata0000644000176200001440000000042513437754024014517 0ustar liggesusersuN0 MuZa{z ʶU*q!)ZH> U!y2rgb.@xC/_Wo˧mߵTjgwMEQY] W 7ftidyr/data/construction.rda0000644000176200001440000000125113460363326015545 0ustar liggesusersBZh91AY&SYLp@@AvS~z@@@@@@@G4Xl%6e?SԞ=CFOI4h j\ʜ8kn/6]qþ,@n$K}tC$]WWfΤnG "'2rKP%'p?t^@ky ~)ݕPt@ *wuKWh=gLJRO$ kK\r*Q+1@(J(RtJ;!E=B"u´@HΎG9zTY5̓dVo7Nc׉]eV`@UAT #鳛 -5ɤ^,T˘Fhx?n@B2h8ɰ$IF vIgKgOOmoMEd`ՌwE^b@$H _;&Ի!KgAl 2{R(FdU*E-6pIb}^Z}2Zt#Z dꢈ Aw&'"C'7 XXԯZAu.v;tsn5a7S;.p Ṥtidyr/data/population.rdata0000644000176200001440000004216513437754024015546 0ustar liggesusers}w@ضBSpP E{QA=V] .{Ҭ$E+)l!.k?0#-̒6GW|Gr2ɼO4/>/Ig~H܏C"-$4I?1^Ѽ퇶ib &K>LEVRʇ|Y xZ |h#ሦB*="W%DLW UTU$)A RƫAJTU[w|כ)R%)ɒ{WsTs_Y"YIdIL)#QT)μ3w8Kj9Q$ޏ+|eYReO}˓y*9 Wdɳ<\q[z_r4EP_Za#~if~__aB3CEҌ\A,Pq\)O~LɅ!yRg*TTJG=ޏ CeL*Kf{: UKIZ)i-*#jrUz8^{м$E2WyJ4E&M*y埦ä9 S\!Q. J027]wKcR?ȿ'^A&)OV 0yg$Rx0L-uNL -NJ-KS*\OSDa "iڔ\E__#O+4EV( \ fk: V=(0o׵yZȔ4?IS&j\ь* )eobiBØEMTM7O.ɡ TK3e/UdȾim*UdI8K{y4'~bIo oLؼlOU6)3d[C?]U˒Q.om~ȳRY_(eR'?i)el틷Z/]x/.߾(ʒz.j̫Q֦:c$4ov vz$ٯ@XufIUy<ڤ,[VGN"Sg jwV'z;e*I47(̔|/?O߾';\\[OHJ <]Im@ˏC_?h.$iR hqa#G)Q8Aqi3g)Q@qk|,>c~7֟e=X|,>c9cX|,>cX|,>cbם|,>cX|,>֟)֟e=Xuc,*cX|,>y=XJ $M.&Vlu_Im&}?^qFd|dz`!YliH7 'lئ^k8lӆupz3_ʄ}yn r]dY](x"WҤb~9oHZ"vyI=KjI|IpB_F⿸(T3{U5Z\]pgpCf,W8JpbpF~glp8k3pBuiz({weY(=Ը#cJeq'&PrJb܉8c,˜C0L˩iu1`Ka;K13 t0按ASk떀X2/bau?,ʹR U`_ v[=58Hpvজ.ɞ_@7:/Bv >[mzA =zD ].ǰ1GQbcP03Uxa ^vufva+h{;Q'څ}|nAҎ5m!ڵv}xz_/@t=ҶCm95'Pa g#aQ۠QlUq9 Lp[CN؃UA#0Y ta(q 1S{oC7~T7t[@&8mC/\F/܋?F{Dh8:p?4+>)=5 a3 +4F e0|S0=J19q4{ƚ[a9oʺRD.nީ>*ZK}U=ӱo40p^D#dF0%5|qSOynB:@8C" @,?@S E-w2 @:p;ܦqҶ$z6b, 8{!X  FAaw7zF H > $zoၼ6;܅ܴPu Z"d;B뉘w[꣢6U&P gE칩C8q睪que;܉]ǒ6x ] H͑䫅FzB$2M}.ʲ/1@цSbU%19:@ha3t{AAk " 2}6C?"i1D鹓Cϡm cEkf>VBe DmQz|c߼8xx]q8Ξ,\iDž FB$\SƝ~x /}{HZ}B \'MCu.qV#k+IQKS2l':wٻIHOڑSiɹfr|rC(yd6U6rąȫ\5 :`Z@'Ic^XEp%|"4#Z^5nh'!V5EfL1HA=# OAz$ml!W%tvG'Qb@ dFO)A La{Ni Okl!2[Q'DC&CmDK L>x^cqx2{20g_seT혾0e?-cg|>ìlZ989{?"ûeBsDrh9v  3'2YπZz8*fC^ԭC=3+\b;4wj`!WrhlZ*-l"8Fǣl38׍˼p묎zuۚ xLqmosib E91TuA6|/Jk0ڞQl"PidsIp]L-7F܃֯_mەhW0'guΑ|q^wp\ۋCdx8iƜÇa0DP& j`U|\L%ӱ Cl7 SM%Jp.?׿|Շo|.g>$o}x/z^K ڠbd,t)YX$EsxKĒT,&`ir,yX%K=?`y:֭%mN"t07t&ZZЊ1֔,h]#꤬G%Q|u5Qj~mVH==AGM &Б/nj)1.fth㘾nt㑘vVn8 c7y f3嘣&Ü(_xsHh.$⅐t"zUNI9Be3I D$#4ч(O*IRwޒH /"cf2%5ٓ251[CCɽ+3/Kfj{沒[}XԛlG%>3-.–Į}ԓ}0q0' C=l4y_ JQk Q9Ft7cD/4dBeKĆD}wO:4tzP_ ! 3ht~"CfLPAs_A39hEOzO: -)hT_74Iq.KQCb4A'u}>>C0@A}0:&bD37cJ`<WV`5|BlL?Wa8d~lmZ='Jq8?FǸC׭q3ܛWG) ̬>;I s{Ez=-pDzsMU38\@1\M̊ ߃hnB_Wэۜ};wK:A\Lt`_ G^!Hz(jĬ}H ]۠蚯D=­!|"wemm)DҶb]ރY Ԝ^sPy YiPt m,1>kvU[8́pmn}xރo[`2BD7cbt,KCP[QԻ F/F3k /9?.9m}7y }5%^u;&ގrny1l [NŮWgO|`8g1rMnk xy` ΐq Aiqz.4ދH.Ќͤ~΄* =NA|:4{BZH LB]@"=?p9~?#": DĨƈ Z)#rmD5+EԈ;ѭ=M`=#L^)پZEC[D~촉lI+vфLv:즢fҾ쮓-gGz1ƍ+џ< vyoZZ=pֿsޜI5j4wk` I#p6uv~p:9 ]]=Лz? 4_h W~4`m]ho`LnXzϚC.kFhС sKp>ШaaQCjVBgV @!Z8h>g#iM=oxo;In3{;ý;`{΋:(}zj}մ >}X̽^Vr/mឝKf瞄@͎.Dh&ۈ#4K9FlM?$H:V^$|$b-t}M6 n##ΠLY^kX P1 j`G%Ʈ¤Xث;οW8,jEqX4DEh,,:T \ 409pt(|~:pŞ"rjLmD'm ÷PTx2<Ș cx A&}26HdȌE`\x' i&$N]i~L2& 0ݫ(.SHAsc`T`z}3Ԏyv*f)oan],x}t }X36hb *aO-4158 Zx1#Lz^Lw156U0ts!F_aT cM1d$& vDi[HĜt*MXy8ָ̇NI+;N@C/.~\z{QoAԷEh` i C$4"0 Fp̀hWB#4҇CCe Zj: 4FU4δƃh|9M$h6M>((3El-f}@1& [-_b`8띄oLQ`1Δֿiw= cc=!=/$n5 AZMGb3>T_4 RkTx]\5݈ΘNc=YEΦ(Kz2VwB( Һ0"LZn1Npj&V9<~*neWnɓUa<]Gk CDW\oAL|h&mG؞k,|Ÿ}K]'^ 8*IFɣ gi<P都rq0-̍Ҳ[z[K>Xk>ZiSǢڶN\:Ì-Tsk,livvSt5{.xx&z*XջQ5[Zs\j.v.ƚi՝{17#7cs> fIc$Ɨ< ō>QFd OlDu%*m?rȳS"v$,l%. eHXu; wDz6ut3m={«" r ;1eߌ_ʑhOdtk;:WEJtuxnW i H3Cm"2{h"s(zCn}Leeؔl#\ЏM>*aeoGlV:-ߏ̋-)3b',c83+ns=~0/I'h?z.,RbxXOeJ(,csX5UX[`u1Yu8QF}Qk#0QAFh%Q_NECFL=,:WT2bhs}ѤEgEM [&-MSJkΙy`?7>@1 A{|BO!lM'D(Dfxrtڌ>n,G<݁h@p6e\5=/^H 0Pf0;0kYѴa47MOa9 C0ɃdxHZGN̵I(i6l/ Z2 wiֳ4\p9 <£9<ރQnR߫@Єh ?ÐÃ`Fa4fv{8IxV4> 89+:!I&[Vttx0ND Th 즲Ug \G=?ڤܡg75x+{$#4݌PE*Cm!mDoGh'FîsO@~̘#%UH]fKBK>y%ÖZ8Igh ipi$}}\- D7cв}=؞rlVL=8ZA>~!8Šp OCx jl 6,}& <]O2ܻ%3x-j6&"ΤiP1C,&%vu qA?";X2xSMQ83bD,TOS* }M'`]qXꂳJFݠ^k~iiӮ/Mu!5H{$1q%u YzOjH2uؘ TIwRjދ.=Dj"+TH du6-'lM{\[/p/73[[/][JvhoZn6ha&:<Զ0}sZÂ:X+'Cl]6}N/ŏRܘ {Bzt\v ta;#}@8°B9H3@{^M ,VA8#{C}4o?p8IQEq* ZGGA?\" Mgٲ0s44oh~-l/fLa4|K4F7E1,~eV)΁]hm 5('C-+j9P|[LZQC ,fICևiRPM5XDhAG3E'aXһIJsvYӌ*DCVL*M'o^'Iu{w\(9l09z<9<0\nOnxGIȳބ1E;bH gHM١ejs9e M91I'$Ҕ%W̚e{{'24D ms1/s0G¼꽃y/|^3eJɳX X]:kޕ5>ڜ55mD A#A"ԁ uѸ._N0. '0-8@NS`zf<Vy imHOц""?@p!M&o$8b?Ļei=Iq(!gIgRj|O E&i$s=̮c\dq0o< S5Lr0+Y~̪`6`NvsWap7<ڲOS4<[/0/Cjiݎr&t1>CC% jԚfV07< Bc/k lx>FX'> ?kݙ&nv\uyVm-p3ڨж k{qq <'+`1w>nW+; !S'B:#tY(7k ێ{,:_GYF4OrB+ymRӮŜXnGcmT6}C#Soc[:\]fx1>>CWz^>]'[">.+ ZsJtg #6l+,qxR5sc#A/OL%CXyOcTQ젘LAIRlONAkˁx~}"9F4q:"zt>~!p]gi{s"8J|WxɄY` 60V9~n8tЮ-6 YApy.B#O!S/0u SI LT5M fb4} a/a9ֻ"ak1%Qpj#mj%P%z3xx# ŏ^6D#ZܳjSܽvwRS{1Fi h"/R' 3iHm@0M Bh?JK+ ,oAAAGAۈ7@d_ J:`-ӜEU&l|r:WF® V+' pvp5Y 7"s;^"J@Axh2:B.}R.$r5l>3#u"R÷"}a2JhmK=BgvDxMQs=v9REbmtۅ$!% H;X@܃sHOW)r/)בΤ%J dKdcYd'?9w h$>0?h֚70nKIV#pwPc2Ah#Aҫ"=OAɹũ}ճ .'aB, LծLp&h~&! ,6Nf*61-ŌHS= dhQ3 eObZ:O{0/fzYAu 0{g9œ0g-a#kU}5|Z­* n/--\M0\oMp- ע>p2}!_K@, PjAmsՁh@Йt[j4Z}-i=y ̢N;eۖ3LCf1E̎fL̞әӓw̅to39sSsn5ӕ4^[<31?-Yf6Z=#zuiZKc8Ɇ` 뎃l-89"]d$aDG?.;Бtlp9f"1Hw$0De<#xZE",Ix$lb ۔#! 4R|^dbqtxieF8v}P<\ A\>{ H @RoNI~#/>\9cMz&G|d ZЀ\BDNƈ6_@qv~ht:ѭVyD#DDruD|FAX=qB'8bayR`xI`08m`v}L(d&3B&< &K ^ ad!j*D FCtqvfnd* UrVBe 9FY(A\0=bl7)1m6n֕iR 84m^F3G"ح6cNk<`^]NI\.pOBX`=DƏ rQ ݗY'! ,%A:D[@1lZ2H!Ԃ}IA]&MX;nکAҍ^ tmU iáso9t[mn=51:cGJ0tvo } r6aF }҈գ1%F+kUq`)2ta2i9wla4Ev? (\"G4zh\ rBgP[{vHtpa\gvJ&^WFU Us VG<wIΌ'M磎N?!: ]H7Gryd#t7nP0cn TIPn'ѧvPun*;yE";'|4$]xy {(=ǎg[,du>pcyְf_Fe_job?ֹ~Gv>VжC[aHS 8 Hn0Eۊa$(H!IhH$w!=T}S6uop@g7ɠ]:A9|7݄1m7;f#9B[\Gm<"BtbgGI sX\ igd ϐΝ3Vդ0hJMkebX< ڏsr Eo% @ .) {H 2#z2d|SA&L}Ycik z}f0|A/t4:iB!QL1ʑ;`RևUw~zW_pB4܏Q/ q.QR= b>SGiWLbQ9vf'}2c8ؔ;Rϖ:me+`UWoc ׬'M;?VsjBs8*~QՓ 䆁\t=#z#ڶD u)my+I|ڡAD5O uHSx׀8&N$PH:wIZd.$r#0ƹi[6I$1qCł6x`GذFz^_z8uώê2__cӴ,H5v(CUT-wAՋiY]K:`8xf,gKM-F=94e1 HI,F7$)'>% cLĒD"hpr8SCuMtidyr/data/relig_income.rda0000644000176200001440000000206313460363326015451 0ustar liggesusersBZh91AY&SY/&A ՔGOtAJ\wt'1f^lfNUbCD! (HBn%Ȏ,I S&@z_ ) Un@D#9p 6545&!<j`BJB 6^[͆\LW${!`opĦJGkahX(W|e_D}JDrij (A J-K(xy5.nYWH#x0;X)6಴zp7U—" W"q=P"%,{k(hTޙʃ,|.th:E`eFI?ÑvNiz*AXm&`P k!ws:u aǐe++=ju$l0ZgEoe&g߀@)#54Sk`S,R #i2N vA}ݽ#녢l~$ohwW-qaV?8̩1u 4:!0#({~!k rE8P mtidyr/data/table1.rdata0000644000176200001440000000041213437754024014511 0ustar liggesusers r0b```b`f@$X84[IbRN!0H @PYnǴļ8peLrEeC@=E;*`Rt9qNe3& #3aZM1 %ř\٨A]%Yȓ$ - H*VA\B%HZRYYYBԊ#FE]";)<F1%j0*Qpw%DfKO2NtgOqNU=FsRH^O?{r@3TUTT?pU{%`I?#"m7IATM+NoTIs>qMrd¶Anց=xhB\݆[z2\ܬ_÷Q_ .e ^K5=~\LjF7$  qA#j%B:lʧan(fvuA@[ 6Wqᘕל$<91BC=nۚfNA0 ⅽ;pDgdvs20EV v!txbٳU1LJ寑=f/>yCv4ѵQ߲h^bBoV[܏aG=7K2 1 d.Z7s<vS#5ya2?t2 4qux{_.mP&㜡 ,|흻x*<,E0vd12D_#Sk>l`;FP+ FνX_͓䅓ބq%~m0 kϴr4j5LsL=(JPsPINA$ ju>ZeH(׼/4" ޕ6;v7jzI'0/d٦!RtjSA#D%_ } C$T&EEꒀ& 0=,|C R"eE#X A4p@GJA `ɘ(Z"d" ?Xfq*YU@Nh8"GDɟ7K )AUvb<< t%\YeTnKC"O(.7qn********.\r˗.\r˗.\r˗.\r˗.\r˗.\r˗.x<{ya)IJ)OOO{2QF'qdBw z*c15kQX[\1et<  oFeZ #1NQ 6Dgf~ADAX ADUHU `W}Z L "(@E BR'X&w*:A,EѪT*Hŀ//a X.0)AH-U(<hiWW﷯߬Θ1 `(bE#4O`FG@y<ɌhR~k-P?0וAxP !P(j}߹ږOc #a(]c ,) d90U8DoƝv)%`xT1zZ\9)رQ[!~aJT=뫷SL E߆"b1&Wbu+Fly&m̈(E= ^O׹׈s.؊ ֤qB$0aKHJXSgh,&QRhjB¹̴6vdI%#.\rYɂXjCSSSSSS{?#`'qn>wA>! MMMMMMIpB.\r@ ffffff< :44444.w*M "*GI)tB\HOivzOs'lu0~zL% @x Ix6g9 (IuE(f483dZ)PBQ(&CJ,Djʺ *&rJ@Fyfw%&(,tP(vSBDg *n&p ]UX)3J#;ҁ\=YeBM'0nEy`f`a^+*+$ʰQY h$ECC yia!7p=egL*9$ ݞ9)j#'E J1NuN"-;yxm9,(b8P۰M۴܎kMIavs[沼\vd@"glgJ8p#f%lشʈmEIH(ID26CmZڎ7*1JiYk8Y"mu;2iPRt9%v5JH P%\L NҊ֭J(R$PAYHC,2UCd$I6jVF'UN IraIEr\n-ȔJ"q 3Qc؈+RS):Gh㶚e;mVMƘb&Ж͜IM$M-®Ԣ+,,: .Y2ykܳh)Des%e̍S*I+*iYdɥdJQX+MrmmffEm"ԻpcY-ghp!QrNtN(!TEڵB*ىƲ+7lVȝS8ٱk1geHrfqaӹMkPMA9JA!TTNR,l6Z[v$FukcsrSVl5n+87(رdbVJ͚)hZjХZ&W-F HΉYٞ+KR I*HAG9KYve3G7kga,hQ5%rTq1+ ŃKV۶əI3q 44MӂY,Itr@q:p h3NNe98Rb-DЋfmk#Ynp*T8i"ʈ(',]9g Nk"E\)C #:xͦfMPE{6]ȨFtUZBehC!E:m6i2˝"')ga1kV1ӛZt edZbo2! :T%)R28VГYt9[FvѬrKAv"87,[ tE2Us#-ic %f%ݤtbvndŵj(-ղnNN=r$UjUI)`wo$$̊dj#1#T +s5jfB$3,+mDI ݵ!s4]5Єt89B)pqt!"u~<‰( +&3==%Յ`>Լwm(0+ [pt-jcJ5T&1-Z&@.q_!RB2A@ʍ2Mp@8FBt3r.e ^ +(Z| fGrn,Q]m4uQhB]2(;~le;Hsva&Q9BZvC 26 =p/Z|];_Rϓ7ZrNOHs@1x3 f!i {`G;o'_'.{VHԀ,r\AJ=Ԏg`@Եݕ^0nM?[.txΊj:,*5dR:13ǘl'D N}wM9F|{ӫ+vCd^4Nbl&YE 1*>_&sk2Y`uS1rn-o.4ٴAqzBP鈏`oLc2`ۅ>A**3~̛ i1ʋ6VҸl-ʃ$0HQu_i7B&m$# Lt͡2(N|E+!pB*N\Yқ^ }BF*4%N3rAF(XB1}Tk>,"T$dLrCdޢ'Qa b\#z2ғ=EP~Wu^Ze~ ђUpc ~!~|ʃ+0`E~F(.LI{ z]`/g?T`;9FshnH763ÉL6o~Ɇ/~Amn<=M,؃3NGҺ]&LXPuҜՋoڟ9a]w-MG;cv&OR3JLhٺ}b214-hRTH04H|su,|nk&xV,I@`y!RP@„C6Ef 3,06 i!|#y ;rc ;Y^}U ŋHD4O/OžMʇ&QP H(0>6iZ1[,R][m䚛8LڂLV<A;! & b1 W鸸t1`5}Iڎfq$LG kqM jbM kc{sm}[r"@'U- ~]c,_`_ܓނ x7;u~dF#Td>7^wkb&<_?EKI_1~x0^CMTϏ2O#tߏ?nO_7]yOqR!3 xE9=lYz/Q9p{TAj7b }#v@FyRAM sGsڼOHITٮ<1eӤ)ݳu9?W7T! tA ytAn_jter;:=淵nKU:xt1)TرyѲm-u9!cO{O(=N. *C͍O"-Kv.HӘZ zPev=#2UV_z:;+ ]T`ydj m16x&eͭF qDs1e0n܄[*çShe]<>O,3DR0`9AK`OGzTLgrmDygD?`lu_wgXA=O!syE/:mQpC "y?O3> 58s<%_aوM\ʞ>Y3M.5 L2"{A3ԓ.S_^ؗuo# U"X#rKe]Ix"ñbҡ Q<9V~3.0͉1oc1ΪGprM21@aA7,~[م14nY l%>s'$15CAu9T08?UlىLm(jB& ^YEB'G;z/!ZžT9h-D ׅƒA∬u0#*PUGƞl|3-lZ"5B0VE1JDp$Ou^> B(2[.dj4RScGEd/w6s9g@ 1ZQG h5=IT{/E7P 8,o<̔H\!b)ӣK)N$ ubp2MRPJKYXAk!:ad gN &@$\E+pZ'cv^0^.NM,vWVtUx.2Mˀ&U)^E;*L.x-T3(єUDZ0JIp[N!Fa'.ԑQvp,VRatNƤeKM^vg!ȖݧBqڕ֌I$ C@ֳiJ&B8Rj^/%2nMYcxҼi; l7xLMU*:hal%FV jaJʯTQvZwAȝ% ӔUҡ=883!8ɸr$8yX6Bqܹǖ8'8'FpppB) tPTwI;tKJL#iȂ)qS%)i [BE]$9RJgI2eikD,ɵCE"ZaQ`#2:д;XvL`aL"eGmc.0)CN"aMI#l 0T T(ΔhYĈ)1U"Ie) 8 SNS*c.$q Mv5ʸ(:Vn:5[ M;mZpGE]v]wEUh19fbPf8car85$˲782;cƜ.¬ [m v$\`\aC v] ]uGgubwuGGEgugI]UG]t]Gq\\uPӱSv ;lb@' usx졧bq)aq`.Ӄm8 8@28QpQH$"$"#".2.$Smi .q8l] \e 6Se\e0 bv1J֑GlvSapm]]uuR( 2 PY(( cVCU6Ɠ(N,#AQ2J3N WYC9F@4"`+*r`l#JX  Pa(aa~9sk2dLŝKâщ8}6S7ܾ<οWVfEӔ'үlIC.H#ܪ=tY,0X $Zc?x NWIYfj|'> ;|~ L?.YBm$m/WAYqw\+\7X֖._EWke:a8Oe'e] 8yvV7s]/\FNNDv8h".eҭұyL 4߲c׊tz.q#CԦu6\pVSq&k"by O-x3QӴvk e^{oxq(u*ォSpY{/[]&[}tkLtìiL۲ine 3֍/La|aӉq hvFӫ5ymu Z촨=5ssnp?7lߪnxVa:+#\{k*)q^>cҍ]:?w?](+֜k8Ҹf/]wxmNke^oN1`W{q/0a=ҋv=83ҸcMN;j%ǣS+:*}{gK鮹em6^3m|axC<ߎU\% unite("z", x:y, remove = FALSE) # To remove missing values: df \%>\% unite("z", x:y, na.rm = TRUE, remove = FALSE) # Separate is almost the complement of unite df \%>\% unite("xy", x:y) \%>\% separate(xy, c("x", "y")) # (but note `x` and `y` contain now "NA" not NA) } \seealso{ \code{\link[=separate]{separate()}}, the complement. } tidyr/man/expand.Rd0000644000176200001440000000721213612143254013731 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/expand.R \name{expand} \alias{expand} \alias{crossing} \alias{nesting} \title{Expand data frame to include all combinations of values} \usage{ expand(data, ...) crossing(...) nesting(...) } \arguments{ \item{data}{A data frame.} \item{...}{Specification of columns to expand. Columns can be atomic vectors or lists. To find all unique combinations of x, y and z, including those not found in the data, supply each variable as a separate argument. To find only the combinations that occur in the data, use nest: \code{expand(df, nesting(x, y, z))}. You can combine the two forms. For example, \code{expand(df, nesting(school_id, student_id), date)} would produce a row for every student for each date. For factors, the full set of levels (not just those that appear in the data) are used. For continuous variables, you may need to fill in values that don't appear in the data: to do so use expressions like \code{year = 2010:2020} or \verb{year = \link{full_seq}(year,1)}. Length-zero (empty) elements are automatically dropped.} } \description{ \code{expand()} is often useful in conjunction with \code{left_join()} if you want to convert implicit missing values to explicit missing values. Or you can use it in conjunction with \code{anti_join()} to figure out which combinations are missing. } \details{ \code{crossing()} is a wrapper around \code{\link[=expand_grid]{expand_grid()}} that deduplicates and sorts each input. \code{nesting()} is the complement to \code{crossing()}: it only keeps combinations of values that appear in the data. } \examples{ library(dplyr) # All possible combinations of vs & cyl, even those that aren't # present in the data expand(mtcars, vs, cyl) # Only combinations of vs and cyl that appear in the data expand(mtcars, nesting(vs, cyl)) # Implicit missings --------------------------------------------------------- df <- tibble( year = c(2010, 2010, 2010, 2010, 2012, 2012, 2012), qtr = c( 1, 2, 3, 4, 1, 2, 3), return = rnorm(7) ) df \%>\% expand(year, qtr) df \%>\% expand(year = 2010:2012, qtr) df \%>\% expand(year = full_seq(year, 1), qtr) df \%>\% complete(year = full_seq(year, 1), qtr) # Nesting ------------------------------------------------------------------- # Each person was given one of two treatments, repeated three times # But some of the replications haven't happened yet, so we have # incomplete data: experiment <- tibble( name = rep(c("Alex", "Robert", "Sam"), c(3, 2, 1)), trt = rep(c("a", "b", "a"), c(3, 2, 1)), rep = c(1, 2, 3, 1, 2, 1), measurement_1 = runif(6), measurement_2 = runif(6) ) # We can figure out the complete set of data with expand() # Each person only gets one treatment, so we nest name and trt together: all <- experiment \%>\% expand(nesting(name, trt), rep) all # We can use anti_join to figure out which observations are missing all \%>\% anti_join(experiment) # And use right_join to add in the appropriate missing values to the # original data experiment \%>\% right_join(all) # Or use the complete() short-hand experiment \%>\% complete(nesting(name, trt), rep) # Generate all combinations with expand(): formulas <- list( formula1 = Sepal.Length ~ Sepal.Width, formula2 = Sepal.Length ~ Sepal.Width + Petal.Width, formula3 = Sepal.Length ~ Sepal.Width + Petal.Width + Petal.Length ) data <- split(iris, iris$Species) crossing(formula = formulas, data) } \seealso{ \code{\link[=complete]{complete()}} for a common application of \code{expand}: completing a data frame with missing combinations. \code{\link[=expand_grid]{expand_grid()}} is low-level that doesn't deduplicate or sort values. } tidyr/man/fill.Rd0000644000176200001440000000221013467623677013415 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/fill.R \name{fill} \alias{fill} \title{Fill in missing values with previous or next value} \usage{ fill(data, ..., .direction = c("down", "up", "downup", "updown")) } \arguments{ \item{data}{A data frame.} \item{...}{A selection of columns. If empty, nothing happens. You can supply bare variable names, select all variables between \code{x} and \code{z} with \code{x:z}, exclude \code{y} with \code{-y}. For more selection options, see the \code{\link[dplyr:select]{dplyr::select()}} documentation.} \item{.direction}{Direction in which to fill missing values. Currently either "down" (the default), "up", "downup" (i.e. first down and then up) or "updown" (first up and then down).} } \description{ Fills missing values in selected columns using the next or previous entry. This is useful in the common output format where values are not repeated, and are only recorded when they change. } \details{ Missing values are replaced in atomic vectors; \code{NULL}s are replaced in lists. } \examples{ df <- data.frame(Month = 1:12, Year = c(2000, rep(NA, 11))) df \%>\% fill(Year) } tidyr/man/nest.Rd0000644000176200001440000001507213612143254013426 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nest.R \name{nest} \alias{nest} \alias{unnest} \title{Nest and unnest} \usage{ nest(.data, ..., .key = deprecated()) unnest( data, cols, ..., keep_empty = FALSE, ptype = NULL, names_sep = NULL, names_repair = "check_unique", .drop = deprecated(), .id = deprecated(), .sep = deprecated(), .preserve = deprecated() ) } \arguments{ \item{.data}{A data frame.} \item{...}{Name-variable pairs of the form \code{new_col = c(col1, col2, col3)}, that describe how you wish to nest existing columns into new columns. The right hand side can be any expression supported by tidyselect. \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: previously you could write \code{df \%>\% nest(x, y, z)} and \code{df \%>\% unnest(x, y, z)}. Convert to \code{df \%>\% nest(data = c(x, y, z))}. and \code{df \%>\% unnest(c(x, y, z))}. If you previously created new variable in \code{unnest()} you'll now need to do it explicitly with \code{mutate()}. Convert \code{df \%>\% unnest(y = fun(x, y, z))} to \code{df \%>\% mutate(y = fun(x, y, z)) \%>\% unnest(y)}.} \item{.key}{\Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: No longer needed because of the new \code{new_col = c(col1, col2, col3)} syntax.} \item{data}{A data frame.} \item{cols}{Names of columns to unnest. If you \code{unnest()} multiple columns, parallel entries must compatible sizes, i.e. they're either equal or length 1 (following the standard tidyverse recycling rules).} \item{keep_empty}{By default, you get one row of output for each element of the list your unchopping/unnesting. This means that if there's a size-0 element (like \code{NULL} or an empty data frame), that entire row will be dropped from the output. If you want to preserve all rows, use \code{keep_empty = TRUE} to replace size-0 elements with a single row of missing values.} \item{ptype}{Optionally, supply a data frame prototype for the output \code{cols}, overriding the default that will be guessed from the combination of individual values.} \item{names_sep}{If \code{NULL}, the default, the names of new columns will come directly from the inner data frame. If a string, the names of the new columns will be formed by pasting together the outer column name with the inner names, separated by \code{names_sep}.} \item{names_repair}{Used to check that output data frame has valid names. Must be one of the following options: \itemize{ \item "minimal": no name repair or checks, beyond basic existence, \item "unique": make sure names are unique and not empty, \item "check_unique": (the default), no name repair, but check they are unique, \item "universal": make the names unique and syntactic \item a function: apply custom name repair. \item \link{tidyr_legacy}: use the name repair from tidyr 0.8. \item a formula: a purrr-style anonymous function (see \code{\link[rlang:as_function]{rlang::as_function()}}) } See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more details on these terms and the strategies used to enforce them.} \item{.drop, .preserve}{\Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: all list-columns are now preserved; If there are any that you don't want in the output use \code{select()} to remove them prior to unnesting.} \item{.id}{\Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: convert \code{df \%>\% unnest(x, .id = "id")} to \verb{df \%>\% mutate(id = names(x)) \%>\% unnest(x))}.} \item{.sep}{\Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: use \code{names_sep} instead.} } \description{ Nesting creates a list-column of data frames; unnesting flattens it back out into regular columns. Nesting is implicitly a summarising operation: you get one row for each group defined by the non-nested columns. This is useful in conjunction with other summaries that work with whole datasets, most notably models. Learn more in \code{vignette("nest")}. } \section{New syntax}{ tidyr 1.0.0 introduced a new syntax for \code{nest()} and \code{unnest()} that's designed to be more similar to other functions. Converting to the new syntax should be straightforward (guided by the message you'll recieve) but if you just need to run an old analysis, you can easily revert to the previous behaviour using \code{\link[=nest_legacy]{nest_legacy()}} and \code{\link[=unnest_legacy]{unnest_legacy()}} as follows:\preformatted{library(tidyr) nest <- nest_legacy unnest <- unnest_legacy } } \section{Grouped data frames}{ \code{df \%>\% nest(x, y)} specifies the columns to be nested; i.e. the columns that will appear in the inner data frame. Alternatively, you can \code{nest()} a grouped data frame created by \code{\link[dplyr:group_by]{dplyr::group_by()}}. The grouping variables remain in the outer data frame and the others are nested. The result preserves the grouping of the input. Variables supplied to \code{nest()} will override grouping variables so that \code{df \%>\% group_by(x, y) \%>\% nest(z)} will be equivalent to \code{df \%>\% nest(z)}. } \examples{ df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1) # Note that we get one row of output for each unique combination of # non-nested variables df \%>\% nest(data = c(y, z)) # chop does something similar, but retains individual columns df \%>\% chop(c(y, z)) # use tidyselect syntax and helpers, just like in dplyr::select() df \%>\% nest(data = one_of("y", "z")) iris \%>\% nest(data = -Species) nest_vars <- names(iris)[1:4] iris \%>\% nest(data = one_of(nest_vars)) iris \%>\% nest(petal = starts_with("Petal"), sepal = starts_with("Sepal")) iris \%>\% nest(width = contains("Width"), length = contains("Length")) # Nesting a grouped data frame nests all variables apart from the group vars library(dplyr) fish_encounters \%>\% group_by(fish) \%>\% nest() # Nesting is often useful for creating per group models mtcars \%>\% group_by(cyl) \%>\% nest() \%>\% mutate(models = lapply(data, function(df) lm(mpg ~ wt, data = df))) # unnest() is primarily designed to work with lists of data frames df <- tibble( x = 1:3, y = list( NULL, tibble(a = 1, b = 2), tibble(a = 1:3, b = 3:1) ) ) df \%>\% unnest(y) df \%>\% unnest(y, keep_empty = TRUE) # If you have lists of lists, or lists of atomic vectors, instead # see hoist(), unnest_wider(), and unnest_longer() #' # You can unnest multiple columns simultaneously df <- tibble( a = list(c("a", "b"), "c"), b = list(1:2, 3), c = c(11, 22) ) df \%>\% unnest(c(a, b)) # Compare with unnesting one column at a time, which generates # the Cartesian product df \%>\% unnest(a) \%>\% unnest(b) } tidyr/man/fish_encounters.Rd0000644000176200001440000000154413440014105015641 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{fish_encounters} \alias{fish_encounters} \title{Fish encounters} \format{A dataset with variables: \describe{ \item{fish}{Fish identifier} \item{station}{Measurement station} \item{seen}{Was the fish seen? (1 if yes, and true for all rows)} }} \source{ Dataset provided by Myfanwy Johnston; more details at \url{https://fishsciences.github.io/post/visualizing-fish-encounter-histories/} } \usage{ fish_encounters } \description{ Information about fish swimming down a river: each station represents an autonomous monitor that records if a tagged fish was seen at that location. Fish travel in one direction (migrating downstream). Information about misses is just as important as hits, but is not directly recorded in this form of the data. } \keyword{datasets} tidyr/man/separate_rows.Rd0000644000176200001440000000457413612143254015340 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/separate-rows.R \name{separate_rows} \alias{separate_rows} \title{Separate a collapsed column into multiple rows} \usage{ separate_rows(data, ..., sep = "[^[:alnum:].]+", convert = FALSE) } \arguments{ \item{data}{A data frame.} \item{...}{A selection of columns. If empty, nothing happens. You can supply bare variable names, select all variables between \code{x} and \code{z} with \code{x:z}, exclude \code{y} with \code{-y}. For more selection options, see the \code{\link[dplyr:select]{dplyr::select()}} documentation.} \item{sep}{Separator delimiting collapsed values.} \item{convert}{If \code{TRUE} will automatically run \code{\link[=type.convert]{type.convert()}} on the key column. This is useful if the column types are actually numeric, integer, or logical.} } \description{ If a variable contains observations with multiple delimited values, this separates the values and places each one in its own row. } \section{Rules for selection}{ Arguments for selecting columns are passed to \code{\link[tidyselect:vars_select]{tidyselect::vars_select()}} and are treated specially. Unlike other verbs, selecting functions make a strict distinction between data expressions and context expressions. \itemize{ \item A data expression is either a bare name like \code{x} or an expression like \code{x:y} or \code{c(x, y)}. In a data expression, you can only refer to columns from the data frame. \item Everything else is a context expression in which you can only refer to objects that you have defined with \verb{<-}. } For instance, \code{col1:col3} is a data expression that refers to data columns, while \code{seq(start, end)} is a context expression that refers to objects from the contexts. If you really need to refer to contextual objects from a data expression, you can unquote them with the tidy eval operator \verb{!!}. This operator evaluates its argument in the context and inlines the result in the surrounding function call. For instance, \code{c(x, !! x)} selects the \code{x} column within the data frame and the column referred to by the object \code{x} defined in the context (which can contain either a column name as string or a column position). } \examples{ df <- data.frame( x = 1:3, y = c("a", "d,e,f", "g,h"), z = c("1", "2,3,4", "5,6"), stringsAsFactors = FALSE ) separate_rows(df, y, z, convert = TRUE) } tidyr/man/relig_income.Rd0000644000176200001440000000106613612143254015107 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{relig_income} \alias{relig_income} \title{Pew religion and income survey} \format{A dataset with variables: \describe{ \item{religion}{Name of religion} \item{\verb{<$10k}-\verb{Don\\'t know/refused}}{Number of respondees with income range in column name} }} \source{ Downloaded from \url{https://www.pewforum.org/religious-landscape-study/} (downloaded November 2009) } \usage{ relig_income } \description{ Pew religion and income survey } \keyword{datasets} tidyr/man/construction.Rd0000644000176200001440000000131713612143254015204 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{construction} \alias{construction} \title{Completed construction in the US in 2018} \format{A dataset with variables: \describe{ \item{Year,Month}{Record date} \item{\verb{1 unit}, \verb{2 to 4 units}, \verb{5 units or mote}}{Number of completed units of each size} \item{Northeast,Midwest,South,West}{Number of completed units in each region} }} \source{ Completions of "New Residential Construction" found in Table 5 at \url{https://www.census.gov/construction/nrc/xls/newresconst.xls} (downloaded March 2019) } \usage{ construction } \description{ Completed construction in the US in 2018 } \keyword{datasets} tidyr/man/full_seq.Rd0000644000176200001440000000124313467623315014273 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/seq.R \name{full_seq} \alias{full_seq} \title{Create the full sequence of values in a vector} \usage{ full_seq(x, period, tol = 1e-06) } \arguments{ \item{x}{A numeric vector.} \item{period}{Gap between each observation. The existing data will be checked to ensure that it is actually of this periodicity.} \item{tol}{Numerical tolerance for checking periodicity.} } \description{ This is useful if you want to fill in missing values that should have been observed but weren't. For example, \code{full_seq(c(1, 2, 4, 6), 1)} will return \code{1:6}. } \examples{ full_seq(c(1, 2, 4, 5, 10), 1) } tidyr/man/drop_na.Rd0000644000176200001440000000370013612143254014072 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/drop-na.R \name{drop_na} \alias{drop_na} \title{Drop rows containing missing values} \usage{ drop_na(data, ...) } \arguments{ \item{data}{A data frame.} \item{...}{A selection of columns. If empty, all variables are selected. You can supply bare variable names, select all variables between x and z with \code{x:z}, exclude y with \code{-y}. For more options, see the \code{\link[dplyr:select]{dplyr::select()}} documentation. See also the section on selection rules below.} } \description{ Drop rows containing missing values } \section{Rules for selection}{ Arguments for selecting columns are passed to \code{\link[tidyselect:vars_select]{tidyselect::vars_select()}} and are treated specially. Unlike other verbs, selecting functions make a strict distinction between data expressions and context expressions. \itemize{ \item A data expression is either a bare name like \code{x} or an expression like \code{x:y} or \code{c(x, y)}. In a data expression, you can only refer to columns from the data frame. \item Everything else is a context expression in which you can only refer to objects that you have defined with \verb{<-}. } For instance, \code{col1:col3} is a data expression that refers to data columns, while \code{seq(start, end)} is a context expression that refers to objects from the contexts. If you really need to refer to contextual objects from a data expression, you can unquote them with the tidy eval operator \verb{!!}. This operator evaluates its argument in the context and inlines the result in the surrounding function call. For instance, \code{c(x, !! x)} selects the \code{x} column within the data frame and the column referred to by the object \code{x} defined in the context (which can contain either a column name as string or a column position). } \examples{ library(dplyr) df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b")) df \%>\% drop_na() df \%>\% drop_na(x) } tidyr/man/chop.Rd0000644000176200001440000000541113535547520013412 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/chop.R \name{chop} \alias{chop} \alias{unchop} \title{Chop and unchop} \usage{ chop(data, cols) unchop(data, cols, keep_empty = FALSE, ptype = NULL) } \arguments{ \item{data}{A data frame.} \item{cols}{Column to chop or unchop (automatically quoted). This should be a list-column containing generalised vectors (e.g. any mix of \code{NULL}s, atomic vector, S3 vectors, a lists, or data frames).} \item{keep_empty}{By default, you get one row of output for each element of the list your unchopping/unnesting. This means that if there's a size-0 element (like \code{NULL} or an empty data frame), that entire row will be dropped from the output. If you want to preserve all rows, use \code{keep_empty = TRUE} to replace size-0 elements with a single row of missing values.} \item{ptype}{Optionally, supply a data frame prototype for the output \code{cols}, overriding the default that will be guessed from the combination of individual values.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} Chopping and unchopping preserve the width of a data frame, changing its length. \code{chop()} makes \code{df} shorter by converting rows within each group into list-columns. \code{unchop()} makes \code{df} longer by expanding list-columns so that each element of the list-column gets its own row in the output. } \details{ Generally, unchopping is more useful than chopping because it simplifies a complex data structure, and \code{\link[=nest]{nest()}}ing is usually more appropriate that \code{chop()}ing` since it better preserves the connections between observations. } \examples{ # Chop ============================================================== df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1) # Note that we get one row of output for each unique combination of # non-chopped variables df \%>\% chop(c(y, z)) # cf nest df \%>\% nest(data = c(y, z)) # Unchop ============================================================ df <- tibble(x = 1:4, y = list(integer(), 1L, 1:2, 1:3)) df \%>\% unchop(y) df \%>\% unchop(y, keep_empty = TRUE) # Incompatible types ------------------------------------------------- # If the list-col contains types that can not be natively df <- tibble(x = 1:2, y = list("1", 1:3)) try(df \%>\% unchop(y)) df \%>\% unchop(y, ptype = tibble(y = integer())) df \%>\% unchop(y, ptype = tibble(y = character())) df \%>\% unchop(y, ptype = tibble(y = list())) # Unchopping data frames ----------------------------------------------------- # Unchopping a list-col of data frames must generate a df-col because # unchop leaves the column names unchanged df <- tibble(x = 1:3, y = list(NULL, tibble(x = 1), tibble(y = 1:2))) df \%>\% unchop(y) df \%>\% unchop(y, keep_empty = TRUE) } tidyr/man/extract.Rd0000644000176200001440000000341313612143254014123 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/extract.R \name{extract} \alias{extract} \title{Extract a character column into multiple columns using regular expression groups} \usage{ extract( data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ... ) } \arguments{ \item{data}{A data frame.} \item{col}{Column name or position. This is passed to \code{\link[tidyselect:vars_pull]{tidyselect::vars_pull()}}. This argument is passed by expression and supports \link[rlang:quasiquotation]{quasiquotation} (you can unquote column names or column positions).} \item{into}{Names of new variables to create as character vector. Use \code{NA} to omit the variable in the output.} \item{regex}{a regular expression used to extract the desired values. There should be one group (defined by \verb{()}) for each element of \code{into}.} \item{remove}{If \code{TRUE}, remove input column from output data frame.} \item{convert}{If \code{TRUE}, will run \code{\link[=type.convert]{type.convert()}} with \code{as.is = TRUE} on new columns. This is useful if the component columns are integer, numeric or logical. NB: this will cause string \code{"NA"}s to be converted to \code{NA}s.} \item{...}{Additional arguments passed on to methods.} } \description{ Given a regular expression with capturing groups, \code{extract()} turns each group into a new column. If the groups don't match, or the input is NA, the output will be NA. } \examples{ df <- data.frame(x = c(NA, "a-b", "a-d", "b-c", "d-e")) df \%>\% extract(x, "A") df \%>\% extract(x, c("A", "B"), "([[:alnum:]]+)-([[:alnum:]]+)") # If no match, NA: df \%>\% extract(x, c("A", "B"), "([a-d]+)-([a-d]+)") } \seealso{ \code{\link[=separate]{separate()}} to split up by a separator. } tidyr/man/pivot_longer.Rd0000644000176200001440000001053613612143254015164 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pivot-long.R \name{pivot_longer} \alias{pivot_longer} \title{Pivot data from wide to long} \usage{ pivot_longer( data, cols, names_to = "name", names_prefix = NULL, names_sep = NULL, names_pattern = NULL, names_ptypes = list(), names_repair = "check_unique", values_to = "value", values_drop_na = FALSE, values_ptypes = list() ) } \arguments{ \item{data}{A data frame to pivot.} \item{cols}{Columns to pivot into longer format. This takes a tidyselect specification.} \item{names_to}{A string specifying the name of the column to create from the data stored in the column names of \code{data}. Can be a character vector, creating multiple columns, if \code{names_sep} or \code{names_pattern} is provided.} \item{names_prefix}{A regular expression used to remove matching text from the start of each variable name.} \item{names_sep, names_pattern}{If \code{names_to} contains multiple values, these arguments control how the column name is broken up. \code{names_sep} takes the same specification as \code{\link[=separate]{separate()}}, and can either be a numeric vector (specifying positions to break on), or a single string (specifying a regular expression to split on). \code{names_pattern} takes the same specification as \code{\link[=extract]{extract()}}, a regular expression containing matching groups (\verb{()}). If these arguments does not give you enough control, use \code{pivot_longer_spec()} to create a spec object and process manually as needed.} \item{names_ptypes, values_ptypes}{A list of of column name-prototype pairs. A prototype (or ptype for short) is a zero-length vector (like \code{integer()} or \code{numeric()}) that defines the type, class, and attributes of a vector. If not specified, the type of the columns generated from \code{names_to} will be character, and the type of the variables generated from \code{values_to} will be the common type of the input columns used to generate them.} \item{names_repair}{What happen if the output has invalid column names? The default, \code{"check_unique"} is to error if the columns are duplicated. Use \code{"minimal"} to allow duplicates in the output, or \code{"unique"} to de-duplicated by adding numeric suffixes. See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more options.} \item{values_to}{A string specifying the name of the column to create from the data stored in cell values. If \code{names_to} is a character containing the special \code{.value} sentinel, this value will be ignored, and the name of the value column will be derived from part of the existing column names.} \item{values_drop_na}{If \code{TRUE}, will drop rows that contain only \code{NA}s in the \code{value_to} column. This effectively converts explicit missing values to implicit missing values, and should generally be used only when missing values in \code{data} were created by its structure.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} \code{pivot_longer()} "lengthens" data, increasing the number of rows and decreasing the number of columns. The inverse transformation is \code{\link[=pivot_wider]{pivot_wider()}} Learn more in \code{vignette("pivot")}. } \details{ \code{pivot_longer()} is an updated approach to \code{\link[=gather]{gather()}}, designed to be both simpler to use and to handle more use cases. We recomend you use \code{pivot_longer()} for new code; \code{gather()} isn't going away but is no longer under active development. } \examples{ # See vignette("pivot") for examples and explanation # Simplest case where column names are character data relig_income relig_income \%>\% pivot_longer(-religion, names_to = "income", values_to = "count") # Slightly more complex case where columns have common prefix, # and missing missings are structural so should be dropped. billboard billboard \%>\% pivot_longer( cols = starts_with("wk"), names_to = "week", names_prefix = "wk", values_to = "rank", values_drop_na = TRUE ) # Multiple variables stored in colum names who \%>\% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", values_to = "count" ) # Multiple observations per row anscombe anscombe \%>\% pivot_longer(everything(), names_to = c(".value", "set"), names_pattern = "(.)(.)" ) } tidyr/man/us_rent_income.Rd0000644000176200001440000000110613612143204015452 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{us_rent_income} \alias{us_rent_income} \title{US rent and income data} \format{A dataset with variables: \describe{ \item{GEOID}{FIP state identifier} \item{NAME}{Name of state} \item{variable}{Variable name: income = median yearly income, rent = median monthly rent} \item{estimate}{Estimated value} \item{moe}{90\% margin of error} }} \usage{ us_rent_income } \description{ Captured from the 2017 American Community Survey using the tidycensus package. } \keyword{datasets} tidyr/man/complete.Rd0000644000176200001440000000366113612143254014266 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/complete.R \name{complete} \alias{complete} \title{Complete a data frame with missing combinations of data} \usage{ complete(data, ..., fill = list()) } \arguments{ \item{data}{A data frame.} \item{...}{Specification of columns to expand. Columns can be atomic vectors or lists. To find all unique combinations of x, y and z, including those not found in the data, supply each variable as a separate argument. To find only the combinations that occur in the data, use nest: \code{expand(df, nesting(x, y, z))}. You can combine the two forms. For example, \code{expand(df, nesting(school_id, student_id), date)} would produce a row for every student for each date. For factors, the full set of levels (not just those that appear in the data) are used. For continuous variables, you may need to fill in values that don't appear in the data: to do so use expressions like \code{year = 2010:2020} or \verb{year = \link{full_seq}(year,1)}. Length-zero (empty) elements are automatically dropped.} \item{fill}{A named list that for each variable supplies a single value to use instead of \code{NA} for missing combinations.} } \description{ Turns implicit missing values into explicit missing values. This is a wrapper around \code{\link[=expand]{expand()}}, \code{\link[dplyr:left_join]{dplyr::left_join()}} and \code{\link[=replace_na]{replace_na()}} that's useful for completing missing combinations of data. } \details{ If you supply \code{fill}, these values will also replace existing explicit missing values in the data set. } \examples{ library(dplyr, warn.conflicts = FALSE) df <- tibble( group = c(1:2, 1), item_id = c(1:2, 2), item_name = c("a", "b", "b"), value1 = 1:3, value2 = 4:6 ) df \%>\% complete(group, nesting(item_id, item_name)) # You can also choose to fill in missing values df \%>\% complete(group, nesting(item_id, item_name), fill = list(value1 = 0)) } tidyr/man/who.Rd0000644000176200001440000000255213534721255013257 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{who} \alias{who} \alias{population} \title{World Health Organization TB data} \format{A dataset with the variables \describe{ \item{country}{Country name} \item{iso2, iso3}{2 & 3 letter ISO country codes} \item{year}{Year} \item{new_sp_m014 - new_rel_f65}{Counts of new TB cases recorded by group. Column names encode three variables that describe the group (see details).} }} \source{ \url{https://www.who.int/tb/country/data/download/en/} } \usage{ who population } \description{ A subset of data from the World Health Organization Global Tuberculosis Report, and accompanying global populations. } \details{ The data uses the original codes given by the World Health Organization. The column names for columns five through 60 are made by combining \code{new_} to a code for method of diagnosis (\code{rel} = relapse, \code{sn} = negative pulmonary smear, \code{sp} = positive pulmonary smear, \code{ep} = extrapulmonary) to a code for gender (\code{f} = female, \code{m} = male) to a code for age group (\code{014} = 0-14 yrs of age, \code{1524} = 15-24 years of age, \code{2534} = 25 to 34 years of age, \code{3544} = 35 to 44 years of age, \code{4554} = 45 to 54 years of age, \code{5564} = 55 to 64 years of age, \code{65} = 65 years of age or older). } \keyword{datasets} tidyr/man/world_bank_pop.Rd0000644000176200001440000000130213440014105015433 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{world_bank_pop} \alias{world_bank_pop} \title{Population data from the world bank} \format{A dataset with variables: \describe{ \item{country}{Three letter country code} \item{indicator}{Indicator name: \code{SP.POP.GROW} = population growth, \code{SP.POP.TOTL} = total population, \code{SP.URB.GROW} = urban population growth, \code{SP.URB.TOTL} = total urban population} \item{2000-2018}{Value for each year} }} \source{ Dataset from the World Bank data bank: \url{https://data.worldbank.org} } \usage{ world_bank_pop } \description{ Data about population from the World Bank. } \keyword{datasets} tidyr/man/replace_na.Rd0000644000176200001440000000240013437754024014545 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/replace_na.R \name{replace_na} \alias{replace_na} \title{Replace missing values} \usage{ replace_na(data, replace, ...) } \arguments{ \item{data}{A data frame or vector.} \item{replace}{If \code{data} is a data frame, a named list giving the value to replace \code{NA} with for each column. If \code{data} is a vector, a single value used for replacement.} \item{...}{Additional arguments for methods. Currently unused.} } \value{ If \code{data} is a data frame, returns a data frame. If \code{data} is a vector, returns a vector of class determined by the union of \code{data} and \code{replace}. } \description{ Replace missing values } \examples{ library(dplyr) df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b"), z = list(1:5, NULL, 10:20)) df \%>\% replace_na(list(x = 0, y = "unknown")) df \%>\% mutate(x = replace_na(x, 0)) # NULL are the list-col equivalent of NAs df \%>\% replace_na(list(z = list(5))) df$x \%>\% replace_na(0) df$y \%>\% replace_na("unknown") } \seealso{ \code{\link[dplyr]{na_if}} to replace specified values with a \code{NA}. \code{\link[dplyr]{coalesce}} to replace missing values with a specified value. \code{\link[dplyr]{recode}} to more generally replace values. } tidyr/man/pivot_longer_spec.Rd0000644000176200001440000001074013612143254016173 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pivot-long.R \name{pivot_longer_spec} \alias{pivot_longer_spec} \alias{build_longer_spec} \title{Pivot data from wide to long using a spec} \usage{ pivot_longer_spec( data, spec, names_repair = "check_unique", values_drop_na = FALSE, values_ptypes = list() ) build_longer_spec( data, cols, names_to = "name", values_to = "value", names_prefix = NULL, names_sep = NULL, names_pattern = NULL, names_ptypes = NULL ) } \arguments{ \item{data}{A data frame to pivot.} \item{spec}{A specification data frame. This is useful for more complex pivots because it gives you greater control on how metadata stored in the column names turns into columns in the result. Must be a data frame containing character \code{.name} and \code{.value} columns.} \item{names_repair}{What happen if the output has invalid column names? The default, \code{"check_unique"} is to error if the columns are duplicated. Use \code{"minimal"} to allow duplicates in the output, or \code{"unique"} to de-duplicated by adding numeric suffixes. See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more options.} \item{values_drop_na}{If \code{TRUE}, will drop rows that contain only \code{NA}s in the \code{value_to} column. This effectively converts explicit missing values to implicit missing values, and should generally be used only when missing values in \code{data} were created by its structure.} \item{values_ptypes}{A list of of column name-prototype pairs. A prototype (or ptype for short) is a zero-length vector (like \code{integer()} or \code{numeric()}) that defines the type, class, and attributes of a vector. If not specified, the type of the columns generated from \code{names_to} will be character, and the type of the variables generated from \code{values_to} will be the common type of the input columns used to generate them.} \item{cols}{Columns to pivot into longer format. This takes a tidyselect specification.} \item{names_to}{A string specifying the name of the column to create from the data stored in the column names of \code{data}. Can be a character vector, creating multiple columns, if \code{names_sep} or \code{names_pattern} is provided.} \item{values_to}{A string specifying the name of the column to create from the data stored in cell values. If \code{names_to} is a character containing the special \code{.value} sentinel, this value will be ignored, and the name of the value column will be derived from part of the existing column names.} \item{names_prefix}{A regular expression used to remove matching text from the start of each variable name.} \item{names_sep}{If \code{names_to} contains multiple values, these arguments control how the column name is broken up. \code{names_sep} takes the same specification as \code{\link[=separate]{separate()}}, and can either be a numeric vector (specifying positions to break on), or a single string (specifying a regular expression to split on). \code{names_pattern} takes the same specification as \code{\link[=extract]{extract()}}, a regular expression containing matching groups (\verb{()}). If these arguments does not give you enough control, use \code{pivot_longer_spec()} to create a spec object and process manually as needed.} \item{names_pattern}{If \code{names_to} contains multiple values, these arguments control how the column name is broken up. \code{names_sep} takes the same specification as \code{\link[=separate]{separate()}}, and can either be a numeric vector (specifying positions to break on), or a single string (specifying a regular expression to split on). \code{names_pattern} takes the same specification as \code{\link[=extract]{extract()}}, a regular expression containing matching groups (\verb{()}). If these arguments does not give you enough control, use \code{pivot_longer_spec()} to create a spec object and process manually as needed.} \item{names_ptypes}{A list of of column name-prototype pairs. A prototype (or ptype for short) is a zero-length vector (like \code{integer()} or \code{numeric()}) that defines the type, class, and attributes of a vector. If not specified, the type of the columns generated from \code{names_to} will be character, and the type of the variables generated from \code{values_to} will be the common type of the input columns used to generate them.} } \description{ This is a low level interface to pivotting, inspired by the cdata package, that allows you to describe pivotting with a data frame. } \keyword{internal} tidyr/man/deprecated-se.Rd0000644000176200001440000001231013612143254015152 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/dep-lazyeval.R \name{deprecated-se} \alias{deprecated-se} \alias{complete_} \alias{drop_na_} \alias{expand_} \alias{crossing_} \alias{nesting_} \alias{extract_} \alias{fill_} \alias{gather_} \alias{nest_} \alias{separate_rows_} \alias{separate_} \alias{spread_} \alias{unite_} \alias{unnest_} \title{Deprecated SE versions of main verbs} \usage{ complete_(data, cols, fill = list(), ...) drop_na_(data, vars) expand_(data, dots, ...) crossing_(x) nesting_(x) extract_( data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ... ) fill_(data, fill_cols, .direction = c("down", "up")) gather_( data, key_col, value_col, gather_cols, na.rm = FALSE, convert = FALSE, factor_key = FALSE ) nest_(...) separate_rows_(data, cols, sep = "[^[:alnum:].]+", convert = FALSE) separate_( data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ... ) spread_( data, key_col, value_col, fill = NA, convert = FALSE, drop = TRUE, sep = NULL ) unite_(data, col, from, sep = "_", remove = TRUE) unnest_(...) } \arguments{ \item{data}{A data frame} \item{fill}{A named list that for each variable supplies a single value to use instead of \code{NA} for missing combinations.} \item{...}{Specification of columns to expand. Columns can be atomic vectors or lists. To find all unique combinations of x, y and z, including those not found in the data, supply each variable as a separate argument. To find only the combinations that occur in the data, use nest: \code{expand(df, nesting(x, y, z))}. You can combine the two forms. For example, \code{expand(df, nesting(school_id, student_id), date)} would produce a row for every student for each date. For factors, the full set of levels (not just those that appear in the data) are used. For continuous variables, you may need to fill in values that don't appear in the data: to do so use expressions like \code{year = 2010:2020} or \verb{year = \link{full_seq}(year,1)}. Length-zero (empty) elements are automatically dropped.} \item{vars, cols, col}{Name of columns.} \item{x}{For \code{nesting_} and \code{crossing_} a list of variables.} \item{into}{Names of new variables to create as character vector. Use \code{NA} to omit the variable in the output.} \item{regex}{a regular expression used to extract the desired values. There should be one group (defined by \verb{()}) for each element of \code{into}.} \item{remove}{If \code{TRUE}, remove input column from output data frame.} \item{convert}{If \code{TRUE}, will run \code{\link[=type.convert]{type.convert()}} with \code{as.is = TRUE} on new columns. This is useful if the component columns are integer, numeric or logical. NB: this will cause string \code{"NA"}s to be converted to \code{NA}s.} \item{fill_cols}{Character vector of column names.} \item{.direction}{Direction in which to fill missing values. Currently either "down" (the default), "up", "downup" (i.e. first down and then up) or "updown" (first up and then down).} \item{key_col, value_col}{Strings giving names of key and value cols.} \item{gather_cols}{Character vector giving column names to be gathered into pair of key-value columns.} \item{na.rm}{If \code{TRUE}, will remove rows from output where the value column is \code{NA}.} \item{factor_key}{If \code{FALSE}, the default, the key values will be stored as a character vector. If \code{TRUE}, will be stored as a factor, which preserves the original ordering of the columns.} \item{sep}{\Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: use \code{names_sep} instead.} \item{extra}{If \code{sep} is a character vector, this controls what happens when there are too many pieces. There are three valid options: \itemize{ \item "warn" (the default): emit a warning and drop extra values. \item "drop": drop any extra values without a warning. \item "merge": only splits at most \code{length(into)} times }} \item{drop}{\Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: all list-columns are now preserved; If there are any that you don't want in the output use \code{select()} to remove them prior to unnesting.} \item{from}{Names of existing columns as character vector} \item{expand_cols}{Character vector of column names to be expanded.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")} tidyr used to offer twin versions of each verb suffixed with an underscore. These versions had standard evaluation (SE) semantics: rather than taking arguments by code, like NSE verbs, they took arguments by value. Their purpose was to make it possible to program with tidyr. However, tidyr now uses tidy evaluation semantics. NSE verbs still capture their arguments, but you can now unquote parts of these arguments. This offers full programmability with NSE verbs. Thus, the underscored versions are now superfluous. Unquoting triggers immediate evaluation of its operand and inlines the result within the captured expression. This result can be a value or an expression to be evaluated later with the rest of the argument. See \code{vignette("programming", "dplyr")} for more information. } \keyword{internal} tidyr/man/pivot_wider_spec.Rd0000644000176200001440000000522513612143254016021 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pivot-wide.R \name{pivot_wider_spec} \alias{pivot_wider_spec} \alias{build_wider_spec} \title{Pivot data from long to wide using a spec} \usage{ pivot_wider_spec( data, spec, names_repair = "check_unique", id_cols = NULL, values_fill = NULL, values_fn = NULL ) build_wider_spec( data, names_from = name, values_from = value, names_prefix = "", names_sep = "_" ) } \arguments{ \item{data}{A data frame to pivot.} \item{names_repair}{What happen if the output has invalid column names? The default, \code{"check_unique"} is to error if the columns are duplicated. Use \code{"minimal"} to allow duplicates in the output, or \code{"unique"} to de-duplicated by adding numeric suffixes. See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more options.} \item{id_cols}{A set of columns that uniquely identifies each observation. Defaults to all columns in \code{data} except for the columns specified in \code{names_from} and \code{values_from}. Typically used when you have additional variables that is directly related.} \item{values_fill}{Optionally, a named list specifying what each \code{value} should be filled in with when missing.} \item{values_fn}{Optionally, a named list providing a function that will be applied to the \code{value} in each cell in the output. You will typically use this when the combination of \code{id_cols} and \code{value} column does not uniquely identify an observation.} \item{names_from}{A pair of arguments describing which column (or columns) to get the name of the output column (\code{name_from}), and which column (or columns) to get the cell values from (\code{values_from}). If \code{values_from} contains multiple values, the value will be added to the front of the output column.} \item{values_from}{A pair of arguments describing which column (or columns) to get the name of the output column (\code{name_from}), and which column (or columns) to get the cell values from (\code{values_from}). If \code{values_from} contains multiple values, the value will be added to the front of the output column.} \item{names_prefix}{String added to the start of every variable name. This is particularly useful if \code{names_from} is a numeric vector and you want to create syntactic variable names.} \item{names_sep}{If \code{names_from} or \code{values_from} contains multiple variables, this will be used to join their values together into a single string to use as a column name.} } \description{ This is a low level interface to pivotting, inspired by the cdata package, that allows you to describe pivotting with a data frame. } \keyword{internal} tidyr/man/tidyr_legacy.Rd0000644000176200001440000000174313473327662015150 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{tidyr_legacy} \alias{tidyr_legacy} \title{Legacy name repair} \usage{ tidyr_legacy(nms, prefix = "V", sep = "") } \arguments{ \item{prefix}{prefix Prefix to use for unnamed column} \item{sep}{Separator to use between name and unique suffix} \item{nm}{Character vector of names} } \description{ Ensures all column names are unique using the approach found in tidyr 0.8.3 are earlier. Only use this function if you want to preserve the naming strategy, otherwise you're better off adopting the new tidyverse standard with \code{name_repair = "universal"} } \examples{ df <- tibble(x = 1:2, y = list(tibble(x = 3:5), tibble(x = 4:7))) # Doesn't work because it would produce a data frame with two # columns called x \dontrun{unnest(df, y)} # The new tidyverse standard: unnest(df, y, names_repair = "universal") # The old tidyr approach unnest(df, y, names_repair = tidyr_legacy) } \keyword{internal} tidyr/man/nest_legacy.Rd0000644000176200001440000000610013612143254014742 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/nest-legacy.R \name{nest_legacy} \alias{nest_legacy} \alias{unnest_legacy} \title{Legacy versions of \code{nest()} and \code{unnest()}} \usage{ nest_legacy(data, ..., .key = "data") unnest_legacy(data, ..., .drop = NA, .id = NULL, .sep = NULL, .preserve = NULL) } \arguments{ \item{data}{A data frame.} \item{...}{Specification of columns to unnest. Use bare variable names or functions of variables. If omitted, defaults to all list-cols.} \item{.key}{The name of the new column, as a string or symbol. This argument is passed by expression and supports \link[rlang:quasiquotation]{quasiquotation} (you can unquote strings and symbols). The name is captured from the expression with \code{\link[rlang:ensym]{rlang::ensym()}} (note that this kind of interface where symbols do not represent actual objects is now discouraged in the tidyverse; we support it here for backward compatibility).} \item{.drop}{Should additional list columns be dropped? By default, \code{unnest()} will drop them if unnesting the specified columns requires the rows to be duplicated.} \item{.id}{Data frame identifier - if supplied, will create a new column with name \code{.id}, giving a unique identifier. This is most useful if the list column is named.} \item{.sep}{If non-\code{NULL}, the names of unnested data frame columns will combine the name of the original list-col with the names from the nested data frame, separated by \code{.sep}.} \item{.preserve}{Optionally, list-columns to preserve in the output. These will be duplicated in the same way as atomic vectors. This has \code{\link[dplyr:select]{dplyr::select()}} semantics so you can preserve multiple variables with \code{.preserve = c(x, y)} or \code{.preserve = starts_with("list")}.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("retired")} tidyr 1.0.0 introduced a new syntax for \code{\link[=nest]{nest()}} and \code{\link[=unnest]{unnest()}}. The majority of existing usage should be automatically translated to the new syntax with a warning. However, if you need to quickly roll back to the previous behaviour, these functions provide the previous interface. To make old code work as is, add the following code to the top of your script:\preformatted{library(tidyr) nest <- nest_legacy unnest <- unnest_legacy } } \examples{ # Nest and unnest are inverses df <- data.frame(x = c(1, 1, 2), y = 3:1) df \%>\% nest_legacy(y) df \%>\% nest_legacy(y) \%>\% unnest_legacy() # nesting ------------------------------------------------------------------- as_tibble(iris) \%>\% nest_legacy(-Species) as_tibble(chickwts) \%>\% nest_legacy(weight) # unnesting ----------------------------------------------------------------- df <- tibble( x = 1:2, y = list( tibble(z = 1), tibble(z = 3:4) ) ) df \%>\% unnest_legacy(y) # You can also unnest multiple columns simultaneously df <- tibble( a = list(c("a", "b"), "c"), b = list(1:2, 3), c = c(11, 22) ) df \%>\% unnest_legacy(a, b) # If you omit the column names, it'll unnest all list-cols df \%>\% unnest_legacy() } tidyr/man/smiths.Rd0000644000176200001440000000050413467623315013767 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{smiths} \alias{smiths} \title{Some data about the Smith family} \format{A data frame with 2 rows and 5 columns.} \usage{ smiths } \description{ A small demo dataset describing John and Mary Smith. } \keyword{datasets} tidyr/man/pack.Rd0000644000176200001440000000543013612142023013361 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pack.R \name{pack} \alias{pack} \alias{unpack} \title{Pack and unpack} \usage{ pack(data, ...) unpack(data, cols, names_sep = NULL, names_repair = "check_unique") } \arguments{ \item{data}{A data frame.} \item{...}{Name-variable pairs of the form \code{new_col = c(col1, col2, col3)}, that describe how you wish to pack existing columns into new columns. The right hand side can be any expression supported by tidyselect.} \item{cols}{Name of column that you wish to unpack.} \item{names_sep}{If \code{NULL}, the default, the names of new columns will come directly from the inner data frame. If a string, the names of the new columns will be formed by pasting together the outer column name with the inner names, separated by \code{names_sep}.} \item{names_repair}{Used to check that output data frame has valid names. Must be one of the following options: \itemize{ \item "minimal": no name repair or checks, beyond basic existence, \item "unique": make sure names are unique and not empty, \item "check_unique": (the default), no name repair, but check they are unique, \item "universal": make the names unique and syntactic \item a function: apply custom name repair. \item \link{tidyr_legacy}: use the name repair from tidyr 0.8. \item a formula: a purrr-style anonymous function (see \code{\link[rlang:as_function]{rlang::as_function()}}) } See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more details on these terms and the strategies used to enforce them.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} Packing and unpacking preserve the length of a data frame, changing its width. \code{pack()} makes \code{df} narrow by collapsing a set of columns into a single df-column. \code{unpack()} makes \code{data} wider by expanding df-columns back out into individual columns. } \details{ Generally, unpacking is more useful than packing because it simplifies a complex data structure. Currently, few functions work with df-cols, and they are mostly a curiosity, but seem worth exploring further because they mimic the nested column headers that are so popular in Excel. } \examples{ # Packing ============================================================= # It's not currently clear why you would ever want to pack columns # since few functions work with this sort of data. df <- tibble(x1 = 1:3, x2 = 4:6, x3 = 7:9, y = 1:3) df df \%>\% pack(x = starts_with("x")) df \%>\% pack(x = c(x1, x2, x3), y = y) # Unpacking =========================================================== df <- tibble( x = 1:3, y = tibble(a = 1:3, b = 3:1), z = tibble(X = c("a", "b", "c"), Y = runif(3), Z = c(TRUE, FALSE, NA)) ) df df \%>\% unpack(y) df \%>\% unpack(c(y, z)) df \%>\% unpack(c(y, z), names_sep = "_") } tidyr/man/figures/0000755000176200001440000000000013523107541013625 5ustar liggesuserstidyr/man/figures/lifecycle-defunct.svg0000644000176200001440000000170413523107541017735 0ustar liggesuserslifecyclelifecycledefunctdefunct tidyr/man/figures/lifecycle-maturing.svg0000644000176200001440000000170613523107541020135 0ustar liggesuserslifecyclelifecyclematuringmaturing tidyr/man/figures/logo.png0000644000176200001440000004153413437754024015312 0ustar liggesusersPNG  IHDRX?gAMA a cHRMz&u0`:pQ<bKGD pHYs!7!73XztIME O!BKIDATxwdW}9ʝ4(D kc w}w> ~m" ecA"IЌP49TTuWo:| P$pX'a;+k,) LBDx"%p?pp'PA"pnFOP<Ӡȡ|ZB!P̺~7_v5+AwB\Bw ;U(zzC!w; Fǹ/Edtz;PºV]@2U?9`PȝA(6N{_쫷T<(gOI1n#^]~V=e*>!Msfv<G` BPmBb=m@oJe Fz/[ HLL/1dBvo2]w(6 ._e`Whq@O}c %0 ԚB b> ^>|2[I(N;_A._VO H"gPQ`n7 8dj!2ق݈S|=6kX B7u6cg-S)FLv wd, ! _t]\+,m-#pXg{z=gh4#}Iӟ!)v9WK9\O+жBB7:l~ԟ1>h_[vEbn)%3F,; A4 3Ǯba]`;L,-:x@Bb `C)X;S'-EV5IeZg ˜_`;u/;U !q#\Ͱ)!Mo8Gs1[2syCh[E(*Yg{:._y;6d|DݧYقl,[8-A(-6~e*=q1\@*B4qٶ!m*B_fzc INEӋ9&fӤc[< mU x6 2Wl~C) Yzqf. LmU Ml~~Fګ˄tfb6bC28-nB(`mo!6Uۢ/d HU/l~ H;SUbi|-8(6-c y6?])uu@yer.ùlh[l0NM8F{qnP9ӳif-~=>޶m#uћ_[/e|ѾDCm~Ɗmq4نeΡmh[zob{wU=* 3b`6|خsE7-Jtccl~IDVG٢_al])be &"g2̥ -.-v/`U`2Wm~Ƈ{O`܆S˜].pz6rc2]ꮵ-vkᏻi6mQrn!||!a]k[ f3c Gz艷zclab6RߤKlpSl~!`0cHC=1 iB6Ga![lL4:+lpsm~{{џ bNaŶgb6Kiwj6gsJA,b{0ɞ,w((8gs]ȅE"u6ǹNї|,Kmm[h._kaKE7b7VlCjA3z|+nKbG 6?CIv$ͯX-.噘ˑ-(60Ŏ:knJnI:8qf!ǹ'f K19gjݭnmn/e|8P* ieb\݈̖&fR1c1"87ILTbCT@݃q#lqCZmQrvم2~-~V3m~#QƇ%pr\21gznmwhmWujKF7`']Cx>csz>bARwu@#~\S=j?IBm[\.2P [QlݶŪ4e?80MH##9PR-66MjR?+-]& d6/ʹ%, 鍄lBn9 T_``1bP!݁@`{KE&--Ml~F/vJ6?' &|!m[8PR[mwwmQ@l~ǡ`_0؛0BH'RfbY1Wxe^ж(*{ z7_6`o`4%(a )'CB:F9y*)&Eۢط!}   E̜n{iZB%QNmݐ 'SPpN}m/9%>֡S KV'z*HpV!V;PJG1mϹϳnu m~ x.>[JqOEav}WZIEfs=IVF`|,ƣg?-J%.Ĕ#UME(7nppL[?Ͼxz"ÂbbI1_P-c?Dt;D }Ӷ|\K Iҿ$K;8EY R,<Śz.pnŨ)R&}KC*|4{_6H"1CֿP\LՑ5nT@̄]=ݽ JZWĖoRgS|E爊!j/f Q{= RRR -0 #JΦ%ҊW{k\` IroL79:EYu~-{wJYyE:ѤbbY1S5xZC )|T_ q"PF%L@Z[`r7<:*ƽ\U1>^,F[ Xq3F f#[YxIđxWNj*m ={5!f*Dc`Ca ZKL nmXR~seux.mxO0Gg%3[ `Gp0Ljj(A`dUʗ )aK`+TD6{}#,jws:7q9-NDztn};Ǿ{~^52;K0` Uƒ\bΐ{KR_90f+0LK0.U1ď` Kv"X/b2z1vJ5870h{aF s\-O륤n%C3RjI{\ :KR aF[FQ9+^dCI aD$؏}Xi c Jqdf>.f"SqȥI?H~/GQNWڥ*/+_<-`KLJ80K aI]X7*>5cw|t]#2= q=Uᾏ#&ILO7O,]^C V!ˆNֶ`F}!a=f! ]:`Z`Xu|>JA !`4 :_k_^c&J\WH׷1]GDq u x6"5A.|5!\e)x;xBL%[dꈱБzz QGtkE=uiz\*ZݎMSߖ;K-"ٟ*<7wKJ OS|o1zwé _D}OiI,`]t(Z5%[jWWg:MJɪ^"z|Vr67R(O84RoP׏||Q]ٲnutts\-Y[Y7%/[]?t( ŵNt׽ @&=7\ '`` URk=PR/u=R(寈&BCwYwy3[e7SR(f(;.w= mH>P˔ov7x}[f &B ewݻ\-2;rBɩ" < +Y6Qq*w=um0$95'A̡7c*Jm#T?[g 2RNqjz>XIRP^9ExT>m ,UtLݪm寧讴'a!X*NNCoB yOПDJO{79pT>XՊYm׎u󹋡b djmq%giO̽ A\%/֋*Q -饍eكٴb68>I->A_D(Y0ވ_<iliYˊB*DSW 8[T#-43H3 qX`WLR48t ]&`!`1ِM T!l65P uUP QAQ[/YpnKF/^Z]8OAicAhZ.K[5q!^X8 @ha#qax X"_T.#}<v׶qt&$^떷kH(Az&z>8=+x gùE`5a$") bkג 3 85HL?pvAb0 [5(Eo%zCCwvm0,e!k br^ VقԬڽWp\y/Z>9t,J |ggVHS Ȋp`V){U{ Z񦜙ֆ~f.N,ي (UXEމ?\V;?OH{,JW28|+o0}HϩXO^)H!췁 zϒA.uBoRk@03dpjF$Gg:ق>529VK:)v@7w k^۝-bap`v.+.O~y(XS>; TPMa ^l9| l}[RY+Q)8(x]8O'ajI ->wrGaquUT9:dnؾY[v ڙ%@ XG^)r$D#uY7=Dz׼޷#[ok wΉ{ qEpB(YsKB J^f=än%EX$NWQ_/0ǮB.xg ЭDS3t^g3HE7H+/!h![!e+G@Ο"im1 HFa*-))2&pf@>=}JyRdgBbKJI@. B/eT\߄^i^vɕ<&l N~.d*2ztB/f\p;≵ƁM +0]a0"('Lϣlm[nV~_N~{V c`/Fna>\>K'Lv NH,ck9[)ĞvD4 Ck~q5MN>? Mo=vLO_\05s DWD.{1>D4&J:GsNdfvH{ҥÛyƗ$rˈ\y[A;} I7c]Sɻqݳ"rW\ ׹;Iܟ.]Yd)ptc`|尹̝➸*̕:'PaԐ(sZ/5uln3XlEQDKW^K'(kڅr /HxcFW~=S ?VT) [&Upד[$nb]9rq4Ή{=M)W%rk8O|C/u"$~˯yyG  ѴH5NI+lO {fB?x8%jU\>UO%1x;![r#_,G/ׂHIۈ>{}|n~v73;Ω|{6ѻܬoE/t E'$8k;{ Nk1w>r'|o-kdh:{9U +ߐJ o4:S>.RĀ.~|7އLOU_BPy^RMM=1z֞KKW,=k;O}Ws2ڲ=7b%)o~ݸ?Yofb aғu 'P D%kBIТɅg/Z| !*77Db܈9pSvV ybzX_}`ٳ%`'XMuѫ^; P|V7}bf_W ot^,FKnYs;^4jar KTfmjN,gRil\dJ[_[жZa oֿkxӏ1kХXϾ=7`^snT~ \77ښ!3Yu]Ra}!z/b =c2Du-pwcF:F{r S&kÕ֭@ 8kԅ.8Xdq< 8v˯}ֿ֑H(2R'@e0~cW9z%!q;*쨰O W0܏Ux'qN~ cNzc WiE+rkRƗ c~M]>Š#z3$C{!_~/G7h oކd Ň>G kA 76dTNW B(vfG1+X[J :YڑPJϴ8"K) }N3=¸GO?&ß9@.NuFI_^E>!5w!$kO3"m BЦ V\Fareg~܉z]!PM~rURR%=ޯv \8Ǿ{+x:X]lQ_,/H-p, JjX+Zz_`?-1m8Tn_é-%LΫm ّ(VE7RV?Fg\?7BoD)`aR7g.MڝeH#? wa♮i}] YE*&KkL '@̦Uw=xzF2kv DI1=D|պ/EghB%+vī N4+`>>mBLZ13̷i0w>3Hm<] :LKZ_,t+_ '.7Vd'%ŖD/xǦuOG?,2l€. U&"%s^y\H!!%.V`IMZgy$+*/`i*WRRQH lݽZR,f%2?SMsk!+ɔ~ =]e't+Y'.lQo+ O!JA,Lk)4c2 U6K! g[J1veR^sMY\)o@^+ !A'/EC>,l0W`QnZBav M{QV,_hvWĴg  -(D4Ek3}=9m#}Nz'oyo)2ۨBW ہ(q_Eq`1OnF<aFn'ʧJ-]:!l%8|7a NAUA/"QHS  ]٧[ raH X bKgu=a8 i'ۂ@9y ?"oHeJ?=jo~g:QE! #p;P !yyMYaNqMo&77{߿ E&B !D_ ,}(tb>RCb!p"%zʷN.t;1H%LP\WC^2̈́np GyQ_Ex!i%ѯ㥧k ̔f[{BV JJd<nLJEU*sũvnc/A ,Rhs~s5}o<Լj:x gWdv=xpA .Ul G$ w#i ~mD̀yzx fseETQx|V1 PQW>DbQ1˫sLNTP5H^ga׷] ™e9IU#GIJb.籧`gJ 5P?3' SG}f(%r1*A{ܣۍeץ/}:,9]RrQ w6pV | _#0O{Ppy|{wD ~UX@yΦ%2qnׁqw%Si+{{Aܵ5?:GuP^&gҊ%O/NR ZvϿu`Zݿ ۲LgC Crot ǹ3ߡuy|vJB> !EZOD (=F LL WcH wfXOVL.+sOW(܇zEe6u+_^,4噷s6+ccHtVRZrQaJy7Ҩ!s̴PT=].AΥg3[p%cC?9( ָ(f9ឨnǒئBX5Ua ,I}W#*q'~R"!d&[ݴjުy'/xuؒuB>-?TI^vLlLzݟc{ʧO>,Y__uI2{ˉ%bi;׎zs^LeZ.Z7>~WZ/R0W,c)^A*M&#W+ci[ fg7B0; -sbe\Le[ Bu-Szo={ |x|ЯpԝeE W5-lpO|sI_EU\#C؀:,A9*5W|x:nVֵTXþ*:Ir:le~ŀ!=DYK_ΐ'q{>}es_4*:wypCt@#5y0Pky5łb i3Jdz?0~ "nEN=(k~wxEbrl^q>Sw;O{iY]7>zz#> 5öK5lpN_\2דCegQÒ6)6]Q!p+z|\mi[hJfs WnxD.;v]w\ZcIwp7iq8 mFX1׽U̠<sMnxkGB(@Zv]zĶvtжHU&}.ACD m~".NBƿmSau|vJN%Q1`X$ ¤BDSX{3r,SFYE6|r_ r 2 ߶Rt.3~׼ch?޹܉1Kދ;"1{{" gp6|R|ZEW LöXI2Bh[ 0z0 KCEoD)7 Ϣ,"ߋ?w`󫃶ZEW 6t/NۢBж*B$H?Qczc0/ś~/{$yoJ,p !hﲝl-Ea ^B9o ށs"_ױv]patͯUtˬ-~=l@Io~Ω^}sh?"5{cW l$a.p~ ݽr&,I&im̒!"I TaͿBg0C'ś<HZEKun5"֋&rKq|kMDz%*3ѻoqm~|FaͯUtYuN_E/=S^9,7F+NG+\w0?~?Fr ށ-`4riW xm!0zư?_{p'@<̝9z3,z;kC%޶EUH_+^ؕ?0܈?yChkj*f%z /G4W9RQX+IKga9?0G~x0v0pO݇:B13ٌlz= z/GЫx/B(-Xv*w =rErZb Kesڏѻ ͟$r% s܁4ڶBw0e m~#pzn&< |(BF+AchpB(mhb”m~ww m~$p@öлAh <̺n( |$qP%pmX-6.%pm]?'u% !'csC `K%tEXtdate:create2018-06-06T08:50:26-05:00QE%tEXtdate:modify2017-11-21T00:26:03-06:001 IENDB`tidyr/man/figures/lifecycle-archived.svg0000644000176200001440000000170713523107541020075 0ustar liggesusers lifecyclelifecyclearchivedarchived tidyr/man/figures/lifecycle-soft-deprecated.svg0000644000176200001440000000172613523107541021362 0ustar liggesuserslifecyclelifecyclesoft-deprecatedsoft-deprecated tidyr/man/figures/lifecycle-questioning.svg0000644000176200001440000000171413523107541020653 0ustar liggesuserslifecyclelifecyclequestioningquestioning tidyr/man/figures/lifecycle-stable.svg0000644000176200001440000000167413523107541017565 0ustar liggesuserslifecyclelifecyclestablestable tidyr/man/figures/lifecycle-experimental.svg0000644000176200001440000000171613523107541021005 0ustar liggesuserslifecyclelifecycleexperimentalexperimental tidyr/man/figures/lifecycle-deprecated.svg0000644000176200001440000000171213523107541020404 0ustar liggesuserslifecyclelifecycledeprecateddeprecated tidyr/man/figures/lifecycle-retired.svg0000644000176200001440000000170513523107541017744 0ustar liggesusers lifecyclelifecycleretiredretired tidyr/man/expand_grid.Rd0000644000176200001440000000224613612142023014731 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/expand.R \name{expand_grid} \alias{expand_grid} \title{Create a tibble from all combinations of inputs} \usage{ expand_grid(...) } \arguments{ \item{...}{Name-value pairs. The name will become the column name in the output.} } \value{ A tibble with one column for each input in \code{...}. The output will have one row for each combination of the inputs, i.e. the size be equal to the product of the sizes of the inputs. This implies that if any input has length 0, the output will have zero rows. } \description{ Create a tibble from all combinations of inputs } \section{Compared to \link{expand.grid}}{ \itemize{ \item Varies the first element fastest. \item Never converts strings to factors. \item Does not add any additional attributes. \item Returns a tibble, not a data frame. \item Can expand any generalised vector, including data frames. } } \examples{ expand_grid(x = 1:3, y = 1:2) expand_grid(l1 = letters, l2 = LETTERS) # Can also expand data frames expand_grid(df = data.frame(x = 1:2, y = c(2, 1)), z = 1:3) # And matrices expand_grid(x1 = matrix(1:4, nrow = 2), x2 = matrix(5:8, nrow = 2)) } tidyr/man/reexports.Rd0000644000176200001440000000170613612143254014507 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tidyr.R \docType{import} \name{reexports} \alias{reexports} \alias{tribble} \alias{tibble} \alias{as_tibble} \alias{contains} \alias{select_helpers} \alias{ends_with} \alias{everything} \alias{matches} \alias{num_range} \alias{one_of} \alias{starts_with} \alias{last_col} \title{Objects exported from other packages} \keyword{internal} \description{ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ \item{tibble}{\code{\link[tibble]{as_tibble}}, \code{\link[tibble]{tibble}}, \code{\link[tibble]{tribble}}} \item{tidyselect}{\code{\link[tidyselect]{contains}}, \code{\link[tidyselect]{ends_with}}, \code{\link[tidyselect]{everything}}, \code{\link[tidyselect]{last_col}}, \code{\link[tidyselect]{matches}}, \code{\link[tidyselect]{num_range}}, \code{\link[tidyselect]{one_of}}, \code{\link[tidyselect]{starts_with}}} }} tidyr/man/table1.Rd0000644000176200001440000000211113534721300013610 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{table1} \alias{table1} \alias{table2} \alias{table3} \alias{table4a} \alias{table4b} \alias{table5} \title{Example tabular representations} \format{An object of class \code{tbl_df} (inherits from \code{tbl}, \code{data.frame}) with 6 rows and 4 columns.} \source{ \url{https://www.who.int/tb/country/data/download/en/} } \usage{ table1 table2 table3 table4a table4b table5 } \description{ Data sets that demonstrate multiple ways to layout the same tabular data. } \details{ \code{table1}, \code{table2}, \code{table3}, \code{table4a}, \code{table4b}, and \code{table5} all display the number of TB cases documented by the World Health Organization in Afghanistan, Brazil, and China between 1999 and 2000. The data contains values associated with four variables (country, year, cases, and population), but each table organizes the values in a different layout. The data is a subset of the data contained in the World Health Organization Global Tuberculosis Report } \keyword{datasets} tidyr/man/uncount.Rd0000644000176200001440000000161013460604722014144 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/uncount.R \name{uncount} \alias{uncount} \title{"Uncount" a data frame} \usage{ uncount(data, weights, .remove = TRUE, .id = NULL) } \arguments{ \item{data}{A data frame, tibble, or grouped tibble.} \item{weights}{A vector of weights. Evaluated in the context of \code{data}; supports quasiquotation.} \item{.remove}{If \code{TRUE}, and \code{weights} is a \code{single}} \item{.id}{Supply a string to create a new variable which gives a unique identifier for each created row.} } \description{ Performs the opposite operation to \code{\link[dplyr:count]{dplyr::count()}}, duplicating rows according to a weighting variable (or expression). } \examples{ df <- tibble(x = c("a", "b"), n = c(1, 2)) uncount(df, n) uncount(df, n, .id = "id") # You can also use constants uncount(df, 2) # Or expressions uncount(df, 2 / n) } tidyr/man/hoist.Rd0000644000176200001440000001374313612143254013606 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rectangle.R \name{hoist} \alias{hoist} \alias{unnest_longer} \alias{unnest_wider} \alias{unnest_auto} \title{Rectangle a nested list into a tidy tibble} \usage{ hoist(.data, .col, ..., .remove = TRUE, .simplify = TRUE, .ptype = list()) unnest_longer( data, col, values_to = NULL, indices_to = NULL, indices_include = NULL, names_repair = "check_unique", simplify = TRUE, ptype = list() ) unnest_wider( data, col, names_sep = NULL, simplify = TRUE, names_repair = "check_unique", ptype = list() ) unnest_auto(data, col) } \arguments{ \item{.data, data}{A data frame.} \item{.col, col}{List-column to extract components from.} \item{...}{Components of \code{.col} to turn into columns in the form \code{col_name = "pluck_specification"}. You can pluck by name with a character vector, by position with an integer vector, or with a combination of the two with a list. See \code{\link[purrr:pluck]{purrr::pluck()}} for details.} \item{.remove}{If \code{TRUE}, the default, will remove extracted components from \code{.col}. This ensures that each value lives only in one place.} \item{.simplify}{If \code{TRUE}, will attempt to simplify lists of length-1 vectors to an atomic vector} \item{.ptype}{Optionally, a named list of prototypes declaring the desired output type of each component.} \item{values_to}{Name of column to store vector values. Defaults to \code{col}.} \item{indices_to}{A string giving the name of column which will contain the inner names or position (if not named) of the values. Defaults to \code{col} with \verb{_id} suffix} \item{indices_include}{Add an index column? Defaults to \code{TRUE} when \code{col} has inner names.} \item{names_repair}{Used to check that output data frame has valid names. Must be one of the following options: \itemize{ \item "minimal": no name repair or checks, beyond basic existence, \item "unique": make sure names are unique and not empty, \item "check_unique": (the default), no name repair, but check they are unique, \item "universal": make the names unique and syntactic \item a function: apply custom name repair. \item \link{tidyr_legacy}: use the name repair from tidyr 0.8. \item a formula: a purrr-style anonymous function (see \code{\link[rlang:as_function]{rlang::as_function()}}) } See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more details on these terms and the strategies used to enforce them.} \item{simplify}{If \code{TRUE}, will attempt to simplify lists of length-1 vectors to an atomic vector} \item{ptype}{Optionally, supply a data frame prototype for the output \code{cols}, overriding the default that will be guessed from the combination of individual values.} \item{names_sep}{If \code{NULL}, the default, the names of new columns will come directly from the inner data frame. If a string, the names of the new columns will be formed by pasting together the outer column name with the inner names, separated by \code{names_sep}.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} \code{hoist()}, \code{unnest_longer()}, and \code{unnest_wider()} provide tools for rectangling, collapsing deeply nested lists into regular columns. \code{hoist()} allows you to selectively pull components of a list-column out in to their own top-level columns, using the same syntax as \code{\link[purrr:pluck]{purrr::pluck()}}. \code{unnest_wider()} turns each element of a list-column into a column, and \code{unnest_longer()} turns each element of a list-column into a row. \code{unnest_auto()} picks between \code{unnest_wider()} or \code{unnest_longer()} based heuristics described below. Learn more in \code{vignette("rectangle")}. } \section{Unnest variants}{ The three \code{unnest()} functions differ in how they change the shape of the output data frame: \itemize{ \item \code{unnest_wider()} preserves the rows, but changes the columns. \item \code{unnest_longer()} preserves the columns, but changes the rows \item \code{unnest()} can change both rows and columns. } These principles guide their behaviour when they are called with a non-primary data type. For example, if you \code{unnest_wider()} a list of data frames, the number of rows must be preserved, so each column is turned into a list column of length one. Or if you \code{unnest_longer()} a list of data frame, the number of columns must be preserved so it creates a packed column. I'm not sure how if these behaviours are useful in practice, but they are theoretically pleasing. } \section{\code{unnest_auto()} heuristics}{ \code{unnest_auto()} inspects the inner names of the list-col: \itemize{ \item If all elements are unnamed, it uses \code{unnest_longer()} \item If all elements are named, and there's at least one name in common acros all components, it uses \code{unnest_wider()} \item Otherwise, it falls back to \code{unnest_longer(indices_include = TRUE)}. } } \examples{ df <- tibble( character = c("Toothless", "Dory"), metadata = list( list( species = "dragon", color = "black", films = c( "How to Train Your Dragon", "How to Train Your Dragon 2", "How to Train Your Dragon: The Hidden World" ) ), list( species = "clownfish", color = "blue", films = c("Finding Nemo", "Finding Dory") ) ) ) df # Turn all components of metadata into columns df \%>\% unnest_wider(metadata) # Extract only specified components df \%>\% hoist(metadata, species = "species", first_film = list("films", 1L), third_film = list("films", 3L) ) df \%>\% unnest_wider(metadata) \%>\% unnest_longer(films) # unnest_longer() is useful when each component of the list should # form a row df <- tibble( x = 1:3, y = list(NULL, 1:3, 4:5) ) df \%>\% unnest_longer(y) # Automatically creates names if widening df \%>\% unnest_wider(y) # And similarly if the vectors are named df <- tibble( x = 1:2, y = list(c(a = 1, b = 2), c(a = 10, b = 11, c = 12)) ) df \%>\% unnest_wider(y) df \%>\% unnest_longer(y) } tidyr/man/pipe.Rd0000644000176200001440000000036613437754024013422 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils.R \name{\%>\%} \alias{\%>\%} \title{Pipe operator} \usage{ lhs \%>\% rhs } \description{ See \code{\link[magrittr]{\%>\%}} for more details. } \keyword{internal} tidyr/man/tidyr-package.Rd0000644000176200001440000000225513612143254015200 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/tidyr.R \docType{package} \name{tidyr-package} \alias{tidyr} \alias{tidyr-package} \title{tidyr: Tidy Messy Data} \description{ \if{html}{\figure{logo.png}{options: align='right' alt='logo' width='120'}} Tools to help to create tidy data, where each column is a variable, each row is an observation, and each cell contains a single value. 'tidyr' contains tools for changing the shape (pivoting) and hierarchy (nesting and 'unnesting') of a dataset, turning deeply nested lists into rectangular data frames ('rectangling'), and extracting values out of string columns. It also includes tools for working with missing values (both implicit and explicit). } \seealso{ Useful links: \itemize{ \item \url{https://tidyr.tidyverse.org} \item \url{https://github.com/tidyverse/tidyr} \item Report bugs at \url{https://github.com/tidyverse/tidyr/issues} } } \author{ \strong{Maintainer}: Hadley Wickham \email{hadley@rstudio.com} Authors: \itemize{ \item Lionel Henry \email{lionel@rstudio.com} } Other contributors: \itemize{ \item RStudio [copyright holder] } } \keyword{internal} tidyr/man/billboard.Rd0000644000176200001440000000117513460363326014413 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/data.R \docType{data} \name{billboard} \alias{billboard} \title{Song rankings for billboard top 100 in the year 2000} \format{A dataset with variables: \describe{ \item{artist}{Artist name} \item{track}{Song name}, \item{date.enter}{Date the song entered the top 100} \item{wk1 -- wk76}{Rank of the song in each week after it entered} }} \source{ The "Whitburn" project, \url{https://waxy.org/2008/05/the_whitburn_project/}, (downloaded April 2008) } \usage{ billboard } \description{ Song rankings for billboard top 100 in the year 2000 } \keyword{datasets} tidyr/man/extract_numeric.Rd0000644000176200001440000000056113437754024015656 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/dep-extract.R \name{extract_numeric} \alias{extract_numeric} \title{Extract numeric component of variable.} \usage{ extract_numeric(x) } \arguments{ \item{x}{A character vector (or a factor).} } \description{ DEPRECATED: please use \code{readr::parse_number()} instead. } \keyword{internal} tidyr/man/separate.Rd0000644000176200001440000000752413612143254014264 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/separate.R \name{separate} \alias{separate} \title{Separate a character column into multiple columns using a regular expression separator} \usage{ separate( data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ... ) } \arguments{ \item{data}{A data frame.} \item{col}{Column name or position. This is passed to \code{\link[tidyselect:vars_pull]{tidyselect::vars_pull()}}. This argument is passed by expression and supports \link[rlang:quasiquotation]{quasiquotation} (you can unquote column names or column positions).} \item{into}{Names of new variables to create as character vector. Use \code{NA} to omit the variable in the output.} \item{sep}{Separator between columns. If character, is interpreted as a regular expression. The default value is a regular expression that matches any sequence of non-alphanumeric values. If numeric, interpreted as positions to split at. Positive values start at 1 at the far-left of the string; negative value start at -1 at the far-right of the string. The length of \code{sep} should be one less than \code{into}.} \item{remove}{If \code{TRUE}, remove input column from output data frame.} \item{convert}{If \code{TRUE}, will run \code{\link[=type.convert]{type.convert()}} with \code{as.is = TRUE} on new columns. This is useful if the component columns are integer, numeric or logical. NB: this will cause string \code{"NA"}s to be converted to \code{NA}s.} \item{extra}{If \code{sep} is a character vector, this controls what happens when there are too many pieces. There are three valid options: \itemize{ \item "warn" (the default): emit a warning and drop extra values. \item "drop": drop any extra values without a warning. \item "merge": only splits at most \code{length(into)} times }} \item{fill}{If \code{sep} is a character vector, this controls what happens when there are not enough pieces. There are three valid options: \itemize{ \item "warn" (the default): emit a warning and fill from the right \item "right": fill with missing values on the right \item "left": fill with missing values on the left }} \item{...}{Additional arguments passed on to methods.} } \description{ Given either regular expression or a vector of character positions, \code{separate()} turns a single character column into multiple columns. } \examples{ library(dplyr) df <- data.frame(x = c(NA, "a.b", "a.d", "b.c")) df \%>\% separate(x, c("A", "B")) # If you just want the second variable: df \%>\% separate(x, c(NA, "B")) # If every row doesn't split into the same number of pieces, use # the extra and fill arguments to control what happens df <- data.frame(x = c("a", "a b", "a b c", NA)) df \%>\% separate(x, c("a", "b")) # The same behaviour drops the c but no warnings df \%>\% separate(x, c("a", "b"), extra = "drop", fill = "right") # Another option: df \%>\% separate(x, c("a", "b"), extra = "merge", fill = "left") # Or you can keep all three df \%>\% separate(x, c("a", "b", "c")) # If only want to split specified number of times use extra = "merge" df <- data.frame(x = c("x: 123", "y: error: 7")) df \%>\% separate(x, c("key", "value"), ": ", extra = "merge") # Use regular expressions to separate on multiple characters: df <- data.frame(x = c(NA, "a?b", "a.d", "b:c")) df \%>\% separate(x, c("A","B"), sep = "([\\\\.\\\\?\\\\:])") # convert = TRUE detects column classes df <- data.frame(x = c("a:1", "a:2", "c:4", "d", NA)) df \%>\% separate(x, c("key","value"), ":") \%>\% str df \%>\% separate(x, c("key","value"), ":", convert = TRUE) \%>\% str # Argument col can take quasiquotation to work with strings var <- "x" df \%>\% separate(!!var, c("key","value"), ":") } \seealso{ \code{\link[=unite]{unite()}}, the complement, \code{\link[=extract]{extract()}} which uses regular expression capturing groups. } tidyr/man/gather.Rd0000644000176200001440000001016713612143254013727 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gather.R \name{gather} \alias{gather} \title{Gather columns into key-value pairs} \usage{ gather( data, key = "key", value = "value", ..., na.rm = FALSE, convert = FALSE, factor_key = FALSE ) } \arguments{ \item{data}{A data frame.} \item{key, value}{Names of new key and value columns, as strings or symbols. This argument is passed by expression and supports \link[rlang:quasiquotation]{quasiquotation} (you can unquote strings and symbols). The name is captured from the expression with \code{\link[rlang:ensym]{rlang::ensym()}} (note that this kind of interface where symbols do not represent actual objects is now discouraged in the tidyverse; we support it here for backward compatibility).} \item{...}{A selection of columns. If empty, all variables are selected. You can supply bare variable names, select all variables between x and z with \code{x:z}, exclude y with \code{-y}. For more options, see the \code{\link[dplyr:select]{dplyr::select()}} documentation. See also the section on selection rules below.} \item{na.rm}{If \code{TRUE}, will remove rows from output where the value column is \code{NA}.} \item{convert}{If \code{TRUE} will automatically run \code{\link[=type.convert]{type.convert()}} on the key column. This is useful if the column types are actually numeric, integer, or logical.} \item{factor_key}{If \code{FALSE}, the default, the key values will be stored as a character vector. If \code{TRUE}, will be stored as a factor, which preserves the original ordering of the columns.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("retired")} Development on \code{gather()} is complete, and for new code we recommend switching to \code{pivot_longer()}, which is easier to use, more featureful, and still under active development. \code{df \%>\% gather("key", "value", x, y, z)} is equivalent to \code{df \%>\% pivot_longer(c(x, y, z), names_to = "key", values_to = "value")} See more details in \code{vignette("pivot")}. } \section{Rules for selection}{ Arguments for selecting columns are passed to \code{\link[tidyselect:vars_select]{tidyselect::vars_select()}} and are treated specially. Unlike other verbs, selecting functions make a strict distinction between data expressions and context expressions. \itemize{ \item A data expression is either a bare name like \code{x} or an expression like \code{x:y} or \code{c(x, y)}. In a data expression, you can only refer to columns from the data frame. \item Everything else is a context expression in which you can only refer to objects that you have defined with \verb{<-}. } For instance, \code{col1:col3} is a data expression that refers to data columns, while \code{seq(start, end)} is a context expression that refers to objects from the contexts. If you really need to refer to contextual objects from a data expression, you can unquote them with the tidy eval operator \verb{!!}. This operator evaluates its argument in the context and inlines the result in the surrounding function call. For instance, \code{c(x, !! x)} selects the \code{x} column within the data frame and the column referred to by the object \code{x} defined in the context (which can contain either a column name as string or a column position). } \examples{ library(dplyr) # From https://stackoverflow.com/questions/1181060 stocks <- tibble( time = as.Date('2009-01-01') + 0:9, X = rnorm(10, 0, 1), Y = rnorm(10, 0, 2), Z = rnorm(10, 0, 4) ) gather(stocks, "stock", "price", -time) stocks \%>\% gather("stock", "price", -time) # get first observation for each Species in iris data -- base R mini_iris <- iris[c(1, 51, 101), ] # gather Sepal.Length, Sepal.Width, Petal.Length, Petal.Width gather(mini_iris, key = "flower_att", value = "measurement", Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) # same result but less verbose gather(mini_iris, key = "flower_att", value = "measurement", -Species) # repeat iris example using dplyr and the pipe operator library(dplyr) mini_iris <- iris \%>\% group_by(Species) \%>\% slice(1) mini_iris \%>\% gather(key = "flower_att", value = "measurement", -Species) } tidyr/man/spread.Rd0000644000176200001440000000536313612143254013735 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/spread.R \name{spread} \alias{spread} \title{Spread a key-value pair across multiple columns} \usage{ spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE, sep = NULL) } \arguments{ \item{data}{A data frame.} \item{key, value}{Column names or positions. This is passed to \code{\link[tidyselect:vars_pull]{tidyselect::vars_pull()}}. These arguments are passed by expression and support \link[rlang:quasiquotation]{quasiquotation} (you can unquote column names or column positions).} \item{fill}{If set, missing values will be replaced with this value. Note that there are two types of missingness in the input: explicit missing values (i.e. \code{NA}), and implicit missings, rows that simply aren't present. Both types of missing value will be replaced by \code{fill}.} \item{convert}{If \code{TRUE}, \code{\link[=type.convert]{type.convert()}} with \code{asis = TRUE} will be run on each of the new columns. This is useful if the value column was a mix of variables that was coerced to a string. If the class of the value column was factor or date, note that will not be true of the new columns that are produced, which are coerced to character before type conversion.} \item{drop}{If \code{FALSE}, will keep factor levels that don't appear in the data, filling in missing combinations with \code{fill}.} \item{sep}{If \code{NULL}, the column names will be taken from the values of \code{key} variable. If non-\code{NULL}, the column names will be given by \code{""}.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("retired")} Development on \code{spread()} is complete, and for new code we recommend switching to \code{pivot_wider()}, which is easier to use, more featureful, and still under active development. \code{df \%>\% spread(key, value)} is equivalent to \code{df \%>\% pivot_wider(names_from = key, values_from = value)} See more details in \code{vignette("pivot")}. } \examples{ library(dplyr) stocks <- data.frame( time = as.Date('2009-01-01') + 0:9, X = rnorm(10, 0, 1), Y = rnorm(10, 0, 2), Z = rnorm(10, 0, 4) ) stocksm <- stocks \%>\% gather(stock, price, -time) stocksm \%>\% spread(stock, price) stocksm \%>\% spread(time, price) # Spread and gather are complements df <- data.frame(x = c("a", "b"), y = c(3, 4), z = c(5, 6)) df \%>\% spread(x, y) \%>\% gather("x", "y", a:b, na.rm = TRUE) # Use 'convert = TRUE' to produce variables of mixed type df <- data.frame(row = rep(c(1, 51), each = 3), var = c("Sepal.Length", "Species", "Species_num"), value = c(5.1, "setosa", 1, 7.0, "versicolor", 2)) df \%>\% spread(var, value) \%>\% str df \%>\% spread(var, value, convert = TRUE) \%>\% str } tidyr/man/pivot_wider.Rd0000644000176200001440000000675313612143254015016 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/pivot-wide.R \name{pivot_wider} \alias{pivot_wider} \title{Pivot data from long to wide} \usage{ pivot_wider( data, id_cols = NULL, names_from = name, names_prefix = "", names_sep = "_", names_repair = "check_unique", values_from = value, values_fill = NULL, values_fn = NULL ) } \arguments{ \item{data}{A data frame to pivot.} \item{id_cols}{A set of columns that uniquely identifies each observation. Defaults to all columns in \code{data} except for the columns specified in \code{names_from} and \code{values_from}. Typically used when you have additional variables that is directly related.} \item{names_from, values_from}{A pair of arguments describing which column (or columns) to get the name of the output column (\code{name_from}), and which column (or columns) to get the cell values from (\code{values_from}). If \code{values_from} contains multiple values, the value will be added to the front of the output column.} \item{names_prefix}{String added to the start of every variable name. This is particularly useful if \code{names_from} is a numeric vector and you want to create syntactic variable names.} \item{names_sep}{If \code{names_from} or \code{values_from} contains multiple variables, this will be used to join their values together into a single string to use as a column name.} \item{names_repair}{What happen if the output has invalid column names? The default, \code{"check_unique"} is to error if the columns are duplicated. Use \code{"minimal"} to allow duplicates in the output, or \code{"unique"} to de-duplicated by adding numeric suffixes. See \code{\link[vctrs:vec_as_names]{vctrs::vec_as_names()}} for more options.} \item{values_fill}{Optionally, a named list specifying what each \code{value} should be filled in with when missing.} \item{values_fn}{Optionally, a named list providing a function that will be applied to the \code{value} in each cell in the output. You will typically use this when the combination of \code{id_cols} and \code{value} column does not uniquely identify an observation.} } \description{ \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} \code{pivot_wider()} "widens" data, increasing the number of columns and decreasing the number of rows. The inverse transformation is \code{\link[=pivot_longer]{pivot_longer()}}. Learn more in \code{vignette("pivot")}. } \details{ \code{pivot_wider()} is an updated approach to \code{\link[=spread]{spread()}}, designed to be both simpler to use and to handle more use cases. We recomend you use \code{pivot_wider()} for new code; \code{spread()} isn't going away but is no longer under active development. } \examples{ # See vignette("pivot") for examples and explanation fish_encounters fish_encounters \%>\% pivot_wider(names_from = station, values_from = seen) # Fill in missing values fish_encounters \%>\% pivot_wider( names_from = station, values_from = seen, values_fill = list(seen = 0) ) # Generate column names from multiple variables us_rent_income \%>\% pivot_wider(names_from = variable, values_from = c(estimate, moe)) # Can perform aggregation with values_fn warpbreaks <- as_tibble(warpbreaks[c("wool", "tension", "breaks")]) warpbreaks warpbreaks \%>\% pivot_wider( names_from = wool, values_from = breaks, values_fn = list(breaks = mean) ) } \seealso{ \code{\link[=pivot_wider_spec]{pivot_wider_spec()}} to pivot "by hand" with a data frame that defines a pivotting specification. } tidyr/DESCRIPTION0000644000176200001440000000323013612577552013126 0ustar liggesusersPackage: tidyr Title: Tidy Messy Data Version: 1.0.2 Authors@R: c(person(given = "Hadley", family = "Wickham", role = c("aut", "cre"), email = "hadley@rstudio.com"), person(given = "Lionel", family = "Henry", role = "aut", email = "lionel@rstudio.com"), person(given = "RStudio", role = "cph")) Description: Tools to help to create tidy data, where each column is a variable, each row is an observation, and each cell contains a single value. 'tidyr' contains tools for changing the shape (pivoting) and hierarchy (nesting and 'unnesting') of a dataset, turning deeply nested lists into rectangular data frames ('rectangling'), and extracting values out of string columns. It also includes tools for working with missing values (both implicit and explicit). License: MIT + file LICENSE URL: https://tidyr.tidyverse.org, https://github.com/tidyverse/tidyr BugReports: https://github.com/tidyverse/tidyr/issues Depends: R (>= 3.1) Imports: dplyr (>= 0.8.2), ellipsis (>= 0.1.0), glue, magrittr, purrr, Rcpp, rlang, stringi, tibble (>= 2.1.1), tidyselect (>= 0.2.5), utils, vctrs (>= 0.2.0), lifecycle Suggests: covr, jsonlite, knitr, repurrrsive (>= 1.0.0), rmarkdown, readr, testthat (>= 2.1.0) LinkingTo: Rcpp VignetteBuilder: knitr Encoding: UTF-8 LazyData: true RoxygenNote: 7.0.2 NeedsCompilation: yes Packaged: 2020-01-23 18:01:01 UTC; hadley Author: Hadley Wickham [aut, cre], Lionel Henry [aut], RStudio [cph] Maintainer: Hadley Wickham Repository: CRAN Date/Publication: 2020-01-24 14:30:02 UTC tidyr/build/0000755000176200001440000000000013612357526012516 5ustar liggesuserstidyr/build/vignette.rds0000644000176200001440000000045213612357526015056 0ustar liggesusersn in5 S4Mtn92EdMK.<ѷ$Q5iY8>qhI+P9^ҁN;ՆF.TT5eTSkNIW V4TV> stream xڕWMo6WVuh.M,Eu-PZbd6$T"%G6mw/6yf8`P0ܬ~C8 6Ora8)΃M@0$3'0[M|kQBH< /P8+GDY_-bh&:)N -Jc^d!S\q 2isPa?Q)Q"aEC*$kK -b,B`*C9 ۖKjnO)(QjҧҢ pvJʝjyo욹ZBNSyY$$-c,o nX|(š%YSs=c8FfCTYZvHSnE;ҹW:K?tЎQAN* PX7f~ۧ*E3Uv3Ojfl$AKE90N&ATt0vIq( Ut9W>ƌY q`M^x _rgRH)پdʛ5mUl>6YIIL'O~y|fA d?֏3@?rm{$}{@vJuj8|KA+K(q(KEQRQ[Pr'zRE5ZaOطi$8V<ŕRוWGQGJ^R=F AHh}8?h@\Hd&Tn..!fP <P}N2W`{ {R ^e]v7tדbn9=M ٤LHɁArֳWKTB<꺤9{osik*74oٚ`/blTτl?m8S?7Lj.Ӏ⩊yVee!1 ͧ׀*o>E<`%O. endstream endobj 173 0 obj << /Length 1092 /Filter /FlateDecode >> stream x[o8~߿Gx/ TIu餦B l7l ٮ ^H73x ̂P+!Z[B@(|GN[;֟.(>$|5]^wUܤRtU!mݱ}RqY&UDQhf}3SmywY ЀVfQ3S˳V0VBn!q?e}Ph\ !t;J]u\̨ '-pobs IPd"dUIVnˎc 8v0a7zˉ Fȏʺu!P\$\ {dSR73`/9uE\8YzQQxP$]^&:>m:*ce>1xNJCAXǥ|η8V|DE?3W"Dbfn; VTq t3l^7s懃]L>ωYTRLBwË;US]\>Db~Ls? @e'-PMdZ_WWGG0alWߠ? u$ }/(Jm_X_V_@FQ(;\\Qo0@HTe7̆UnFT}I7b&Ntnx<4PDYo&!(~c} tp̛6οC9F/ endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 800 /Length 1766 /Filter /FlateDecode >> stream xڽYێ6}W1yxh`7ڦ*Gre9ܭ63ùpdYsL I%4RLzaJRLiϔe @Lc] u?b00xft>qnfvƂe*c`-259kÞ3 9慚9żX`Ba[dA 3E84ɢ3e3@F1 &AF&8##qȀS)%gRt J/SyRM3[j3\;MFFK<4_ڴ>K{)HYң lڐ)HIQ nTAπnM!p~BE < iN&\"1#&fta<,ڙD! A |e""4~pfLB82xG!CR!"L",Pjyi "!!6jb HN VܰM͊߭7zs={6{r$<=˿X+}p-y>]fhuKR \77)?ol/ڂCm3_H}c{kJPjQ﫶lvnEp{lD*v?GYHBy*{7;Ϲ׻<_Ul=E`7rr*@x;y|O\uޡ=m_?#Er^&5NyHx/!cQ+f'anڧ?VDnWL pnr~̬nvmJyf9]Xtw$Mv)ʪ=._ߧU}Ol[n^OM -Ҹ=w3+-UYqnobV-Yz,gŋIRYq]}($;oz 꼢;!Πر_VU oS-ݩQ4$ϊuJ[UT[h4kTD-jr@@E*."AߵYi2U{jh_NqnO[P Ph v-S;b;@Z8-\԰Zݔn/w'HO?B5-5^BBtFqHv+<4ҩsA >䊢.t!UnM !i^^ J~Mfl2]PCۍ*:&6.>9MF٬f}6Ylg>٬e}.sY\>e}.cET"|49DK)\x<ܤ>rHϠ.+v rni1H#~Ġ4cЏA`oub)9rqGN& cNo#W#vp92c(!*cN#fCx ]=+3#vSb@牭@ܩ3H1='fF!AXb0)N ˎAPCGLD\w(G >#l'8q 1{ї+F}H~SsU#U[=BD*D=1F/` pHVnr :""1ϵjWmV^1;1x,Z+5}jI΍>0HӗLm6;b=?p}ҽhX#rH3qH,-)$B Am #f endstream endobj 214 0 obj << /Length 1889 /Filter /FlateDecode >> stream xڝXߓ4~" Ep@@8JΜcKnzj%•Ƀײ]}*|qXW^m^Fb<v8ga,҄8eq״?nܼ ܈',MhBrŝjHq\xtGi&kG:bd,OZ|FjeT;>nٕr[)%8Vv|p!I ͷ.-] QF L'v~v)x)jK{F)ˆ-%sXuv־"qz&̍cơi]vA椔[&fnRL\HC9F;L!*Ȗ,d rⷻlW/ڮKVUche"rgf,E5@F'iY[\a0(.)掑œ# Ø%O4 Av_(X Gy ud,2~F)#wJ]regaA)rH,k#,=tMߒX%|*K뢩c$✉t/݅E%aPO&S*e0"C4CJN¬0N[\|'yҜ0Ee/NpF/%eP +zV|x\;u 1 sb?R,lj߫ckkzy慛Z5WFM:x$ *M^u:d)f0aAwv+ Z 5醒14!oa? bڇ2N_H*zJzL@DFM+|?Zu)(0M紣uj5?Чcf?C|ӈ9Qy^ ( {B݄7aC>gHClCG)FlP|g˝c*Ⱦ2h[->&`֊F>Xç%#>Ka 1av 6ְoV+ PQڊ`ʽFU/I]֜X|AUPJ*8s& T @P0Bvʍc&@r=)3QS3TVI[yAM9:]yXT*PKm&Fv 'H_\p빸@L*=h}L3hh{:Vp '·`: S75` RO^'z*rN_lm C EB>.XLW/PQ96q* @ L&!ܧ/P L\ڕ_})C}co7]A{q[^X&YB=N#H Jr8m'K籱$ٴ tj G* =uylBiZ$ Kt}8SF~Ïe/'>i~|/xep!E@ag{@bòķ]I2 W2fA#S$@Ɔ,*C2ָ O6Gqh;)ỵvEދ۫*r endstream endobj 229 0 obj << /Length 1499 /Filter /FlateDecode >> stream xko6С XHJdl)Z:hNɒGr,mxϹv<! ҡG:#gl|ϳ7.|wOpQ'bUfxpQei—w)aq'WFK#=_i7|qSQ?T ĺ#qk&3 ;#R/ XoWvr8lm:l44|8HsLCcw8Cx# ZDLU ܯh5E) y5y&--~"wpP)q+TMoO0 E*nmu&S.,Ix,D#W4$]їyC"1HR}4o䵬 FSQkͭ6Cc#ey%We~cimJ6;د6δnRd6KFy}O]z&"9b0s Vfc}~>9MQyQrwaMnD%luLho)ZwlYwp(UWi֍}rY \& }ڽ Iq˽+};%NT=-,jr_`@~?&S/g/ =n{Ls2qgY'Nx9kupΜ?{BƲ^BBޥI!#qDm_’,PXՈC]͍Vi]^Tk S}B0P,z~MuRَ5އC61x6a[]x)X(MF툁uVڣyShH $#7pvZfzYWzઢFG"v,a1VQf <&Q` tyL0 09Vfj:䲹Hs4 vo5Le&ysĆtKϣ O"Z.LjjQhN> nj L.aDw B,ڝ,1@Lfŵ< t[/`!@4NgJW5څ~#blEڰV?▪)\c> 1/cްnK('SnvtAՓԗ2]A$(9Y>oEnn NRV<)Iƙ αp( BX̬f 7;Ieuâ&.F]EkBo0jyQt1$fݱȮŸn@>=eϽ]˻&t-˪XI !6$"uV2}P~ ѿ endstream endobj 241 0 obj << /Length 1509 /Filter /FlateDecode >> stream xڵWmo6_!d(fLR:kaC`MhBi[,"'w$OdY;lHwϽHCG?]>s7 Y\J <\/wLRUurQN>\:?OB7 h4܁f<™yQX%,cQMfOƫ %4SSMjW]$$k',jE= H)ZFPmR$Oт<8wQd\Kt{ JП pE-64ÐEmn{)9_ڝ7Uu?[ p^GX5>kgs4M(ĵ ׎*.%$"Cmn0O=DO% Fȫ(tC5]}UwO(ӟ:Y>J/mJu mf \A.1nxV^ k۝|K%ئ*Ңe%u!m2S*8238-e5@|ʤ#xm쮛Iֻ]d)rm|C²|Є:O ( twHg5L\jG&7y^$]8-o⦃*͡Kt1>5V$.mDYsb~ pCFzزaZPӪ_dm +$&iwEHH!"r5 ;l~:\ CAQGg]yynw1>Aa跘ǀ9Fo5Hu0H҅t=jS?{ul$R ne~U7PZvD}u%]LCSLg+/fqGXYzg7I;nuiO]xYY_mO0? -tF(A.VMFG>{ @,[]攴[ 7FG{ U?nmEnMAuעq#]8F/GG$m5OB'ێ} ~#=uoXs¹v6PؿЧ0Q80~L[6ݼe!> C0\,ܨ^pU߯G;1׷&{ S7D}on?Z8D/Y]70lo'ұ6^lylԂKgZ 2f92W1(^SjaxrfjAWٶ8tiD#XX7ڐP=O_cEtaRTPT VaC^ZmOBxIXD%|hjʌWS%^]~e6Zg _̗Nw̒V.zKct=g}.MG]E`lԦF\x)kaۛmf^Vi~w`ԍi`Fa) .^UCI{P endstream endobj 254 0 obj << /Length 1783 /Filter /FlateDecode >> stream xڝXmo6_( 1+-tX;M? mQ6k%W~w{Z gy"&QĤJ4X,Ep >篕04gQ˲jJ#Y䤿>zƁ~,8Qoxges* t?w 9G,Q[=>r*`2ui[3i}[I%[Q6?Eqҝ( c͌Gnc}Ԟ'E8MQ#%EM7; fǔ(lMia}C˺mͶ;̒8u -%)4-mƐH`VN3ð9=)nwmyG9>c2y< N-#U~F!Éa0ݝ11iOW+Z]ѭ . 4_}wbRff<rr'U!X*0R^!DYeq < 75BF9t-L1C ,hnOt.Y㾷Cښ+>/a4^bh3KmM; 8SI6FC?ֵ#h0%12j wG7x;M',A _b֬,?,cruM7헧Eϩ`Vctgn5sJ1Ȑd. fC?Te/eD_s,,x!ͮiiC1mm*Z8@3g{U2]q8^ۀx.OBcZ&j,hݻc_Pz6J}w$%,M$':T=CU[,9٩S"1P6a1S*,KD0Dβ,Qj1c/){ ^tؓ̍q] /q{6Oy`*x>\5 왲5DY乭Ŗ${ޭHXqGydW~n$zf 4&"̧(qgrK3wmXd/L!3pt4:zCR)QPP(u!3:R6HC BMq{9UJf6+tZ=P`<3hIZGo?`9mݎe'AN,]Br[;]һY7K߲I5zS2U_wug޵ж:O^^&~ba!r[vN5/?a ܒsz0NQ9#5tK7E[)pcW=ᇨʣ 5MV4q,K`SHqrE *t0HzF)U3}If|?I ­K[1i Vpش@og8;;O/~tak*60u坰hbd%讍OR&Hv?zxч aOj7ҴOx(,*E> stream xڭXYoF~ Pi mEP$AS+ E2<(E{gvvyTapcŝÝ_/~xʓN@3 0wsq.RURl{F;<0p^ n.xy}B1-=&龜ﹳ#^/=8,\syV@cg'Lp( 6HX-^҆b Q }%Y0<'"-YYY4)4%y-ͬ}c1&h;#c~Z& ec0Ԗqÿd0jv "Fm;mF,>tEeҌSaܘm{̊`gKܳ஢%qșZ>BO%fv,!kZXľRN2 dς{څ^4A24)$=(3Sss(d2 vȞ`OwNrՊ/z edӞ}υGR26aFk 5Nb{Z}1k 8\b!h}ZZH1Vi.zLhut漉?R^f;t}ksZLFgP闾T!&!Oe,:lj* nm:nCc:m&4 ቐ yuGt]c:6,ljZPHTwTg^۳'"DU]n u7ƖBGbYN&4p[Hzb˷fDTXj#|$O",5=LJ%FRmUZZ6 v"uǏpۺk{Z@%^#RSH؟eMY(݇rލ$8:vM)K!`jG+4?p= r֓|M"!ciӎ}y0 $`|IU#D{x=Ɓu)n> zc$Uy \5N`txg4 y;a)ӫD NAe2/YaǼO/A/TfUʮS)M F"=е4m"ZYOsK,?*<Ϥ! endstream endobj 282 0 obj << /Length 1179 /Filter /FlateDecode >> stream xڭXnF}WnJHsy4&ZEXI#q ޼~{w4X!3gҾs|"LĹ:0JE{q8W4}" Z $t)4K`%05E:L"QԸBSO.Ꜭ Wwa;ܧlD&.eTx V9~Zz3ůZ.|c`|(.@.]`1֌Q{Z* Gˊr!'wr?P4M"J>5'*~"ny~গ4R4"#HJ8px&yKvD0.d9 3e@Y{k-gU ЄJ0/LWHO`_gv$7{=8XU2ńTN22I5֠B elFwjIgE^f7J=IX'^HK"u@40P"i$0S_.l%H2S98;0>]c-- <#+n1])ԭLxc^O 70|R)Ɲl'd3yUM_M)p՟ ;g2NHi:w1lW+=YOYGy[xY l-]|cV5%nnnq֍%];)筦~XD Lfգ<(w3ȧhnjZmGPc`Pq[q`dƏTiޯP Ȇg3[G N|.F>sӹf85;@(11i~{YÚU#F kvj3&&7$"A{i:blK*cs,-!oW\Nߛk+m\z!'@hJj5;L9Dgb >XC]ԩK[:iUR@ H>?Jzn|Q8 OF}_h{0Rռ9u88po<^.Ó8J@Ŏ63lfn]y~ +]U endstream endobj 290 0 obj << /Length 1334 /Filter /FlateDecode >> stream xڝWKo8WJX!w=d$$X2m %7~/ER -#rf8̓cl\Zή(h,7AFOڹwGB5+?8BqDAbN% .,rS\`wyzvEH,H@A/G(M:;o؞/<h!v,5>ܙ5V+*ͤYbK䕲@IBX JH[Qmd@RT{Z#_fyjeVeRDnFpUO%sr|(r+QqVJ+4ԞBX[ @d~yҔH=2-9}򵹹2 (qnM^Ϝ{ÏVV7ĉ Ayf5 M$W`(-ryy{L=Jok<$7QTRwظ ̐NIV{D|1=gP4ٻ|8qVGy@cF)x'Myr96#!n@qd#vp ?MgźwxbF쟓yHxDq A4p&^ @( PĎ !UJ-|D%;fdW쬒ڷEDO?Z<\6m[0Ϲԋ|u-'g7@i3+p}* ә?:L?9g^orFM\zDn^+N3vQH<C'D9!ڦWJ|ˌF{&u%ghf'K 907A{b]>IvH7FC}ۊe5}ٖ9($?DITu9f|ˇe?|CŇI'>^~> stream xXYoF~ׯ Th) M'@p&WdxV}gvvyH-7Ca\1;73k4~#`gyl3|dmױq37Ns44}SQvBXX>Nҹr٦ىo.>94|ɼ%щ:bӛ^x;ZbC!tnw2nz̔~?H:ٽ(րs459F8OcF6$*!Q }P$]q$|gSȍ}~NS* g8 j *vE-t26, cEB5Ew[qQ !F0,D D6V:."G%9"kZ0TX6[c]_anӻP_"kuegoSuG Bz}>_:3Q610u8,'w9ו=|;†}S .n>7jIM*,b6iMHzSl/L=!C2乬^zP-N5HXfkX޲+d]JpȉSB7R5 endstream endobj 207 0 obj << /Type /ObjStm /N 100 /First 876 /Length 1911 /Filter /FlateDecode >> stream xYn7}fxN  cc+;3%}NH.3RK3Jdϐd"RqQ";q(Ū(w8)hsx*)T%*x2StD\%+Q辠kfkA2* QPHg'b $G@#Z)bFw cl-"WT@qP `*#丟1~U[(Xf.%M!ǥ"P0[!XaJBWQj V\TJb2*SF scЏIIHXNlAX0ϊ-DH``V`^'3*ZNf58Q{NP& C0`ؑFf4F PN[B%Y8M4XWVbLabZ00V[vr d=a_Z*ZJdlƕQdʈ+f:P@lkHf$_:bb˶s 9J_gk^ut9jޭ~Y87jOAߛ>P0j oUV4`k޹oS׼v/fO}!i]Q(SHPHɛ8$p5p9vFܑk:,b`dqB)aA1?@`~Voݲ_7pxgXHЋOLo,H\ޔ76jΛ暷߸}{to[lΨn[bMlONO]oZ՛(BTl]M]{ [`pIFb7Z&Cqtezk_vEһ"š{cn^#4ӮyG{y-l|O4Aϧ_V|m^K:#&pqh(_;ߵ-XKC"ނ pka` =zM0PYF5 lM_W [\hgYkLhAZBf*JRigdя(#[3R (g[i&_ץ?ZMo?1]2CR,}ټMmϪv3\&pp,He>m;ھ듵}[XVQ`v$I}vnZO/[,57Eӵgvѿxf!}U|s}270\ױWA]q4"< l4U}pLH"ޮOdOi 7~3]z7q]wHܕ#<ꤐog$RRvn>cq.I(!/N皝0Dx+5/ 5#vݔ 380"aXUTE 0| m!&*N Sz 92Lm}ʑq l1"a9Ḫֽ>C-=S*Hh+gv΃y-7&h'NOY3攇{oI 24yp6p7a`3u -g "i lsFxSNTS<ӵ(4ܔcݴpy0Kp5]Cɷ=\Jk!Ŋj q>Sf2?-7yRa^ɮ79`$Wа&#2sP8xe w91*Xo}Yc~?Jj_Oپ_b#=1$L>¼ Ħ't9=j&[-Π1Zxϩ 쾴/'o endstream endobj 320 0 obj << /Length 1363 /Filter /FlateDecode >> stream xڵWY6~KPXѼtmz mEl6EM,$uCT]6I眚ofmg?^F%*3EW`Ϣ<(e4ZGoS{/ڕ[#:=w|q!p(Wfˁn/'4{0XRR"N#Zv;Oh9Mvn҉}]ڭd돍j*4+:ؙHDlJ_~#@)QKm4&PB cckqWw}F1 ]x7$86q2tU#_wn 焞&g+KB1kw^>kB`9~V{0!i9d#Ì-XRٛw8Z!G,p8 uj.`1dIAb9e7( =EeABT\y#9´K,,D,QJFU'FkKQ]S E\-Uo74Z+C qC'bw{ej#!]Т5szZը7i0ʌG <:R(XJc#:٥[X̱*Oh=d;7cqVhd$/d`jNCީeٺ3 7YKPΙ4Hq#pnxO&,ӦUc,b$ NȤ6q2PSjgiwdW[;i4 1/Yi`*,oʹ~p2;OcuwQ7ϭC:Dmf}a/B䓥Z8H;.}PTJ/vUccUs\P /'6f6.Is|h}7]ld:Ի;+C(zA>k9`/ofHyoXF:nlƗGN_5DT_|wTrhL-ܑ=A/щ slPM& Gpv1 cBfœ3z2Q""O0}מ9Uyv)G%=oj+>^tR¨z" Ʒmi6 endstream endobj 339 0 obj << /Length 2058 /Filter /FlateDecode >> stream xڭX4EtR*y/+ЁNnҤv{=3;mT~7c;rn[޼|+aICk\aZQ2>.Vzq$:jfآ8YM $m}W\t;Y`}{ɹpcDi|`QȒnqtݓ $jZ(>5'pRsE86׭@"Í ':oꌃJw7t >YA-Y>8=և_/@bwq C:7Sm_m TE+rN<>.EiE ,JWO`Ma(Sl:cHNzAJ^nG^vjgAdc!qp6 FIJI7FgF`(t+mQf4";`Vgz(z[st `|seG>OEUn^d?LXf\!wp>6GR4{T5F]UkiRc}"efh'\܈lJ g^Cqoɞo>oO- !ȒfJ0sʹ8#"wc)Yb'O&PbR&rfϑPUե+5+&P\ʆWOB P=T/+1IYpͅ4T`پ9VUѰP3,UE*iAh|ً:#Tk4B5~_սYbXGը0½Snȃ/11 FTDžO4G1 /46 XԗO_&^|T*(xӢ4G:9,gljTT,84Dbωu (uc6R12Y}{K D"%zJdKMEkA-0G@ݡ(5 0)p:z(ynބWowSn]}P NHTBNvk[#_sTx'%w/ixehov9=u׋H^ֵ3g0HI|ǁL uUxOTD:!AgP B(Lܾ(pb?0 ށ#8d޼ >WyxkwҰ6ׇ࿹E⤷x ܙ:+Z乧Or6XG1,UO0Ӏ\s^%hI5ȭ^ 6# F.0>r5gwsá<_بbeiFW&/SoUgti/meny7YE[ endstream endobj 350 0 obj << /Length 1870 /Filter /FlateDecode >> stream xڽXoB (J].F A^\ᰒs#WgfgH2m\y汒⇛7Q8Ev:Jfi"Ef.EnvFGH*f s),e.yF[JΗa,yuC/-u58۶^:#V$Ĭrhl9vb^(ta-c)A^ZH%Z-+kH3Tev{O:K"ҴD" N㲤?8qJE&4VʴcY#gBʬ=cՄ\-E㘏-\PD]=[Uҧ8෩wykh3,3%XbRe9-% ٲDyybyMb%9z\!bDկ|7CYًQtR{RPBB쓌ez iv1X8AR8ePPmqӼd:RIcdтPJPEBέ&6na3 Bl>?RggJ]do?`#rhxQvNӕ%TD|>eiipmՊnd4UzUP}>[eՉ^Bܷh,N W1mc!8^ &fKЛ[R86VRcW=ʓg =4M}64B Y`_g_[BY7xpLDP sJ>=&Dtʚ&a&: &1X﹀:8noâzc;#q򖘁>>J_6, `XAkx<Ί3r`+)q *aNF;kT }o ΆK N}4U~7Ln Cɣo#09|G=a.n.0؁Q7wa[AAȚq爵m摌킫0Noo_' ӿ<́gÉ+”a\#NyiO[Bb;Sr$y?éKDzwm#&4\> stream xڥXo6_aIfVY ҇aFmR㑲$("t}jW\xsg2A٭3ƫ$Y$v79 F" ccxu;dp,Fa$H)Eu5+628yn3^kN/捈 pjaH ]#O`Reb<&9 L8JG$nBKK}gn>|w-E:]Axސ}WI 7W(/S݃R9P"&/H-YF |!t'5"WAA]kzߚs>ߩrfUWOd}PXb0Q:b_Scu=uǟڴ` ubm8?kW5t{VaHf[IȚ=Hժc} =n>}~>ؔI{lQ9pBGe0,)mߪ6UUĒ2qT嶯zu;pklek^41V7c/~Ga ]siwa70AN I =Pގ6jׂL0A_ @(0gڵ2ScHS4:4*0*& p0Їm:TfYMK%9E dV%E;ǵi&oubWG, AC&`96C/ $wHKV@$ ǪUZ7#Z bZf;HLf NG"V& E ,ð+*Iioibzqj@7Iy*@p/K!*wQ_hEK8~]ʟ`@_I Om<x?1CȾ'tNȄ*!t b-ز$7'}- +[Uo}Y<Sz-G3úa6vr7_Cq>gqŠ#PcMKĩw hW0E͒aÝ YCcϙϚ1 Lbi\l?klW1HQzlں,M[$8JS][AE[l> stream xڥYYo6~_KG$u , &YSfal7]+Jv﷊.MbW7n7w?ݾ1bd K6 C£d&!97lϵ~ȣ($'Ƹ]x|=Ǐ"~ʥqiB= Xouת^X}p;KDVn/+K{<얪(Z0RU%ۑ{kGjjd (%Y[Y;U#8~ P캪;VGxCcSajN?i?/:>3>$4WHSyTrSG 쯅yeiDb1axnZUEW7 sI!Oh>Z;6XxFaU+0F" eŠE$L߂Yh$g~Ђ%S8)nY5ݵ>nh FgK .':K(:aWDn5 yr\6AzXc[ɍg1(jdhâ073U!a90_A g}WJKU+=x{p0TW-B.[BU.G"W+^zJ'aʉ4"ȲvI6 ws0 8 Fùc {7zL}ߌWz9̃NWOP  W9:D4MT!r~q%o:5!oZ|Y:u|j B9:{9^|.`p1$ m[t@wOJ&`%(EY}찶}h e9I!on|/d,#rz^r:IQЪl uzR~:TP:PXfvεB\A G#)Ң(\ xeYOZ $M[w91} hJv"~c}' dxbF\qhtl,ƹe?I)o<{}"*1 C؋LPߌ=I߮ȩ ~񕯿48 I>p`Fo7ݛ9qQk+ mX>`<2YO{ȝ"<4S0ٸ7P'Kkl ĮXi!1">Nc.gft ?E$ 7y6!"{>$n I'X027Ѐt2JTp1NI.' g^=-KP}RQU;ųN8?C۱lY4Ձys^ RAp@ س%9w( Ial@iwhm [^,Z I2#^ZQÙ/F59IW̓T-&ImծvSO<>e Rg]"yZ<XHj ')M( yڃ־5w44H7#.rK0[kK!KѺ\%! I#}ԐY]nmĞ"јSݯ$&Y=zxachW;х:Lk'&V}y0ig&ey7Sw>:vm<y\ft4*mi]VtZU}FOV*4Ms똹]3}7Dv QJ$w;E|1>qH- љv+缕P% KkDn:SN9K/e- 5*d^lBUܿbLr7㵛_84۞]ʧ4#~^10l^ތb$J^+%: ?#J˅WߋWǛg_pK Cӌpfgqqq endstream endobj 381 0 obj << /Length 750 /Filter /FlateDecode >> stream xڵV]k0}ϯ0.I6h2B*p JT%\Vڴ;L[YFi%eLt#&;[mmgPm*$UT-8eP4S/Ef<wD7ֈBFSNO3,/K0V}Ev=ۉ^ d{S#u<}HD endstream endobj 386 0 obj << /Length 1851 /Filter /FlateDecode >> stream xXoFYIfR)m*e),|Qs@xعaΜQ~aٝv'޹ҊXKߺ\Ys\ |<%ln_/?z\ $r 뷗'N{eWn%кn-WSWYO;ѥ.8]a<`aMEցddQ(z%.p#=nyBDưʋܙÐɽʎ}!̈́PmWmFtk|مB7p6 ؼ"AF&nBpnmLNuSyb[iM|M0l;(|*gU4*2I[/dM׹=~V;J bc |e9gn_>ZfVivh(#C-s1S7zGkz%R0ERN* A)pVPSgЎ3^w_'ޖTwo?= cY܋O糼sW.3eVˍ^\yէ%UQ>biSzlYn#ΌG0 po*uyS?ys>4O'rjHu0lX;Pקoz[8XAiR6QM$5{HL!J0~wE] Hy2bp{fgsWd!z&_K@[Soo+RP aOwN~O MԆiɈ*~iJכl `&zĦ_>,O\i`zUYitRn7iu\I] ]H%DzhS!T@S|( r@oӢyXmyWn4dEi~?۝8ϼYyg CE.`bo&-Gyhw?3.oW2`d_3`$ďXH#< zvMԸjw(FyŸgB@rtHp:qZW bC^b2#B1!׽d2Gd[9S +1byCAhX$۶ \E,Fpq3 D͟*`2{NϛFL:1}qGۯtAEzЀsE"/HcPjS|;8N3)g)ƹ4qGrջ??` CS5WPC0ܟ#~(3%;' _4"Yp#@+$*2?t#EDKeܤ=:{)ӦPTcR/}ePtomp5CxFZ U]YFitqe)~}*Qc 651:>9D~N K >10*+ XE۔m3`r4.He0 nlkֶrS@-\,/{QP:FG*]#xpaoBz6 CcLK1 P{nZK1yxD4ARb:IΌY6Ex.{jb#ATޛb.8]Dy3{(}{y/Gu endstream endobj 399 0 obj << /Length 2512 /Filter /FlateDecode >> stream xڭYY~ׯ04hhv7M l8Y wyקraGUuWǸ//^y؉lo7u0p_um+ݿT}̜Rzދ veDZU;~'&JR4hkxj۷jƶpdZf>h]Sݝw{7[Z);-AMuGNv/~eK0?I1~2LIZ:g d6P,otڡ!==VŒ(omIME/,('c>p&Z9af<ò< |0Ѹ4^H4L0`AIt֤#f0f~ڬ'6ɛMIN?P?#V<&NKZk漫ف'}[4o["ٗ[fdn 2x^ą`~pS^槤xyح 頊,窴yJC1o;]|Kg^[N =1L&F+h++Fh&L9̹{6txmF I#ܨ!Qӫb~vMl׎0W Dϫme("n_hJBxO4 \uh+ FtJڟe&1|.4? `&6E(ĺoMivg.\@qipmη%Ļ !7ER;| ago0Ewmҍ^g\/#=K xv֊9@5q-퟾ʇz||Ny 84-f{|qp;ǽd< cvg #\\JyV2vH_&%dyIĹ~qŨ&)".0ߠ-ށɅ:. kO)MC/|#t/>JA9+;7s8[^aәncI"FdQw KF-s}x#ۊKGeYRB9)g}1?wU_d4>d z6<rBbwz d5 +tjt1%C/-=MXLwm 4dܲ/i*2KHsbvN30$P 51_[ .AYpBc^R8SKK2 >\XřYsC8Y pQ2ɋY -/݊$aÀ̐.o&㞞!%3a 'sm2U'v g /޻4O6Cj51Ŧbp]P"ꤙhS&>yw!l\@ʎG#N!az {it`pA+0Y0IĴFՕ9pEμ[Z,zD!dM InchulH#]uMU5YQDkkD7PAUaz8;(д]?1;( ƾ1dw;ۿvB2_\&4! M*CJdyO&Dx[܍a6ӥ1 <eY@fp @=W\9A!B {^ӑն[Wv X <'Ù?<ɂ]˘bT@*Gc z#@s"G$G)OŽKgۈgJ%φ 4hGL9j&T%S),-qlZ18Izg)%?x)_񌯲*~?~__k endstream endobj 409 0 obj << /Length 1191 /Filter /FlateDecode >> stream xڥWKo6W^,"aKFCEh/" Zl6x"e'N)rph;2~ܺ^e:X.,slcW)*؆v3 bU׿:n۵9tA2[1|NpA<_DlY˅YdP B[]ˏoȅ́e^ 1)=*&qS8 t[28U,83JH,%eG#Tjfe*ARR5L##P"& i#'2R嫕DJBS8VS8k 1*N)Z3sX=7(ڈ=}hA ayl@xґfڽ ڱ^`XGtHؾ_4 8jIP;pW+9RMrZfHUC8YІT[{̸4#MTQGD7ZosWu:;1.L_v|-zocY@cҦťrXLs#%4BdK F9ms0b9¤d!At&&}q Ӵގ[$Q2߁]PKy8K* Ku3Za]7e@r9{׍(|ʈ=ʹísѧnUp݁][Kp#HjɁg{o6(͟6(X?>|aEWT|F'өR2u!&8T"_;}){ Zo僣f^R4h15]w7Dz*}´j%a8#?` Ѳ L&wQJ{pAu 9n۽ȧdlGVIxZm%4bʡ׍};:.{@>a#nt8T@;_HřL3| :F%\ؿ"[p`3 <#L&C.t8Ԥ&t&98ߢr:oQn{`X ^@ܹin{3 ʉ;mQ xs@c2ĢM3O{, W: j endstream endobj 315 0 obj << /Type /ObjStm /N 100 /First 877 /Length 1909 /Filter /FlateDecode >> stream xZQ ~c(QX -lRmng1gy඿e_ql7HF(#Ip8 b(3Mm2AZ1L6Nބhn11KĒȤP0Mi)VLT$Pq|)7TEQ A xƃJcQH2XGr:o/` @@Ɯ!@@N!.#xGe׵sԑh|*X ;@MRS$yswۚt:[ wxq6jDOovU;ZDb\MJ\ d$KӼ6_fofya\}ڮ·B۪y%Y(9hD{5y;_\t䗧*3WmJ~+,cz[:r/pXEVcB `϶-|{B)[tQw%QC}:;|ՁdQF`akv0_j>n:yi޴,jx .:eJ}]}-磶4^޾aFd2j8J+x5J}Зf0` 1UCy~yY%4Glڼnq=XvMa}FveڛϚYh>p2xzLqπ-an1ۮy'_˚U|6 鬋̲ߥ\ӟ6r.p9sl#LuzpLJM=f~ VSR/0J"ٽGs[s&T{k$rY([\|\ºuඃs=Z{YQ(PR5ܝ_bû(mpLluzpDqV"^q튋B-JdG%̃UV4e=~ Oyg|Hͱ m`y"BPz iwHs*q:vřP8~.{Ц=a b@ۄ/D 0VX߃Xr2Nc0NaG|pH\)Bdά$بN'eȑ9A?ˬFY_`nYr %I̗|tH>T@ɇKڟ\{ Vԏ8NF_>unv,[RN `sBTbA+qE ыly[zwp(\]%G]71zHw kDz*{;=ܽD_a\'#|_>: endstream endobj 419 0 obj << /Length 2064 /Filter /FlateDecode >> stream xڭk 2f~lA OIq%fV|${ᐲd{|Ioqx8{ Eo.I8_ͱM6W _Eg5Z}B89Umw$cCHWydo`9<^0;$?藴8az^O8{q?aTY*c__]` Hg8ƏS|k~0=7-FHi,y&.T˻@["fU1NSCTT,.˹̎c'cG&CA8wB9n΃'$Kv'[~;՟Qk5tdXCuuC[sAvŽ Fq ײH5v۫dVFb.ђ"UVNǑ:8pn .dNX益/ &w 7p$m{Å]Qvga'I6zT#Fg80+6)Bvpha lnw7'YNAH>vVƔ)Jp[D{n-C |UŠ*/yJSOsGM4{qT3,pݘ%fhq2s&q/΅7& h}f₥x-CdNRDla!$E*?ޯe'rl ]"qE J["E!7#|H%Mh7#xg={U3'Npsp@Ud\ݮ*2pElnb`*T᮵Q803'@Q;F`6q:+w\{Q[Ssh^4,ҤŞCuĺw'XTs1 m=\䡵-Tw28;]%(}BKä8ѫ1S)K: 1=JBx|U:} d/˱Lo~Wy:^ HUbw90zpH{¹OA. zcv׷sh&_1hs/śs DXwjq?\J+rIo Bdz'aZ77}r3&)f&L\́ojd/ endstream endobj 427 0 obj << /Length 1607 /Filter /FlateDecode >> stream xڵWm6 _ad(zK[maC[GIs̲{~(Qrs/1-SE>|Ȅ6_'?L^,Xef0$\A$,Yf,."$IQbTLBkƃtcu(tU%U{[mVFɒ&;Wݡg Y1]RZUY%N|z.,gMpyb-^LjԜ&iDe%6yoKb/lڝ*l/ jE:D1"ҕ "N,"%s: 8^ahscB0fa@{* )A|k"|Fu L$e䏞ΟOcAL2.BSI>gn`Tk>\H#ϸ#-c?K7š-ʻ{$uD>k#dnL#V]T ^~hW.qŀVkڶ;\7 ~Zgm  hfK>wY-BX;ң1g sY~ vv?H9 gRe)i4"Ԭ,O(2;(s3Ω^VEA!!kjk\v_Sכ*pS!G#8~b`^5 R'>AxdNj|;0PW tZ0B( źJ\mRZ`@d=ʶrΟʋԱM7k0}}CV44;9}< yoZh8.{Iд6 N ́€ O?!5Eeb 3BVY6MGJrJ8ɢA+D3%JlI:c\Zam~%Ly^)DHBi"N̔L" < ^lJLLf7&J];l )`~jUSuU_,)@Q5uJ|WV-G%KElKB!X/0O`?փynɾ݌5%ɉ5D 1H]SMYП=}2Nh£z!F0qy?3gh 6 |/`l,-?F"vn78hZ=Ğ2^V|x+boir]{`,73F*z8C\hv5qL Aha y&z(y; 8`$+=`OG!~~EjP/BZ2@]p [AYX+$&VҚv a$mcq?fTWUa'43c }VNw n09 kf"2.tY?PڑIލr[ÝgR`輫 endstream endobj 439 0 obj << /Length 1594 /Filter /FlateDecode >> stream xڥXmo6_!h(&JQ6ےbC7t lk iG^\JylrP\k?R7hdWGG }j͗;ɇϯGKchM>s?ĩ墨5oԪ b~60r=Apz7 qgmj=L}8IH),jc-${8Z旕F78FVAo%~mPTkzp9Iċy#Xdzۺ-5`% b[I<*8 Lԕ6:k C6:-XDMFm(דaz1 [1><[Qݯv Uݔm Mnp6MBi*PPHUWe xT fcy~Mw0첯)X͘XtvENn%q7O ,g=P9<Wp78ISHvB% B(言!ɛb40qCv{J<7 MC< d+],i  ! >2z HpK^QP 6,Wk E4QWmU8:Xt3H[!rS d0K&8dp Lʋ@bJuZrU#H0Aº1U!w\M%pLR_ZȮ1&E. ?$bZ]>1NqSiz?(e^B>a\.mY|NɃ7IKf,zx1*cꑩ;㠅OXAC[Mt|[N'toДd !ߣrI TUK>jʯJ|3cۺ5#u[,QSc1Ug5R7's`"TQ?a-wcb r3+ QW(05Fۂro_H,&DJxGϸN`ܟy˟OXlfm/eU3X{^WfūN #@\A؞5ր`#k޶|3𗽰{w5tiZ\0<++/} &막UK+4T .N5]L8Tx*Q׊ޏ4ZR_eԜI:]/ ]N&SΎ-?Ғ0viH5Fwc{3ɐowa ^T2ZPT@3SrsPz'}&5Ԛ NM/y6t^hbfZyGoĻmX%TwL0q}4b9vVLƾQu١?NXҴuťHnY7#ύ t`k~>W<L~pZ# ,]*/GC6  endstream endobj 452 0 obj << /Length 2319 /Filter /FlateDecode >> stream xڝYY~In6 caw1ȖĘ"cTuUGjq#6xw?y&v 6Q^ rK'vyBLu.&]^o3V]Gh{1qqx>rybuXRSMZN:mZyn5vU3ˑ 0;,OLBt.jr! Za'PhԞ"ce,{M߄>)iCc^[Ph{b $aK}udF-.ȑ*Lt%1]Y5+ԤpdΉX{I"D35X g:{_΀MFǾHb5@mwhQYcfۙX6z1pD+PGsl"Åm4`tI ~Xe(}h<ᢞS,`1ΗnʪIMuѴ,Vh})_VASBu5rsRܭ|2f &z bkC]0^px8uz 7Rvg$Lރ!Nb羛 IF_=+EyNg>%1[rA)BG{1(Uc6iuBm⁳s{Pg@2f$+iR*s8VA;g";Tz H"6ȉ10 *Optncak >q1 ZaCABX]^j̔]Q=|'WǠ<K1TkU:,fgS V8e\|̥*kzY.* gʷ?.~)E^yq/_{ U-2Bc EߖƍF%| UȊ)g@?BbX#rD6/ J:"eӕƧ+T>}3&3^ Y^<7$1 q1/Z^lcyc{477ly5 6}Y/eLTƜ>طy'xhlױ- cH) H8hn*J ZE~?>AŘ endstream endobj 458 0 obj << /Length 1289 /Filter /FlateDecode >> stream xڝW[6~WDVu֪Tl+텪2@I;8[!e<x}|mH eq{cB{IQ<>O22[ c0`;)A4M~&害im)J=KptV6TmNr]40@3Yl)p|}rʢjJ7ۡ^gn;%>,r naZ N'N2haE%,=M t뙷G=q>JyoZYsa-Lys(Bi^'<@!wS?(kcËzc #:#;N}4" HgDlCǛ~y'ҕr1ۗcO[!}/t^ Bq1S9b19X|5EO>1fKslxL͠H sL5U X$dϖ jlKǟWl5[*P܁As5(XYlE#YϯDHJt8gFpB'nd?cѲmp6aa&|-0]H[;*V!.zutUHqNT]Vҵݮ喷[g7 ѐeQKNE~{*0fɋ<J葊 %S[A`3s WBH ^Դ5ף^RMٝTty8tI-?iuj_fQa2dbG/gne ,d I7^H4UQIMˆZ:t92\a;ddbgridn}kj Kw?\K "؁/ϏnG,C)@EYU_ 8Bifj54p~7~?b{A8 NI Pvk-WKHk1%фWzJU@ȍþH~&xI|X̽4JMW~\ uxGzr:(b( nqpw؍ZFC#J0jO=ūRDXpo!q^l έޫ@pSe_?%[WAM+It n _eK}ۉ@ ^Pq0Q >K2*{cw4~ k^+z/N l$rf endstream endobj 467 0 obj << /Length 2099 /Filter /FlateDecode >> stream xڥX[o~?Ke !)EQb{f(E KtVT]-'~=^ӆo>Ur$3_(,!k ^?nz篾 U\(y'nW];ԥOz1W9MD"aA>}SmKOM'v|?fumwן~aUJO{1i_{}:~ XApv&nh)X,F%-MOQScl茬؇|֘v`4:մ -ne>Ţ$pŒe<χm̽צ_ rCva+j5)B"5o4-?q[Q`lJYVlu:ފŗwBI7GI `D 9vRnn+89|یVDq7 69S{\.xb pxahipFl坵b(pd:<\CxUx*1`능p5պ l:%D"&Gլ@fNESH4 &CP*@K4D4h6X$0ۅ2X1#"9,ط$ra-vO۞@W)&]AH=PH(l(ӶET#@?h6MEF2(հӸ%vFɋx(6GҬ$^|YOSc!4Lq&{\KhBDwuS9}Ԛ&o5[D{Urnx{o,&LuQpMD} zԶ\iYg-ƍp*mqq3~6XǴi01,;sDSr*yGmcv|JHWBԖ hvn$ЯWqc`m~0KlB+wB1_Q.a5]jdO+&畃a+k^PW5d0{^IglsSØH.Yeܷ䖫Q `|*Tn_chd,O%:!POە4׽aW kD⚚de>N#hQ:W73!3Xyڔ(?Ppa*QVMpݬo oS^h.?|]|li&gqHU=>N goMMn˺zrP安T"ZWe{!9e|)C-n`o7U49DwWWwXrѷ˪aX?i69~F endstream endobj 479 0 obj << /Length 1018 /Filter /FlateDecode >> stream xڵV[o6}&E]nlcъH)jx*$Jnx́/z}'I C' !lSf酫o,q!GpZ.gzm"xBʺbyx؉scE1 \^Sjyh0uX5rfAai.#M^1ULz$2uJ-k( yOoMu.O)W3RR;4?htM?Xhg(e$\m0g l7JQpan\468ـS&ioh#e*ҦЀmGʶhrٓO9+C+v4^K ږ7R~%r9662N33wC7:؄# >k-&E,i`x`5VtZ̍>4^G}u3_Ujx9167d8ɓy3n endstream endobj 491 0 obj << /Length 1136 /Filter /FlateDecode >> stream xڥWێ6}Wn]RpۤhhK\F~}"%VFކ93gc9z5AbIep ƈq#hpfUj͋׌0u( |tBv R8|Qw6r<0w:(;@02=!RG^/mVY*U5PF! /al sYlmCI6YYxHؐ(XP(81Hs*f=SF( ??j 87ȏΉA|QW;p+ֻ.zGL3Ɯm(,#ҺV:GUc"f:i`- (Y8 sYO7ꯕ:6ځCNC:dz+$eO.wu\CTW"8yu43G\ȴ4ߪn6eZ;'*EaplqF3%O@ʟ>">AD\ F̄UŨqV!яuN+%fΘ#v\$WLumVlrBj3yl)1(uTy0$dbE2IgoʾeCA;D˼.xGZïcfQ;{MEd`!fNSS ؚgNԐ|P k1iO+T9+7-)AmcXRi\B5qIBc^$XVXk]J]U{AƆ!I^mos]?-@=K ԵyvSjd/:ҕ~^رnnrmۍ_쐘-9wK-S5%dz3=wǴg^Ƿoݔ!ysui܇^Q̀|;ϰ@bZ?ۙ2kg-ѱ+mx\u~WgGg>}Ef0O endstream endobj 506 0 obj << /Length 1893 /Filter /FlateDecode >> stream xڭXn6}W~Rc"u"n&H v3Γ3njIVH]ն'h4DEXS x?]pwPz)K#yw; eQT(/߽b&)AN7Y%wW_84OK x*xu)`{2GOrbB>^{\i\Hr/&8j1Q48qʆ+m(3zycy[?XHQ5CMiW ^4׮n @Yf H=ވ!ɮ+jQHfD2.X"$\H)&hzhn(K\ Sh<Cm+>2 ;a4V8WZ,k;p~6o簧Q/IDʼn: ?ӌє`2ZtؕcGېL@4USab [SM2ϲEg{ݷLV1'Apyޭ4(fj8|9>֏z1\QBץ}-yz,_ 3(*V9 | hrU߽;E@p1Kh&͎֮,okWrŔQ}rUq9i"widMuڐX-X{5;7TXcϝ.wnno3,."Lny"Ҧ`091=XRqgzbYB4u;{#eȺP[ ;eU|YTW۬lE9 .m&"0^(h8F瘉*MawהqFe͘3gғ{P\1xTwh8|/ ];Yy a^hsG V11-_ui2K2R2!at9,  1D_P>ܲKW ֍WJЭtCh (dBHN%F[fy4p3@wI|;jע][X\Y`wf?"o[ " vNB0UABbh ~keP8c}O Tdb4]嬒IҲ wVHr$tz76Dv'2 dVX=T*aY<+W߇n"։szZa@gŰ<$ҍ\y&s< O/)ɶ14Ii;&@#so}k&Ja4!!UpuGs(]W}[MOD5"ij&5GG(#&yMsݍ""s juim>t7+NXBӋ]~ZV״"Ř@3zqC*jⳊ>`%̷4bGVnE\WhФՒ]L,X]vP/䯩aVW#H8JYwt rW$L_ 51gI.|DKL$L"Acz.FzT|L֘ԍ-f;ר~ ̧啠<}X8 endstream endobj 514 0 obj << /Length 1415 /Filter /FlateDecode >> stream xڽَ6_(j6:l 4)ڇMMPVWJZ<3[}9ȹg8CǺ{YS4 Z,qC+ HaM+IClM={ĎX`U'2p7 QQ$pΐM~qYS=IJ}mFSZdN`Pd=xyg:<_7}kbQ8'ɚ;VIZYWxꦬH|=B{L B P!|' 44k2Vۂ pU ġ͚56ŊtO$5;鵎wPlq9#Xhm5T:tKő}|UNcD>wO 'I=^wpp6 1raO‰)R5-|Ꭓ:m7>aT~DcG%{ "8+ϖ>-7*PiHˏ=!hIlC">zfwpKؒɸOϯ4`Ҭ8ޣe;oPz.`޲Vu )R>&LD ?eNgttr/}|A6`FR OW;z}<0+ekB[Ce[,)0&DD(dJqqW*5HWjwMQ`fM5*Z7aWˣn?O=dҾt8ђcZ0SYU(>-(d& TAPXA۶dlY|¹<Le|7㿠@W,?HJ )5@i`7kN 3Pt|{5Q"+dSG%ZMh?N-Q8otzK@;bWLhSA46SPí 2dDG׳K) ޜ) fɭ. b־Z嶻/f_kjw@%(:e~j9v!=R^}ʟ4?#7lܜ0jI! ZRgZ֐&3!dl@Glx!> stream xZo7~_\Q m@ NkꇭqS$uWYmY*` %Lx&GKJD $B+&6g}t 4):Q$t!u:c/Ϻ9t0 ;˓H(4-av azE;:lBGĄ~FAGrġ#mz:"/dr(|@`8$r4$CGa'-Ba6ѩ_\8= Lz4"*aQn#c7xQoIY {WE!e yMb I%(1l1a91cz/'`F*`l=n}:=;9VyK=?_LR]-8FˈOdid Lbqs#<>$CR}\X i,;p:O{'I 'j'È%0bw2D0<##\pE+څ)څ)څ)7L`h!MC5Eg=mfnu=0/j>E4)6A#l1~ gf1Ր1.J:t}i>ۇ>4Ӟ}Ӎ`b+ISB0_V:A\>,=S73l8Qo!BF AÈ8 R! >=Uc݉jmD $"RWE/L%wͪnu3fjl-bYX'>t$k q=-L$1G-pgO{YÉzyTߺ^KzǑ2 }"eI(;D> 7&T(Drq>8aQ")bIL0⾮yze ŋW$zS]*qL /ӊB$\`PA#H TC&pFحڦ16 E ‘g;. ^j=X(QEৈ9 ;6 {piёi[_-t#UO3@{a#hЋ9\doՋ~E_cU]~_WYUUsnne{]|v=[nP]uz|խ7W󇖖(51VOGǖ5N&&f(L{0Tr]-wH١+N9oqDHt]uwc{wPtX.yMG,z!075OIt84ty<0 wwny_Xɥ $a<|>IL*0 Cۛ u_{U>u|"7 endstream endobj 526 0 obj << /Length 2058 /Filter /FlateDecode >> stream xڭXYs~HUIN!cÖgKńؚ_h"iJT% x?v=AđB_8[ŗ_bOB t}+h^ۂ*6ndiHV4m!BW֙|5, Cu4p&@0 c2q4QJdq&.vJ̢'y?"<=+9:<`i5F jCew[5C6'0##߮ӇVڐ4۳:MMͪvoc XԈo~|\VtF κIp .)┉hw AwTA|<4jKSNͬA:?~AuX쑦]6ڪn4Uw͜L$WǃbF7gAF!3=/b5b>kh:k =Β kԮVdkK h&:ܴi ө:Vɫ'T*Kx4 a"9\"ƨqZD wGt,K &z1A6m$af#^u# 0 YjmjEh0,аɴ9!yb~*l`?F+Q缓)P_rו0 rHFңi/-YME67W]vrʡVMdb]k_Zl$@*e^lpYpAWlX őhBBtzjmIcG?~DǑV٪12kЂP 8=s%1O{]Dۥ*g"{ɀ}~~Z7:dߌ<GPq7d! |8V[*BE`Ox}l$d0zV|+vU̹{Uд.Si1u-;e+bF0/2%N tf&4 ܸG<Td=hO uՕ[|`fr|CEP80o9+/&;' %kMʀ'O n ?+OĵH[&dvNaRVvIE#4[B9E<,8ݗ 0r &&qﲴB@O)*q;RG1z1 &`g[E[ơj2BVE|x}_M|]'iLK#<5f^l8Z=ZڻR-wr %}﷊ p'Di>4U7d"tgX9 أ]+;) _@l/otWN(ɝEP]B?%Ltz6]kwUhUNr]їH;YdОbHMw<# 1wlƱ }IWBEuQc{o8Pe-k'kC endstream endobj 539 0 obj << /Length 2089 /Filter /FlateDecode >> stream xڥko8{~P`2.f)zp.pwEt"TTJ3Rlb޽ǽ\zy+,z,ĜEV6Z_ކr-yH0@+nn8]ZHp.Dzw#,)ݾY,EMmuS A}KjC@D˺.]2շ8^0h$NC[> Qz{dxqXb ,1 X#hrM, >6z&>^"!i!y[ 5y-Z/$ءeW4fe`Ќ=bB[ ڵ.Y8Ws9f<:z"|UNUbdܧ׎L'6`.4hށ^;u 傼&2<FV@ZCQϮ[rue_l>},Y%5b`K.YX?NHKf['Vʻ^m_튲`1ۜڐ)!,@lɵzs~UO&HґhE//GebD>ӑ*Hm헭wt nY9M <$WEi+#IYFNR]FpJ_ZMKFL (=fal:8-${,F >q'AF{DZؓu]=*Moo}|k7n&YG?{7R֑*n4f==?тGu{l$3i#H̓^M5&$m)kr|V.4m6㰼Y{ρfPbԪRWs~igghLJ0@%M%Tk0sSӜa gy"mhT훦ɽƷl0"}{z`SeGĤxzw0{?!<-Caam{M:@NѪUSkcPg/ɁxLRQ @k!fn^ϩ{jدZ+ڃH#FwOb]tc,6FsL؈3a73 #B^YLugYD 6kģ>)2[$Dg{aaڄuZBMRoik :s> fsfS*e9=h. @F,ʎP? €rh)ח֘Ie,>Q&f3jHސI@0$296"zXu_PU -&p X5 V0J}B Jd❰2)&HNˮNsTmiDacZi{0>9-m!zPUb8ۖl"I#k~;, ]?-<[aKF:YƵӽLͣ&5fd4P" @MjŒ'&(" |~5lSۡMǠq5ZHnG"NjiZZX43~GcR$$.I~-XyӨ\ӑ)GD\jEBY,P]!0J(uq4J̴b%9?0Ctb?,RfCs~)3Dr`ӵzm+un9;ȎMZa$c&A01N؀1Nz9)|`Z]I: ̋p 2MGud̢p(r/^ 7!ޘfzb0c2Is(oQ|$Ob,a4aId,tL vdBx;ʬwkKS륝!G񺹅%ӛ]_GCw޲n1xσtjْo, Ŵſ_eK\ TOUw(Tzh?RR`匍N} 9R96X/:Kt;"z^tBGuVN endstream endobj 550 0 obj << /Length 1411 /Filter /FlateDecode >> stream xڭV[o6~2)Vlڭ0 8CWL$Q8ߡH*#'Ͱ'9<\ *^j @!$Po>!Zd@ t4K5,җW$R`fXqq,H>D(W?2ٴm @4M[_(é󍡹͞vsԎf)yk%<,ʌ֐}0)-ފWyZ1ihc>Ślhwtc*N^۱kjj7 0 $FC˷}h:\wU~ z@Mb-X[hKs֩Uq-Ա%piadI}E8w#(`bLA:dRr=Eq Q$Ɩha, 'SS)/1tp#E8l˼-ȼ3]-@H;d `+;n+0KLYOTR_s ؄YKv{DYR ƙ]0jdB Vn#+!9/s/ט|5'/ Z;bmDtAk^2) #> Ժ Uh:*$(L&+FQC-&G p }B4(}B;Z2! .@Ml[6jKzCDj9Rab]V*VLо'%M 4!PcKq2L^=#hAⰋc F"iӴM!(sjܰõwi!ʙ#U,4V׃B^cB}R#Yq#0u$CTԆvOR|۲/=wפ?Y:pnE,̵uk7R '4):ôPKy;Ӆ4tPD^0c<$ջط#~GU{Ǒ{eCAwtOJlDmh1eBu0-˖P3^zy˓7U [m[M-FQ̄nn3pXϒ/G_C?7W =Wnn;dkЖKfaXi!)})d!G1x#Zd3EZ> (FvjS;Z-ziԮZnġ.,y|r_ endstream endobj 567 0 obj << /Length 1106 /Filter /FlateDecode >> stream xڵWn6}W uٶi,zP$ K(%ٿXqABRgNZ#>L~YL.,D`?Q}9UVU7xq;8A}%2!Vbr?0%>+fN(N>%(͏=j- (( |vo3zJpPB|tc.͑l8R3iggvFny0!x?3 7&dMWȥgF11Dۭ PīE'mo0R ~p5rOBpLʼ)k8NEbdn^7eA3ƽGilOnacjvEp-`A[L-һR+[̅S )\!3(]t-0dc]Q+T(뗴+܊m g3,>-vXܸP%d;VT< ~:("d.U̻Be.NJF1f,A%:gL2Շ!+ievТoleuՙU:Lcp*ea_0e hOeqם.Ӏ1`Oƈ;ߏ`lyf*?QȻGvҏ?h,##x'e 6E~>.͑]yqyMG+N*92Q7EeR(r "r/„)RdJ,j im)zr([&=4mzJM)0pdW~Чf4ZM/Uu(궘sLJriOw@'^5?-emf/pR^֌bx'Wm=Us{d@ a> stream xYo_MqZNR 9ܡ᮸6+K^QJ;+JK pf/_<,g;xb/ I{Q wo OoC9 2">-F#ٙ́s0_+$-/|hwlhV!#zqJ|Q݇z% {}OV;M[1=)XMUݣJ؋F==^{+/E~4u^>0玻uUX-`ϕum_a.ʖQYR gfV/ ynp\E 0' /HpR]y,tNdGջ}s%,UQЇ'4s.)eXz˼~6GhHk\;c.h:a0}p>%`"NuuI#ojbuD^ҥ7gѰl乛ݲGυXn!:hGnC 3i 1~U~xbM5 O!y"(c'K2-66HvrT$8Kf0~ uKЄZޫZ5.'6=[,F|!6UOt_.N/7s!z[947QMGGC97:Rye]IU@9sn=0*qcƑ!GB WwEZ%sTq{=,oiӝlĚėC HQ_H֧G4S34rujH@]@` "Ukh5{W"8mrH=G+KY_0cH jlE? R޷=C;5dUy02s'UKl[,={dKBDd RF;2ˏ$v^iq+Ȗk[NV1x` w~"$0֐d*[tol}0Eřl6#T&dH>\'di:4YX,Zl|c 9AuVi6Iz%w1~J9bka9Bata4Ȭ[OE?<s 8$큏gH{8l*: \BP–6A/+e.q4_y\5ɺjO)(bUn :i+*L<'Vc n/e Bf/Xn] ?|b̷D85&2h!57L=S™d!4\ aL*m3{UQ^L[U[n YAo)$|@:ad9DvjMza592L gnUbl 0sJA:kҭa&-Ř%>%/s}OmŤ{AVFc ]N hls֢+bQe2iM# I|ogݕ]&`n'*#캻}B-BZU*Q`֧!1"tVzV8G]AᚷoGM&tqvz߹;-Dg,=_S?|kfF^F8CS:C N2`$w u(`(??߼_zkz6Wʇ;چk^iU=f^d3dL{8B:3sp!2 pݲ^~GK1wᴧ,>1##9v4l_˂d1}b5晍ygFdT endstream endobj 588 0 obj << /Length 1049 /Filter /FlateDecode >> stream xV[o6} Xt+Ї6MX-ފ- ZblaTDRۋEQ<9rS'AIHCgy:yvJɪ]UZ|+ bp?6riA`rO)9wr#v2ƁOIr¹[2{EPvZ(ĉp8NTzL)Jb2۝c ̛2:О&A'Kcp?I _&UjRױmIК_])iWuiV֖E1e)Uʼ]eUy{0w뚼W 2ɳE)&LmtU)'5{yDH#-y5Ͻor.d8'iaH"q{}y{> stream xڥW[6~Yw;iv:]yH3;6S .08N$!wlqgJguƈq# .Oo9d#SlTs,O—J~9fG}f-a9Q_/oRI;3p< }4nJg=Qagǻ8Uٰf.S~F~0/JʽIUi*,EsK&KN+:UxZ#-0z_ӳzfiq%6** 7aq3XP oFՋs8el*3 و76,4lk0V4+0G!\6PyQvϏ=Pn})XD? 1pSc0a<|D2FF~N?F zp8{<Ғ. t$';.z)ZfN/jfdbxmG 7;lVj驆C9GFhbZooZ :;fza_ݠ {\נj&U?tN"nbMXh35> stream xYMo7W\$g8$ #mhXjb::}߬lG(`y[p>P{LpxJ&h| ApM&$or26:vz#ƒX02%,00xAt  9 fHeEY'44D$}W"a]$$Q0$/#Dw  \ 'Ơ0d3 "{ 2a)2R\d`u(Vu7doLX ) "6O^| 33AhXg^:uۏ0H D<. );`(vIe/92A S06X,B̬3]x<"Q1cRaԛԵXQr:TB^ݩn2岮;) :[P8#; NKw:CpTĠ  Ro=ČQ%ɣ G3 TG%}*Q$/:#&W4{I ]ӠyNGCXw͏ͫőo3GLCB:ZH\p{fw4}ӚyrĎyl?93)e}r~znCՁ!{T6Ryj-I+nS?@ oFn!]"zśp ә}Ӽ){zaTkAm{Bj*^K,QCc]ҝXim (X z{-bTgWrJcb=MGSBX Wʬ s8voekqᶫsf2V,B, vu,^l !{0hH-HEYet~8d]%%J pXyR- l~! endstream endobj 719 0 obj << /Length 1562 /Filter /FlateDecode >> stream x[[o8~qFں`y\i;}\mfq(cj4JT99}vq }zwusK]>rs<Z9_?8ys\aot){d,3w)/{8F)?)pūݣ*^W퓘D^#\&>Ļ>n_&ịr0ҙ$)_r|~gV;q8Ϫl:3ʀ{A'NBNmȳ8o/ iA$ %OM| /` CRoUc PNVy'OR^G˔IckM :cV;Uz8,jp\ef8jױGjdhĊ:wvtA9V;b8ַc~~gV/ b't)xVդں8jWjIᾞLNp<ɸwVSTVaѤ>"f6ߒz&EAs膰p85oH>11Юwq=rf*BYtNY&)b`+so_ , =RO**19#D*W&K?Nݺ~mb;g= EALvw# endstream endobj 610 0 obj << /Type /ObjStm /N 100 /First 919 /Length 2640 /Filter /FlateDecode >> stream xڽ[ˮWpl8'I@0H""_F ]CszF-Bb xXSžzi(jf-FaDht\0~NRH SI \XN~rBCcr/4{L< b2ұ Sag.2q!{g\hV^g5(,b%ۅ p"0Ghã)c+N.^TJ/\n!g9ڊ5 *F\;LBǷfPyo'W/6ւFlJLƼ19AG:7|xX&~7|%>aϠ9ͱAx\dzu3J;&C#=~w{`xMCאGpب0',Om= _6[T+k$aSkQAD>ø;,̆h6̛X<Xyb5x1; bwkp܇Հp#܀].cfoA k0 ;F܁5nrztr3T:`!>W_mOVa_4Y+ws?P=+0}¶^>H<cQa. Ƿ/>Wwou?-}xWrï߿}嫿=ӛo+i5q|޼8]#$ZZ@xv%Gr{##E)S1(fQTT"IQ/c@M 1u3ǩoH W=@;FV +A.Q \AH.SE#Z +BqĞdu :08~YϤD#R"a wED`6?7IJ`HZ2 יy51J +`ޮTE <>Y:@I؍*NGkӚA#zt(!3̐nQ*6l(qF J\AQ`vdit!] &.WiwA.~-@S=DI2Ti<Ь<{<.={zu@!OPp{c).x}IYQ ,.Hǜ]1ǝ a=R7]3 *VE B⚫"x،@7/ё]3lFw2s" f$ ivYg"> Y%T]wnIޟ`sWP;VWKt%I]cDvصE;٢lqPO$C{vd~ŐE= 6㽹85gOuرUxtşLðY׶"m. 1$]A,_)ۉ endstream endobj 739 0 obj << /Length 511 /Filter /FlateDecode >> stream xڽOo@{L2ͱjCJIe%(loul ;7 gKuiMgR1ΠaLpRf -B҇әN$V;RuY[ e~0A[l{ڴ+ ^k4%HA#B/QwDSԳ] ]ֆv,_Gf_ Nuim !)ڐ.Y|8> stream xڝTZ-  N!@p{7j. 1P΅ egbolocbDeOFjb4@'gK{;n T h<ĝ,@c+߆N9K # @O&bdin #҄ Nf(9Xdn@s4trv3󃠹 -+ ?;'(5?;O,[┶ 8M]M/kis\LN)YhA  DS'鈃{LJ nR;]-`ji0[3J`\,=:Lƿ~j绹<mIqe%\w3aa{7#da{8E#JQϬM];sy{P{edc4b؍o+_n>CJJeL b?-_6T}/eg7ZQ>G R.F ?!;sWYhhbb03qSP; lS4:;K3J1PFvf6v'<#0HppuADAqAo`|GLw}G >wG >wSzà@ *@ժ#;i#;iA~Fl@Oh6 AF&&N&˹XKbic [ Ab{ Pdw2162v@6v7ݚo? P]&#Ѓ`boZ3aKbk/j/ ӻ{% 12wtؿ9@p3{YKп }zbMˀ^(Hd@i[#Ѐj{̠vu"V:/$̠@vs*_r=YP@@ ho/DK5.}Kfi>Q&P/l\  3 qE]_2{oNJC2n~f3U; PڜT%qP.N93N}+AѝMY#P({B BfN t']&N1olf z@ OU]H};ݕ$ɕZl;Jl!AȬuQQ=xz)г[OM=eR &cVفi:4(#~;9g!oG HBr]%p2`DN?-FNuVe_IVeQ3(ic cH;a@|"1Ob~1jxZqnETM-Lz[tbS0tnEst*7}]np1?M.o ZcЮɓ 4UE-R+r\BZÛWY_s 1gĪ=ۑ44#]I:Ϫ*p-_ X[ξo H$Gl:#ᒜAO:}LGA:I'X(x(J`,De(Uƨ(Gӹ& ccBڱJh:ZɅz`Q2y!g12O740"K~Ƽ9d,;$t'4gQ-//mu%WN''e,&g>UrrC._Y٬ bK4|,2zvQ# TRLM[3?j5S4'Nd_{r0áYJێJt\'KF4Q+x+#RZKmyb[K+yb&EQsdl=LSny^' Dj8C')>$>{'zCmE|P<5y9J]U8y^u_P" +U3r)̺fqEG\1# lҌ՗dIm)~̒E2Oy_0! fdwY>C}=Z>AfeJ vsңd -:ň|/sT_[sI&-wM;:ʰΔM Դ9|wNZ<~nVoBAM"xA v!L~I6^;?[W0싍p<Ov@ ifCPuô@5`eX GfiCrF2avC5GR a\?6}MD5ȯI Ca;Yo+:U:b#o` ;lXX'< (p'b@_U'UiD4`MGs>9cvKV*[T}-^)_ Y~=13Ң/CIx^e5Y&>OY &h۟d$`}0e٣y5xobY͉U}'SN SK>s[ a܍h9B48[ylDܥVI/ :m Y`]U?X9 tCF~ɃPNOfτO a9$z\ >kUjgyi);c~C> Ws&_5u۸=!>ce>[XQOG7L%ƶO)* 9!k?s M;+tk}'}hj&%e`!1lQ(0 SV΀YAp4K~N(ti4FIK8͈:5iO޸n_%9˨|Fր3G]C LQ>N/dz| jHX[_pqO~XqW^8q_Csh3.:ٿc̴Nx꼲o4kX]06fU[TUC|0ze5ҘMҘ2^_+LЛ@aU YEY Y먥.F(imumA1RhJ> cRZB"C\I]ʝ~)&\H 8!~? IQ4'gbLrFZ iVe =N9y6,hD[bIG wuۗi/ma Ѯ?fZ46 mLWKAى5,)So~ޜT,@Ž#4ZWܐp&'V#/OT h8U+p$-5ɳݶi1.L*-3l|ﮞ~՗QKMG/{N./a*Xn=NOa^89 {lnk/,l왚-MШ/ˬ"A,ZĖĈ4^3yF#|*~?Wj$XWDd(թ.-rZUvE<G-C9eϝ$?ƫzRvi]eLIV 3=lm=h!6}"! "b ,#Us٪vUQ.j9D0Íel =4YB^Q"PKʺ4zkͥ{}MZD\ծe0TdzhgFJYd ,B:AT#rT\h_4ިOh6^39d>`:1x݊nrդa{C"6xu ݮc>)r9TNU'red5yKrYۜC{n.^l0ѶÅ: hɻC ~GB_66~o?`Q\e¿ʫQaLӛR4Lp;1Ћ+172"&ŷ뫪pӷӿyφ|a|ޠq d}Q4źqn,d5]CȰ/?v.>~ f2DK9vmt$ze/g*sZ oBYC^~#nXZFj8KvTT,c'Fq/ܺ路PE@6Mc:hA}fm֕c|JRAQk'q.XuzN=OImR]@g+%Lwj=&^)RLiWe .aΈY>~CCj [b܆bܜ̻n%阾aCw]\/0uA+xHE+OtA_0?&+\{<ŲK+ >o?~}3]iܚ~% .iI;}P$ĜHYdqpu+$pGG2lwFZ _H!k8ƃ򦁦8ci @=X*!~0U3PʿBz0͓g쵑?,9$CI3eTBue<#9dGT %CY@Ó+iXzHAhu=gSņr]K5%V}Y̏ ({:_53Uj߳+>e)T@̐L5#6hܭSA\}>jODɟΜL:L9&DV oRQZy3X[i58#cSas4OaQ jObwo5m}0ys~"M)!& <꫰m r>b|$Yvv"OZ'>)3(HIX),PiꦴcYԬs:[>UUI1)uVWlZcMB /`)TXu`5[9_£/mMGwc[n:SB*Xw$mm6\b~~!] 5+2:oPSM5%ɮt*1CSvjDXMFKt K촣UϬ(\I(R͸/e\~lH񭊳4I"tYxY<\ǥf>Ӯ+L95Ơk!YK $#`Cw< ҥoܰLnn sl!kSj]4j/$8cc7lҏFQY|Pn XCh9) xyBvR/0l-3ӐI%c@x*Y.L[`,cklo;I'sS=@>/Q?(gEhQ-;84ͦ9c{Zw^,xPda`7Nlg,.Zi3kkrfK'Ջm1\] 3GM,Ńpg7J00f+HZa3Tř4 ƙxPGjw5ځ,]UT2vGMjbr!|m#6qGKxg ccMIaQU|⏟gPUf6AoWky:v #MՖ86es;¿i(͛?#HBDץ(q);撺!GŐ:̀ў|snVmo \5zbĝ;c,UK&-*D?'B,av n4a?{x9Ԩgqݯ8;1;[j*2c@%jH=f #[Y)\//ce6_J0cmGq3"+>eᛔh%^C.=WRq|Ҭ9w$~RM'>' -2}a%XVEnhW첔5H&yΪjfr9 33o_?cFFZgԖ(56An9iw?|D,w NvN`4Lccs|U䛞@cR&jIw4C{+JMb-yQtt~O4!qྜྷnz5QfȖ)BA[M;~T~ )w.'r|A=h83,) <ŐM;.!!EKī3͜Թfƈ2. 0ufMP\?0ؙ־ZS2fN=Go!]]sLOdp ٍ '%|KA݇ g2.Eȶr&om3N/!#[~s5G"DI5Iѕэ ق/&@7YNLQgUYa1< w_¼z3/;F*(OքF"\p.ƙt'r抮ĉhvM>!8M[-LPߎo} ү3a":Y@iQ"tLvCbƲ/\ax ̟s$ʆ k ['GM^w(n]zKqǏO;dHMYЅcK_v ҘwU\" %qPj 4_olr(XMe>9LJRt~Dŀ g ؗ?*PC dQxEKt{y=\q6Ǧw גCE3'~r`wU3g.JrOVA6dN=4'}uJmEF :(!ĊFSH*B8Ub^}qܮWP%RLa5c!O;g$HHݒ{m$HAoIaK Ixo C--V;XZEB#W<7U LE;e=yidw's:HJ40-%& ٜC]A}~!Z"BņK- C&qBшG;v 6A.J",4կV$BIϙɬ:u3܊_ǵ ݺ׍\1oI>@bD粶)a;t>#gթp"ORU"U~#'i !,Aø˦KUlZPjMʡ.b/+i]8 z[D[-!rti{8&9Щ ǢApÑzp>CV#;oS`,$~: C cE'"CBv& 8.-Qﰷ5?ﮈӬ'-RVm Nwv_V~{Nq"fO? q PP>'&@/J1Y2Fb31kXhZyx6J>P;5F˕0|+5>yQwJ~+,3s˃%4ѵ oLaܖ$D "K0= r)}Ǟ1\kSl<}m/X̝8o*@U@ص mwZ#ȟyҍܿ#L܄R,aP4#ϜJyfKEK+Vãg|>B&R.«,5-1Fj jlZREEE=iW|*mNE*NݧY2 3cT2CjH}ft~ouǟܗ(k\6Ν=qL=P9 g/gv44*[m3$Q[Pq r~1> ?7 lTɜ|c׎[7TzvtYر} vNd_`xE3 /ƥcD|;zЏ؁Ha%MO;C[`-n y E~*$_FOnpZLO.><.ޒ~!y,o0Qs\ĝ[sVuc% (m/LkQ1ed*N!3OilTnC*K$cbmr:wb"$1#TpPl%7b!˚z,;<)mT1%7beø+ZR&FջYٟj*x0ƁEde3}t#[oLtu!аH k/uE63+dt09#džd]kI0ǘH cpԷ!(7J 0r|'g͂6%Eeh[w-i߻&Vͷ /G|~sp[u;̓'cHtV|x#M -BۘD  aҭ[Q,j8Ʒ7L!vy2tᓆrK?dVHpPѴdE NelKF՞ˍWkx l5 T-icѮ 7#ŅEu#ΡTU=7H @X{_SG+* %+MBnZ"{rF,Kdpd'ז!$Ixjآ{J/\6~b)I_ieg 懋4{ fȯ` #ƴ=KLzON0nKTSܵX fee7#KX@ jEPC6)ej8B <+1N cjDb]awċaڝ9F+@PfĹYVzF:!lFʼw#CLYSvB7pL9ۑG$S gZ\Tɏ4оs"B щgѿ`C29?$ nj3DAbL솹6Dρ׶͓;l̿\<IM\ʗynpaOG~R`l zG2xu_kWp>u6Rx9&p"-3(#Ї@h|I؉DzcxC6{4r]'X7Iy.&}' H\߻j2m kM5Y"P%(=yF%e]l{i. غD9`KVR[FQ6xʧspܓ,|Cv<#アR2N! @6|O& @_JL),>#NM`TcT{H/bz5BON;P!h!ף 7+jqJmQ6?dZ;YOYxuR)V6V<=-j;^:VI[:ff*r6$k\&VE2ĉ޶>V.Y-z Lzuyy $/Bݐ+l|RŨ/$Y8q+4NN21o1O8[a*(?ܷ3p >$!\hz|jv*lǯеz>*e|״֫Kqi6H=,1ޕ$*{3 FWVqy l6v_i_8͌t#xXsn >Z+Mm/߫~ ~kg63w)dJ>fg1ec0B`uXK6Pq9q1),!sp} *[ځ&DAtiFKu\s"s-~/L;琎`T?&XUXc܊!ܷ{YFI (荽 \*z6S63-q 'ѓ vG^-hg\#ld1̦(-j\zBmLx )jżЗi bVh.Dga''mrk0}"oJr3Y4zm&]]{D Ev7H!f>k^+>} >NRPnZRJ#sF'E6q,}cmas}xG_+1)R ( X9+l?0}Ձ}iSdK%^5i 8U%=Rq0 HU!JiNod Nܕ7U Uۆxk_M3m>c>3CZ ktfY>``ݐkdߌ$z]w_.K jh?PγBkKdVj侱\&#! oFbɬjjC]y4 6&/Q˿gx2:-g#Ldu:Ei"gS P<tWWtd~7ڬT/{s6Lø +Qքy($<$L C}d-& &U(RsVK)tJYҤ: ˱>Ē &Kv-vYKA\4,lЗcϽDz~M}3~#׿T0_bYV8ܕU/gi>`~UM-ϖf#GdEXnv;/|չ9h)_h1Cf/^<`]=H7 :>ɵq'}to%rL{eSmpNYjKSJ:#L!1!=;3NWy<>O#$oa=> stream xڍxTSۺ5Ҥ#H7 & wAjHB$t^7J](]zQA^x}kk͹d30T`($F$[ PT!4c$f04 T,PD@4HBRQU C!ahN% III(<0 8ܰ!`0H#K {{{ B('y^7 0a^0(=hB$g8/1 C!H(0Ðul$W?ѿ#p #H/ Fa^`8n PW2 cBh8׌¿`Y UA4ɯT0v}+{GBt6Ex´T`&ۜ`PJ\\ =| ¿ ~;31`pG 0@tsEps#Ik9ƞ`0( 7 iݷ43(@PJ@ 1@?X-# W}e?#^?s顰̅xMtk;_YWwGo?_v#| `UjPs_ՅAn€jPB:a-+Vp /e77 3@0( |XA\w4]0YW AAMDL`|~ ,Da!쌁GɯؙhW98rLV{[0 B2?Ȅ8UbP欁gՈ" zX]tQeg: MqDmLПg'Dl* XG.d44Zxzl.˞#wN+-n"7Z^w D8N$Ytfom%7k2SiCu&'NwiW`O4(4zgGl)ð {x1)QMmX㸅ȣc7RՙݵwۍF=UsRպ\RfAd'dPYcBA{hۊQK,Uw ^4mu gxš? D?|p{jn+Aݥң"ę7Ej:"v"7[Q$[>S 7;<Qdnef&NJ[DVҡ5r=gUw8(BJ3{9Πsuwo!!|_mTEQkWM%i݈{1:O;̴LVAOE;747LE?!һ$}MaR4͕zWd'~ 3C?~ՖSv[&-Nn䃼@jie5{左[F׽Ts UIȧFr):]JZY4%P!M?WșhϏ$ءaSzGQ4cQ˚]WV?X[t8 4"Se =y<#0lZp\7.E{:pU"U^hzzIǶHaITX>oxYPb'yq)F~Oi7&lT?ˮge(l~90qV9]\|>\*Zdxv]W}[?+gM)e Pjo}q}G.Aj`{ƴ5=G3WC*IDzZ3+W- u˳m7fHqw0LgJ+hR7RI[<]6C3WILggdgltyͱJR%5j0[0r'm>8i(s>{meǏlp|in|;ԙvgn]I0S? !0j)n-R}E:/!#G㨛U9:o۴?5f>b?^\sNMܥb=!ڌ8wnc\6΂'2,Uϼr`}Ʀk^%]q[9NJ [x;N&"- 5z.6B<{5B޾K~'\}BЄeG4lz}]g$-!JXo*T2.?`gl`)V !d~oѣnW?wݑH ]@ O7}oz]y)1X R|[727r4UE]zaEi-U'U7yYhc-b0kx'8tx.Dѳkx%{@! f njuɁby蕋Iv|Ho J8 3$%ͽl˾&wIbpa[rfR cG(]S6!bs~P^Ξ}<ѐ&A$㰓[v²s&>'+Su oR!Oωm") gK[A!ţըC~moC| [P輱:Rǯ.n"cd67wK6Ù_'Sp|,F|a.2))9 \++ĺ| ,"bBnUhME3ƢQ/~;XT悔 MqwQ,;[П!%7QM9J0XHtvdK.8JpS\dYiہQļ J)N|[!=͚QbY%F~=Q?cґF՛^gl᦭*Ҫd_-Ei;·'Mc]L]ecgz z 6R kSHXܕj^TQ J̐e4>c V/cbje`rbqؙaΌ O`kn_EkV2BDKW i7Y͎rK%ȑ/ɷkhԵW{|Czn,)v_-vwı{ e yѼ5OR d;, ]kA\8]vn>&אY8Ca"r7q֚啢s;<5 Ll@.Or%Ռǣ==+䂓6sS/n2~ }URڈV0fo0pj22fm˨@.g^pdt,Pb쎆DY0g+*mռ?sngS~)nFXN`fLe鳨N}t2m `^uyu'cS]0 `%O)Ĕ J(RK0)a䫌  "MO-5Y@+횃-aF $O8fh1*N>niȩ.38Ep:Z=g\P_kn+:Xh߄oqʑxXv:#-"]SY 4{r#}1E(BuY0ՊcyOB4/rky8H»rCo 27n'EPf^X|;8Ԃ&Q`YKFY4@F3nfyXܤE)b /c=u1r5|!*x]m:1LJukgsC:!a\ ݅xVfO^z3z:G/NT+t kNQg7ʯ62OWNm7w|PlU((?=$F_d2R^_EU\UE"||wp_*IA؅ӊ)AĨq\ݱD?jTI?"+!r S ;/B،1ПKfv#{POlduk"'r OP5KֺAyY9XbiD*NQz)hrM3Sv{COEW=U#sSc/$.gK!Aj Cb%\cV 1B&m.T 2@"fUR_B>kqQy'E w؋,%t=/齗AA]ޣߑRFɓfab<Șp[Ci$q6qnyQ 7(%CYFXfr9bR3ȓPW@яPHVrJU͋7p,lk_*Oh}'yIk|N-LKR}şua sjR8Ė8w_noUmNf S`{*js,W|ƩI)i"flvX=5S]j}1w,oPN5b* ]*"KzKM%)։u.MCI.LDb#P3pAk˪kSE]u.z_|>M`qX>u"9=zڳaz s}%p^5`,hoN~Jxd~;B jwgTFCVclSd,iRоTsIXa-s*:EG-t>ğJX"[ss=d_SK hǧ'y~{j2K` ÍexlTI&yʞZԁ~᪸ nUmV}BWQ9MD`Ͼqn /ο`i$TעKr3ݬk-=mxA] Hb`#b\ ^y)Dgw06|bNmP`f&2E%{ E{S0d3)Fy!Pש݆mO/O&h@*-.>͍$lmKPYg5PCk-Ǧ *\Z&_&FLX?o-X=8~8 .+"=`Yδߜ7W@Ce+37q㼮Tw;?Fz0| /|;ܘ:o) Ds =K-a鴨\gWE > stream xuSyQa"AXHx\dDg"B+1+|&WY#]AĆ#t rt&TA>Z4s:¢gBvP#X4L,SB ]3i̜!>@͝[q?,fδ6Ptw'alPXp+c62@gH4Lx`Ѹp;џb B;E`B !@5|SGa5 V ku^(o>H0fn_T06x)"o1WB;Blľ  îWALd3Ep?5wO-47˝dq\xӽsiiWsYw! 10uL 2)5,fμ87 `px.1"`P @7C0sN0aB0 Q̯4xf.=eςAp+P/AIg'ϐc0nYXm,Zn+t^fD6r)m`9o9L{c" j湥i0=gCT~Ф5EkcϝWFWO;T&#񺓛Qz|%1͏(u#%[҅S.x^Ѡ[ꨂJvU}E*&6޼d(۴dzt̬]ӣ뫻5S^ّX}Dkm60dx0t~zli^Kɚv󶞆{k'֩#%ILf=?x$6wjVurhu(237k<]iu4Mтָ'" ^&?S^PZo#fn=q-ޞ'IS 6Ɖg'v5+:+E-%F#/7삯O$1w_H\W8PAݓҨ@BT9>2hZJ?U7[qf*L&\꺪#oXl-Aih\Fѹw)}ʭDءx5{b 2+: M%w:~uxe[ؤ=j*/ާ z:V]q[e"Y)sa@&YDtd[~Lwp[:eMY1uX|ƹڪ~9qluL,a$+o[{$mr>[4|x~p7>Qi\XZT< 0\8e@<2}llDUޭ\Q=D-)p#1ve9k|U\3)J)}AؾގWuЉ<گ4kli3[}!FW7=81&A[%E R9etI犓%?Hd)g֍{}:drވ>~s@ҞhReQ? {#nq69WxKKԇn7r겜p=*VmI.xu$ #c|?M>ՙe:Y`{Yt2C eͺiۍ{6i8U捞5 K֭^]%+ ڍ#VE\~E"Pk~%lLs+ęyoj UVHF`iͶ8QO 6kKZ$M sSC] ąhv~B1Ja:`:>LcKRa-4&w([nR(UK}5*a㧬'R4>o R:`4V̷(2語rnxjo \s͓T҅ اPPhy`#qRãvEjA fR[SiNuC%eNy՝թsG9޷h{cdE>!Gm,)hi|-M7Q21dՈDZêhEm 쩒\h endstream endobj 758 0 obj << /Length1 1626 /Length2 14643 /Length3 0 /Length 15491 /Filter /FlateDecode >> stream xڭeT\%{-@pwwơƝ.4@pw<;sgU*̢ 3Pq0ssU9(6vn$jjq)(a  9LJD 9yXYtjLi'`<3]m4AN@G_Du ,mqe]Y%i&@t1ۘĺ@z%`haOk,D]W'49 `;`b;0`hnfvKп9F8S]]lUU$lm _7d7dOK8@O?̀ W'{S92`L],쁮ab3uodlп hoɂ9om+G$vE`g܁.?;C `DbUߩ'-&BK+:]1#;Pи9RLlk6l@' 6;QGh*e P[,M_vMG #)4m.WgՖӑRf?< T` /g+ 8#&0|0sr{ J ?ϊ`O߾H:,YuM?ns7@'iud.b ng u*o() dDlUևwx8vzۓcdzKQant2fh\,)liL‘tq \<RP;7vc@`5$>黂#b̋G0O=&O{6>:Ah9ɭ$Zvf)Zn0d1qPL 6s/Pu?\hviAќE^  ?GefmiFiՏyLS!ɕ0-:[hϭ*d 8 ;y4nVS,Vkō`6 <#_o͛rs{tȭ@bN\?X=Ef>?s-2NfέU Ƈ O,OK gdRj`;IA*$:7@3V|;_^ M􌂳#%\&"2Vju` 7(0Qf INK7_ۖ@7 H3bIDF5N3D yCᆯ R,Z& Κwp_Y>r],QV_! n[}s,y'Y%JFB-Xk&nT[69 &:i@/\浾D!k&pf|sy?BMMH*8=l\D9߉ysC#n#C7rueB9>~mX%2|1JgH͔+^zFa݅W5v{J@t(SZY12 X7w$@r n|QTv:3d1'X sWk~Mt{Cꏚ])fӠ8Х2@_Xsi >lkWP6/7ǐFչ@'pQ0Lg"E"j`QA$ԣi6(8?cԋc3-~y14¼LympKJې5ƚ4{Yt8%𚭅UO|Ƥg3F6Բjp':*+}rT5'p` ^fcxm[ښXk~g_ɼ)Tl=us~ RPBiټdJ;с$eLkp Oh^?&+#u.[TO @zy\Rݦ*K{d" }JfK"+7\-eʡ{( G(p⼢AQtt?U/n1fT}*a\ c>T;][9&Ɍ>Y72* D_}AmY6bUyun]ZǸJDm X^*z3niTm_9*4-<}r 9G!.u^V.>,N,wlZSxj"5PuC/O2#G֨#h8/FN?HTOh:}/ - ZH,7,\'/+SlU Jc>?ۋ3Ȥ}TAқ[S(ԩl#߰VpŃ@4_>O壃:+y~./~˒vx;Wh9e zÎ-?5 <@ȣaXM08#G2K昡GD>f6luPExH="7!L<aY22I BK,o};$eǢXR2oe:Gʹ::(8`뙬u{ jnLK7u2CerD\# [Ewy рqe*ѓc'lݲm Pu""wvf=bYLh^o ٧lArZ:+o1"n45 ˢZ`B9 _B(]ˮ8쭁Dճf0sh/1k rZy uwnRV2/a ?/M+:@_p]JY#`5bU1M_qSV )0lxy ;qr'0w9}#KP[UkTXR83zq4"2RwB%: |D̼L(ԦOԚ嵐0݇t0w6,Hv>@~br]\fh^_[[]+_ɨo-!5i/[" ׿sgC"l<_=a5E n%+b J1nZgTķP|A`khb|~%բfG˽֌3(INݧni#s`~=-?hBV9ؚ-h\5k0gPһs;t"g!nm䀌y[IA=`GDuz1g?e읪q 2L!Af9yl%PH:) 0D#˞aEؖqlVlU5:O:C{WpI;4R)c\ ʑAL{;sU' 7gy,gݼڥݷ[8TnXN\UWkDn(?S@ʤn/a}^Naī:DGڍW3{ʐ vfHTscg8?YפbZfw S';c jeIoʪ9#猐'$L +~=a%dXͣ<|hϨ2v3 k46._t !R1CPY8A@VQRznCxaI mam>qa;"b`qTvoO ؟#S2KכF7Un _,Vy2ѴQ?;4'&SX'EyC&0[q]C!, nP21Meܙ {aM2b|Bfun +}[X<\}tʸRIhnd<9?Nre+ Pg6m({HWst_yY`7,4H+f;xIh۸10^o]@~ńRot6;YP<̓4uߢ.lq{)7˭c>^dr,~h@p`$Hfv9šE\ o;JGdQfgdl|j4i\ yd%3+-ui-<4$N3.ph }B{fn-阸sJoAti67z r\L oyHa}}\hSmg\{E#t\ y.IWڥL{Zp6 )mz$%2yoa%G\vd}M1Eη(aS]${f:(BUR)Q!'/,$@Y8B1!9גC({q[]WIh孧6GÖ 8p#=tpKڷ˾>R%; `P*jX͆"4CݘkȬke'0TJD kL4Ʌ)QhIrі((G~PI;uMFI+0ϵ2qʼ8> H )S}O4Fr8Z -o_ox`)N<{ߏGqu4䳿Cx+f&avMMS@bC<Q5h5:P!9_uu69pI"–?Pxlq |@$q\ȷd{X N%T9lC& $lbJ˒5>Yotkk$KOs# A"$]弧Tø*@fbH?VV##j͟3B7[h5V9[;sTQdobfba27qry`)>; `kS0 9\ O' azeΑ<=쨄 ةF7*!A̲#*HkԴZ~ cj#__TMdU f*?3drh{vU-"{WxQhr?ra;z/c#0K^NJp1Bs*k4~ )Ox+>esph' > ?GQC.D Z>Fف㼓 ~4u2m-eD{hf/O\% gA_fNyWbwQOce=~Up7e,^\F8DyHBg w}/лcMXdR.*+m|Šƀ'cv}^P" .1q1"!?D&í^Im(e_@?7FA*Ilst>􏹌\R|);o۳hyi*ٟOLOǓ QCᢟo˦LH|*[fSybqwÅ(+"H?8F/T' SIsۼp³TGY~LՁ܁`OzIsQ_}4Ϯ{]t[,KAfx}sA\;~n^)ї#5!b3Nm"$1tZXUCfeT{۫i hB9 R}J0D|(a.˱B_1i,l3 % l6U{%ܝpHeTtF"Yqшi]< ]0Wt:*7F'MI1`sS pD $P҉b-w7XE*O?A$gGXO5A9["{BE/7c$M"$U[EëE(__pyK$hN F(et$7+ajsXmA~}pZZoLH%t*$ڇ=Ar4 RbvVtČJxER~ h)~<7uJhr?S%kfldU<É6]]uBh(yɥw 0%Vk߹[F3' /@kq1sHn.~`zJE兽[!e)6!q J_| pl0O:^?P3=n^OS9w9Y(GF39'.%c&cLROMAZ]DkCuW2MRմ (sL/>Sc(yv"M}QE;$ObdB~x#>\dUTX8EݨR,J&i [~oI!\/k\evjn VgDLt.dzzK3qh"%Z.չ-;UHʳiE┰d'(W\ TubStwǚkܛozEuC ` M[a Qr2c5YqkUtjW}Fƿ12e'挿2xqteүYSP]XN><\=, AFX/T Fn`BUJ$ms]R/O@|#!>J D$HGo@Y5VO11ND[zEN BAŸ[Gy_a/PD•Y:Of+2W+'B?JbHO59wVݨޝ rIҴ3p jmU_sKA(/#FH9)[ phWcF߬s!zy|:r4mj&ctՔj_X:W҆Mcgw#~}}Vw߻ Y}kt>_P򫡐3B:G4oS^˽Qi8L)4.S: p#`A_~kMHm*f{!;;otUV W:Cvr'L0 /% E: /`HsP5o9J3ư _T]>=ZRĜkf9:M :MWBs"0kΊOÌ's;y8>{ę_Pgڝ +۝{@Jֺ){di8^- ]ks7 c*[n!24*XLiWtu:2p_+]A C^ "G":WP%ۙ d7314zW))+ްF9)ɪXLi0 U/ca,6BYK-첟kaԺ*bCH #&'⻕)|BA4d93xrp71S?8[|/XU}-kE7~,C+FQ NSZи4z)8o}3 zN|F@ES%q-bt &z0^nx[6*7u j=U4HB@㩍Ce)R,y>#f)HQAZEG^fvY@^m{H/NWe47⨁ig8WN=oJO܍$V\u;g]ɔ#b'##hDm;GN띮erbx_mEH r~^,-sVZeWuKO#%c<~)-ng?-\bxh34-h57d3gZHbH! SFs44Bְxn-V kDڿϱ ӟC0>,6tZ[5FMs꧵FH`0fz`ÆN׷`Ncigo7wjB^QP "5.w HaT:Rt;YG*&[H^ԗʃ#G֡$EƵEǶw]3^ʤ1mm8A=kU!\K~EFy ;Tߏ ޹ 5ȍJٞz^}d~:aT@Z[9[[|Ytե\t4>({zҒ6ug7' Oo<nyŁ߇U⑑U3 oḿ> .D߭F~/Vc~2 ;?-Hp'y2%o=0~ _&4CM*ȣ@XmgQ;A8*Ʊ]{Wg={uX3ӆ\wJ8`ufR= iqjvNBv>o[\KW9O%|qȜ(]сKF  $cAfqܨ28?υgM}.[1Q_gz2 탆%0RB(7#z&mt8 KNfp VnP-w\L!nlof4 *'(}+1oEٗ)}#F<D޺-yh`M0k'~ $W5Gd/ucP4%kPؙOJ[мmS$SH3jA͵#n\ .c9,I^ATJ6Z+/o ko lg&.7+ Y?ޫ`› Ib~551xZ3v׎u0Mo 6Q2NSBcg?HS@AHsd= pzjΖƘrl1 *-TL)b) fnu2b{Asz6z| Y\7INMtRFٰ%P`_zUfXj9'ĥk<1yZ1)OmGT$!> US006٥ l$NL<`h63c|ŭ>VZoyJdD<+m7] Ë>i"t`9ϥbϴ>[ 8 P@y dUAG1 7Dt}-T.E)5wQ-t0n4s~HW`]Ew-V`Y7ةUC]5 *hBWhS4NoKA;yb(w]EC} c8r B Dݚ V$z6Z0=s.pJmCO f/8$ 546*[Ȏr 4:SN%pm?0~R|Yyt['Ⱦq?qX~?~զ|oJIF1Qne&yZ|fAdxzezݜNzpQ#|؈dRkȓֆRϽP[7oi @a5|$ 26v~UDŽWKOX R hܕs|+[H2jYScQnW_.]b HH`a'Χ|:^ʛpn`cIQp"`-V0|КT̪CZ({E!}_Gmb9¦iԿF }+#yrѠ* ˟!}՞&"@;%) 4nV(x[\\\?;WR_&o KFJSE$PtFaJ:Xwo+[ۣԂ -Z2GnKlN_EnG<;ESizspx`u݄~Q)Z=R!|>NN/2oPuw"*ay]ͭ/ bӸE,v5yPr9;φ!.4@xM#RMv-m(>d!chT$ϫo; Q&fp؛8LW+5m)=*Â01kbK}]aw/G+SɍTԣ͖r֝T .f68~i[Vr+ظ>T"!3VaQ <. *FQmt)|S.UGUFN&F#BFue`M?eRxeB"oM_M93W(+*x b<~Vuů%ȓRa;gff`:eID =V1a~iؼnt6ުPTg[*jSkTFi}dF FO'H'S!ґm \ZlvpTO_$aODeԔ688/1)sr[JZ4MP>*|˟ͻ˦mB>J$mjR |&hOG'M z*'ӘƦ>bǚL{# 87kIߖP7, ~hĜpLx /yGvXSĘX:k? f xTo'm~TQk8Q!{,G|ׯ0Luٲ!KP^Qt{]3I4D,r@&E[1ԟ +B_G*[pP3V HE ? 6DCyYM7۞PѦ ˶fQx~<8EaUT}?)H @se`WmE\Ex-\]\*I\_?ݎzCa΂GO(VOy! T @H#-J$;Eb+x@?r#HJ*lwWb̖l83͹'e0_O|b+O/;ocÂ@χdbͶ5Io5_HZȖyV?(< Vy#D=?&z 17e6ًɊmE:Pk|TeNG/OzkB-NٟkہwEM 녾!MMiQ?9٤F2c|;gi6YBOV{p@?N endstream endobj 760 0 obj << /Length1 1630 /Length2 19169 /Length3 0 /Length 20012 /Filter /FlateDecode >> stream xڬcpo&۶͎dǶmN:ضٱ:9g3_fî µUwզ QVe17J۹002A&*< *@ W_9<do'nh@S++ ftPhhz:,?܀6@;ǎ@ 0bJ2Rj)EudlPv5A@;g ` OiΌDg)t9;Nv.{bٙڸ_rpkaWL UY\yXW 7kifoOIu19\.2@6ƞcsp+ Wge@pZ;;U'_@.@sFxֿ1M]ƶ33+2v\CtWIx̀L.CXfG;r;G%ZF{.c;=hl>ƶ ; ߶YB$h r1ٿvf@'/j+,AvoW$!+*(JX2T;.js(؛QQ{7 '7+"俀X`_?blgwS/Z¯-ۛXedgcOdu(kR+) ψ2z el\:sx?5ˆ7 xUHKFWEWARf'Ưo*o0?؜\?`?:|3MoBiC/>;L>yz wOGgzFitd\ӦYJLΒyFd)~,l/~Z$HO<.6&kе,sʹ~(țaB8j^ +@ՠ\ K4`F-0ހ'D!!5Z>`2eO{_/=`5j  HX#{G~faam0G 8}~ۄ=PB3O·FʌJk_|x -m`XaGʣGC22^ ENDO ):tL0$o0 YT{cCAͳ}/F6~BϊN[1 b_` 4>~ީ|~/0E Y?3 d*xOX7V-NeJΦ.~j蘡U3DT@(kfCL9?p3jb}~+ZJK\PVH5MSmSk1U\êWt..uB8Nә ec̷Q> b,Ҋ~o5m&9o͘ 0Cw`6\R̉pOb\M!GB u^꣠='x KN9+ Yx)BL<i"'|5Ç"X-ⶠwih:4Q_5tZM;eT0lc_\}IjA82A*o6H3l$*HbgboYOB/|H{phmFA\|Ii7aJ!ɽ>Pz|71RHa$uG,뇹6 X{U+Á?5>W2D۷mfN&FA[z/< ݄(gm|ܢ1nkmC7fwLÝS\Ҧ:R@ZDi6oMziK6iA˄#TUb~$e[Z;5[I VGDjv>x yߣ .E*,PV7jD }"?5t~~(~ KgҰp/fJ=by̐xd(i|>.]1wgYF'V]ţ\AOSTq{m&ؐC/F䗂 jI]f6aEn$-%R/OI^ڄCE-r7%9SO0G?~cOa[1,!yn<5v(-HCM/$A[th-B9=&PK`, tԪ9 dtp4}<{_By6c}ݭ1Ț} kf3,&PtdRL<=y;k [6;Iq93"%/R{Cao}6{ȣbuEϱ%%ԗu¡d<&a:Aa5<-vZ]v_mBqۛ:j|Z$Ęc7M:q&j-)ݐ >TWjYqk_B^ñ&ɰx6?_&d}**ME%\1jMZz3'-8%5LE޵)i|) 1 *+ŬyǝfeZjK Qvӧ1sUB^IGng纶j %aSdCt*̭K^:x ]w qTz/ɇ֏g}h؇[!;sȅ;je4|&JVfXɩJl4:q3Gn [Sn5lΪ2[g1A&@˙Vy9 gI|l}A;_ZAM4dжKrmIBvH:2[vq-5[1-*1&SI#Y6?XD)7<,?,zbB vM6΃b5b8̍%,8[v N䥁}+H0T:7AaCy;yl朸:Yf*%FC 7gYQ m?YjS$N~Ut/({zMss7>jW yv y* bco\/ٻ@Τ1-9y%Jͮ:MHT|r7jҤzAzqV6RdOkLubelgROyϢY+ŵX-iLEn>D1e0wƟRXT 'd~P;vFkk{b/+ I옇,lrG40^ׯ~k>JT\=f]ͦp#bi#CCRxIZ5YsIO8ΩD -U̹|R~>0qPAǙ$# v]1^=d׀B.+䡪S0]Κva7*|'Z/XNIֽؙ3StI;LV0 =ssrX(E?- `/c_m)xF]5*fK#cRL=l=fnؽKդ=m~`B1DrVO/,>  sKW ԇ¶= z.?HqcRI,!+з`vb]E̋ܿ @P;]枳b^$wF zz[\q"4zH)kʒ^e;(0,k>_$[W8l\SY>Op?I4!Wx/ "NV*0ơg_N1%a ޓth; 7y q<2$UĴo]H6 +YܺYtK9;W*Bk:K: Dl΅oI&y^M5Eg]DASҎoi' :Tjpߺ%# Bg[K)Dn͢+ժ IHc1u ۈT]cT %\%X=9WF}س6:0ժ@.C 0 $H,&P8%Y^9FFɨM!;_OEdU,]*?Wz*jvcz3O!jqB6aFŵB?ߤk/6u- cJhA d؍txf8(M2ܵ2d;qXF 9{Ԣ Ie1Tzfr^⏠ AXyQ;c֑qYťn::~фb\}'rN"*"JL':rRzY?!]g /踘ٻ7p䍑Z}.q-䬲ܫ>k@Q*N)7#u>C}$TEN=6|E0dY}!HUdtHɟ~?N,>tO )vUldDXbA}ʹ]t2Fhu3{S(#w]<83l6H bva"ǹ]6FJeyU&xj72y[(╊ݫX5ق >͕`FX <Vp1 L0wǭ2쬅0N$.ۤUke$4_pG$h̜mn5hP'&y+7+`frwӞ %z;iM22v6ԗ3Im/"2 .EڣOQ{ĬHrfȘt Z(`/Us3 K$NLu >]s]/$2>*wL9d6F `OaIwL,gO>T_dbWfiRRXAP~\D6-E}+.Ua(}oEJj?m.*. j煲?7>{$r P%  ?%J0頻ؐH52/:d/xix Kn8mu #L󻠂}=t`9zZ1uuᣇBR~Hɔvr\fG,73.\iX`wP4޵[ɈBiXDȼğ|(ls%!T.ܘm?JlCO28lMB^eQOA簽 B1ɄSǝU&eIDr4/3CXꠘljD \)t7Ób7^z~?Օp']i nKilrue:gXjM1F "ITU;$r|8.bƙ |=wYQY!k?8J,,MjTi/ v>zƅ WiQ>(K_jכ;rE0ʦI^f3][o8}_<wc% Sې2܀7V.6#-FM_teGcڔ~V>'rIiL8ћƃ4Zh2v*7cy2=]_ 9 ⑈_V\F=:!K sF8xl@BD/o!EWX8[)&f%) 4Jt8(n2w~:x'%Mb0x6u!`$8 +%S!lqML>DzXIwP~sArvGmᅥWYyfii |a{"e&60Տ'}'4u'pNiX3X7m"v E<8Ck5>QA$T7%0sĉ|B?nDO CF_<⛨@P yoBV@Ab/=)"M  q#-<GlGWʜ[xmu@"k0ŀ~18 ~8@ͪ="UH"bajҮ6o]bau{!M(U6GyDBN&D3@Zg,9 >n"ݼ! Mh,+lďO~,yXi>GV  '^+lQ-C0۶\HX<LcQ5|@)CxKOTd"6;1COAҰ[%-1¢!Msҥ?V4NF$W*I=eBƤr=+l gܦtQ"[p&tmɉyl%I@.MاC!PE萲"c_pHu{be }ҫs,1Ⱥefxȟi[Xj 4؊C-( ֍y*E;oVQ ,cT>ߴAeA19/<;ZRS.B ٫ KO|eM"#\v'~3m|op6ȆLZhusQᘱhpDno^R=IW&&N>Ōc8RƾW_!=ֈ#=;{C"`3o( ukJAͯc::br(7C /wL5kk G'jٳkn[ se"g?gTj3CSE 67SJT&t w_fWU;B4/MIGѢm댷"b_m @'~*Vy6}v&)xe\kJlN"cB;~;^k2",>¡zmuήj٪ϼ^ʗwT'IJTҥrs%M`ƺc~mC^AP^ˈ^~ϱ:IWMkHlLXgX! !$&W rE4~Ғvq)Y.st"¬tr y@vٜE-ȑE_>d=z|[^^݋Qs+Mw?oRVtOb\ 87^SJg#2"JJa9\g M #-Gt.@18'6Z+}sZzu_s8kAY_uA )*6c0",'S *M⬗Gt)zeC[3":{e UmL #v&X㓆K=E{З2!3.F8*6(xLְ32r\Gx5{hp>gUɼol?}ǧx=p¿ 3!؉4)4-tfyxxY W0$VtWpBG^j&vB=d? ըľT60-?FT\#r*#'[J/&x><\"..T61#| y8ce9ڧ2!~nΈr^/%'}b!s5iYNWtX Ϲ[ vxɖ4eGw۝_ 鲶Tr?EWpN~TВRY_[$N"5I 29UmFU=t!8,u2.a!߉Xe^=/%W;4 !pUg*-œjVY1ʍ7-{NT F:n]oU]cdB}w`Uﰀمyq޳M(\[znP"9O,PhGsy{T؉_&-*ՇƟq[M[Ҝ(6Щ1{Hwq[J(x́^0t!dre Ŵ/P 0ȵq.2iO]7,QēKG1f7)swӺ~eT⦗wܑGS*A%`#1ti!71_| 2cOXOiZgqׅ=ZSg.w~^"R%߱3AJ_@T'En+IMRY: o5OrA`SG #|O@H֏j-/`N@X+9% r"/*nPln?үP/<[OUfTTl RDk+ny\ByݪGk"}#ޒm NA^^]://u8LG/$Ppm{v00lH9+O-wJ tdlh$]٢j9FnIDK[ɩN&ȡ% ~5eucO$V5z IAr^-lp_7|>_B;4Вk >Sͱ}g[*pbQ}u(ݦ/=mC(d-_b^ I{+w,SݧP1b̙>Z88KJ 0# 4Eq_]'cy~H]H,AUFnz:y:[;R 6) ,嚇+@Op:.TP#vY.Q#;ϓȑdҥ:w{:uӕ;:NZJR$t $eUdlAY߲\eCJQݵ}bfTgmr0*p]?|C |kOӈeog׍{WPls5AGя HJrY{廐m Fy% V#$R&?8*Rh$F6͋t1J6oḩe9"]3^< QNd4T9X=$3@` 1K)h;Zsx D39|gcC.&'j*Nv _uIli7'9Eè294)mz\2k1Tuڀl2Mť= b+eQEU|*2cNA?7o4Q+u ;dBz/ueEsʇ P5Ť e^W,Rt.úכ W!RRBi\qRWs5Ȋ+0rЗNii}%B6ׁ2\FCq?,1p_ 9 Abǿ"@4ƳV?P@ٍ)&|`.AH჏m^ 2BvXE +yߴaIԓqv)l=Tfao1bT8 q;wNJw hh[4؅!utM\c{N]*taԒprHa}^iP|G{t!::K5(HjEAUcV_}u&_oʼn¼JEەbHHam=>ӜfY*sxt xp( fDEI'Brt8Pnf=Zg/x&갵urtVKRX]ܗgF+#3ۢG9~>aK[tiŭ\31e^ԔB9T2Bܛc`֊NFٻ tr4`Ziu^KMi 9oƹ4V˧gD>T`:!G^|ǀpDR% aW aSw_a7[ן'#/] 8ŶZ{0(s69S3FA^EGrĨ\#}q#^5b眦}VaSصcMVv:҃Dqfpӱϕ Ru ]g)%aoS /K|0[y Qir0<\ [ D^ Q-McϸIb2.ń.50=ͺ(nZjy= ێbQk@0Yy>T'DWQx}wfl!\-q9vk_W#LohSkz\.B-O׉|[<}\I:J,Jd H;WMսc]g}X>Ut?EH5Q[>V ?cBDՖ}L+ !,%"+eW~;QXxp?oo˷Sh!Hm~Jnu@C0 7C˜56ۮp2m]}C2+"'`ŐV7+.|(+G{_rX½aWas-jHm6K蛞 sd[4M?ˮ_cKYI֫K[t(hkdGHV}T=qY~s<3 GܔԲKFŬ5s@i{mOgO[FE4 ˢKU5tk[ ; ,{^C4AEpK4+dT>? ]~b҉hCYw?8*n"[Ͻ:y?s07s%ރńdsY?y$7/6*V?-3VBS "Tg/hDDtcRف\{rr~&m:dJ#E`ff) Xt]&b.^X_ I m/^8o=3HG4EK'(X)R#k,4w$ب*.R8MVԬՀ˱/ց3I gu=Km}`π&`{}Ā+s ',2:+Hj% [oTsJ'G=4nl0Ĝ9c=R,N1{f0ɳ peȘQ7uVՊs,1rCЀ㱝Ã/lֶm:9bTv0 _yV$cB(KCƙsn?QG<ݟeSA*ccu \N9QYG݇ V) H^.XJHl OaH8ʧz}#7+V] 'D r/ɡzע;+@$:$_.1bnp[f$_ww'I 14HNl*:ȟ>DGAetú.Īz*,<@FA[ӟ5x9\чn?Y&HWg'S{`nHC?h3"2ac)VBq%JW>8p3Z~M|DzBc,08(x`3.K]Kv t3;"*J0gcv6pma;"BBTj*߳MRd(۰v+~~GexjI Kl9j>eKR-C#w'bɄ~"oӟE X6]!OO[+Fa @Ğ<%huT{`u܃1GBLT$RN#aAsAUc8ٸr Nmޖ**w$O{T}eƒjU7 d ip0Zsވz% jpzݕUhfe-rr0 d J1yVkޤSh6}$"=+Je<;_뙖CAT){x=^R{.r3 xݛLѣVA0Bgk ,Q@R5J 1y^{, <.l&9]1JdOk:KANjtlMDƋ(kMbH1}+iq}@{]ʜRwNUώxkJW=o/VG;yVdX 4<"3ZZ eUj Hq$[>R (KHu4Od52TOi4 PlQi;Q$!Ӆ_* \SYh|ǩ"Lrچw%8]_Pi|6h|l+m;ΞۓtHDQܒYP)dYY B$wDfsDCt zK7gaE((eY +QitK'W2( (ǽrU읍wF!N@,2ƥ:MVp ^V(]_/Kҏt8CΒ3 A&17L19 'c݁L`չ8nFez&R(#aܓ 8-NC`9W6ڽI^~dSh"I,Zf˿V[J`$f/)>+Lhd?&7? apSn?qK>|5 i؀~ /H)f,V5##a#7dQHnS2ޛN#曅,oe>3jd$xy_*AR\S H'qr]Yȗ()  j`3q Vpj% ryR+QB[K 7, yXS/m^)FZjзk}hcwF٦udH`mPf%: Xڠtf@1{*G4c )^à-oKłTIpIס ˨]=Gߺhw1]1% ) NkҬQB9y\*5e)yd1NS,F w ց`iK: NƠ(p5TUM;d:{ͥ~jMz`fBl랲7."d/%Y4PuƣCYI$[0jSNGPȞB UMe7js(#V Qi7cG|>p!DjN@U^8mˆp ar--Mb=*v%rI4Iը(!/h餎͗A.p ^yC<<;O\R!8j n9VI2:H9)@Tyh%àR$>3&wdmM_F2_.YD\|o׋:83ly.n\XV`f@)3bazROszmASFQGdb#]6 MWBFR*.hpia*'*}̳n?5V%Cw;87Id9E=kbZ<8x#Y8-czlQI'(ܰݬXɤ" ܠ U%G t w8y#@0I¿g PU-Z* IWO=*vjiYo~] !cfI R Y;s7ĝ<6V8L+ֳ%EqjJ8S,j9BR2m-!d)x9^E>WȰkh sXSR I,~˽Lc,Uw\:r5y+@@ i{)UP[xFLvR63Δl;;VFy~~u$IeBc0 ;lX&q鴔Tsi6svl Vi..5X?N|_p~zv=3Nު2WZKӿ%NFRy$6ܩw.sLjUC_0Fs@92^ XˤPOֲoubRi0yڕ|SR&NO κB(Ri:*_(C>fǨMN{|JtzH~)CL׾)8 ] {ɘ]\U[ve~8QlA~b./VV>i.WMZą !F̣\ UNO gqbsw<36(?hK%Wu݂W[Le<%GgZ!FBpTqj=͹. F=v.U~5d-TZQ"h:VB8TM)S#,܁;M =?r!㴓<`_BTo$p޲^a U1HpoXhύ.3@>䶵~Q;[`]@t,v{Sz]$4GWޏƐ2Q.e킮|C] \H\wNO7ytKXr q\v^w(KO19 TzBIXlg!ZA s`54}Pvrgh1BXvKvT7 }aS;\8urnruh9hAvi&ޢ.އ)|h-QR@}Cq8U(jW{RoQ5'p'ptDu3>*uFaqA_å^1DAV=uI8'̠/ٴC!mO$J_ > stream xڭveX][-A\;A[kp ]_?k5eLsͽȕ՘D ){;&Vf>"YVўWId xs"QQ;L\v&. >HTq{O' VCU?&SԼy:-o/n {[Q X`@\IYGVQ@+فLlʮ6`3< d ;l>?93a:L 3 Gp9ق`g[\`;3W%dfa{Swvq6s;ޢ*KH˟75hoto0oZ3');;ؘx~sp30@&N@N/odcΌ-ßY3-: Wh [&@{;OdA-$2-W%rQ4}w mɘ @gؘ87[Zd]L"jgF /3 TYMl\rہ&Vѩ[ͬ d*(b }2ټ +.ocG<-{?=L\<&6ַ/'_@<+8=z,,,o,bC0I;3{ARs1?fNNo_!X7ta u(^\Pk[e9qsy#H Mw贀ؗsa7ajVwu]. U'8vv'[J7h~f XuEGɿnohF/`{wMRS\<>q;Whb&k{=.foߩ-z]As}r_tdN ?q=}7<ȨK(XZvwV ?I6oMX m 5#m.n( ڈ vh=󆻂(I[xӥMxG(M*OmTۈ>nn kp);IC\{S!ufKd:LLK,61%JVTiHTnv#2nҊa讑RVi4Jpbz;kbܸy;^*B(y1$kP`F!F!y[*"pPO~0On>Krر;y86cD=/ZZ1 `n~-%U4;MԺ+~U]Nm.'>3^%]??ܒٚl_3{\I۞\M] V5S\`Wy4V6ԋ~I5v-xS4Z)C5zuz]"=]zq=dUr +7gw&IH:gv\֟+ YPVČ3g88m3~pCE\WJ_ cPISD7S^3z3f.\ob4m: + Ѡw|ՐR+2LӇZq_b+@X(jU?(\s}薠M%6Tf&DX\*pGCarZPw/A28+R-|_=Is^SUs8+يO5nX`8[1\tsj̟ 8=uAb8]*3^5‹rﶕeV'}!Y%.+,eC΢ʘ9Nx +|>\|z+۟gyJ=ޅN*T ƪg@],8rrbٌyIn ~f aHP>M7nO`hׂ/UDd6 5hig+z[RCtR8Yk '$0%D&?vDGEeRI6F#̢_ceٹ1ngO3bߟ='{5DZ;A(RңÁɨ+9v{v1Bemn/h?NGꏬI-kJbui&}FiJFȺXP/̪{iR|ލi]֢D\ xADIclh.Uks)M81)KF,m=mz<n.{ h`ȱr3%0lwdb3sDOǫ9 W,9.NIaRäEҢ Wr[340=i9唙2E^%V}_Yn-O&!{Pu \oL|3,2@ L B 6OÐSKYdM۩y4m@CP1 [FFBSk#8תL'&y#kLnժSf]!QeՎZf:4y͂o9ͦ&f5&U< ݺվ{/L w>1FV7\`iu*Y/'K=!JQ{B642f-Qևjm43|4Ű-itV?J/O>.uʼnh4!*?Ww3)ޏmH=⢭T8gʉ4l;ԇU{\ҐrЩ`̃#/{Wg㫎o^HVzJ« I'S^e_ hC%W%|M;iE3L*:jZA 1H?uݹ_SU+;e%h@ M_He3*ԡCEDh1>3P}K(pd?2e /ʝ)]G:kޫ:.zcQFE d}*n>BOpVwM,9p0/V@=SO;rZ% -$(:򶖰E )boLov7ݩ"1N'RRa:o5-x#R l8|Ipv46e͈~U$DVi`kX}םredFnÑ+0'} 0R=]`:-KbA݅1|Wtnٓ`f+i+ݣMOPH_7k!Uc\oHhR -,۝~N4 2koDFS)Ko\V(}E.}jnW_j\.'[Ae,rӴ^0Sb6;x WOOӒ聼 ZEGy&~5}J9x9ٸ][[6)ѪUyگN׼HL#õNH >~%8ߓ'4wM[Eё |qd~-G)w"(S{! x%32n 4g%Z%֨~s Y=9&9QrG&._ ̘qʽg rgVla{}PG~*Q䨋liN峬21C_.iG׳t8rk)vU jz)TO!Z+L1J>apȆe$D!=0͟K-+lN5HҮc\ F| *3 ]NV\uʹcQbG5iPջHyP9hs%>Tfj6.zԄ8ol|Q6iMDYjͤytd1;W_rvOw|0hp%6ė] s^]djAo'!@.~FDhFCHm-ļ ֓\Xx0z.ߔTV4P -[K*W_osT芻h=THî m{G +':)E^ʄ.aq/ 2Ǿ3p$H i1+i4l]k_5fgRkg6Iޏî;~>IFpXr:g@j!?'Fb<)K ս|Pe;Z]rf}\gl@5$VF+t\:ț[kي*6a G=EI}PE ʸ? '@LD5|U'?G˄VpEsc@q~+ ? 1;iHӚUWt.ь&@Z]9R|kSp63*xIa|d {FLl=QgEr>xo?$2 b^2{ O_R?-Yr; A;&{Z. C䆓/YHTR ;)FK?]'N;wG>F e'\Cw\I#~2P/M5KГRj8bLZfs^j>CW',MkBKk8eb)T2ˎBhXsQSf+vL1oW`x"L1>]V 1 3;ޟHk l_3ODPhWYmZKY/?jᖡ x $a~x@l#!|^BqRV&,Oi**%z%B>36ImӖ_NHP>H~ ÞVMxw}_%#g%#tkNm_ EOE"έ?l%oqtD5Ԫ(=:E&n,pvmA'.؅(IW/8.ZZ9YEA0 MaM>j<@&H4w#J c\[<#L-,E\{"1F\iurt/uZzZj<&ZGTv`:҂^%unCکJ~VS±PIU}"swrHb-IK6eaKĘ\~ ry$-a@@MPZ:3Wi&9̆lqjGhT\@ƒ%tF]Wľ=Zʪߚѧ:/v7J69x>t}2yY.Ѿ9/ٹCi`qY > oG,F Ϭ7mgppoi3fNȖ tM<+ (GRɑ7ʄtYYS$ ap(>/nWCʶ=Bp3dдH*K$>v1*{ #Ӌ,K)||K1FʽE~+vB:YPN ,qJTD-tht)'Ҫ h$֙Aq4uVgC*xq?c]bI^'Z% f,j'i7;텰i5?b$s4A"Y[vG邈-yEwgv(2{gv('Kg ԌY΍ŽBA֐N} ֪CMģ=+M(6ALYDUˉG=~Qh!Aga ]+h(,#~+XJR_j[P xlC~*&9#Q^9CDu%XEc\hlT*Ո=Gx.07@3܃^tCky NpKlQ97;TO ^ G k%NMK`RRc6 (*m Fo~4zGmXMj$,"v4Hyz8$FыA-K0wyBiC(!v$$/7]ř%& 7-F誈Uڲcp›yeY HY(ANo|90s@Z+i'S^ .=NL,ʔ&&h/TZ|8ܢ'xRQuQ$˫\lO6ńn>Ւ;KMeQ&"cL߽S?CC%f4Ƌt G r ɫmK*VS84^"#[[z"cD=Ҙ~Ye9iJK ibh8>;£ߎ43Mi;ƻ3 1uk‹Ťi:x5JtS黋RrĥP2d3[cY 8"-'UxSSY'rϳު*cƕ ]MsV6&86Co6oD1dA\.^""c>`7D]Mg}Cғ\7B֯`Q򊂓p]ָkkSX.K6o~J׬Lb;Py"}AZb\ Gz=;뚯$U:7_hG'q֩Ԗ9N)l9%ĸ(0C-˴׼uKB2t|Iu-r]Sr]Նv6Iץ\˜H5_:JՅDU7}SƊnb \k¯#dOQЬVPOxr(G0G(py-ye5\ߟQvp3Jdv>*W&zx'a"ƴ+.Uó)kGuT_ %ȟzGrTJpvXeQ10@J2軡:*Yä+cOՑ*0̥]~ESɱŠKc#JM7dž80 !ʻt{ǚ5?)E? 4 KV{tD)q2 90eZھM;``CKNFhoc}xҌ>=RGۯ'ŭ_ g~jQ.*%j|I¤XL0I];ŊO 'Ε)ec!*G9~|w 9$)b*!cGY p_2 jSPJjM. "_p V Cbv9K(tM*-QF8,WmiUG;Η ,=}vo tpqyLWWڃxtXre ʤ[ӟ4_>؊\1bBk[Ҵ>#gfgN׋_FzC@i X`'*&$7ݱōi\7"]%ڈNQ%N[k d+>`> $Xt#f($;6Gkьub- Fqq~-ƢOoKh鲾T2yDKC/?`UV$Y1[UAY<烙E|W̏!K- r7f+.=~CUDbI'ҸkXvP ۧ m0|b>GBc>{Y%8VF"Ʉ%E3a,tcbbUK3iAw"{uwI3ed6 { Ik#v' miGuD^0]V\ -esK152^raS5U%۹]aS/`Zף/z<eWEo kDs_N jѫԢB U~+IS֋I.f PW*Ӊ!f7~HX]K2?EQdz*G/BU4p J]R#v1}]c[qL*rx-&v 5|J؊|=hB=ƅU:_U2ex7G(xL3"bGmrJK"h=p (쮕;^]d0@`$^`$,zMlۭt᪻6Ǯër$2Hh2.> stream xڭweT]ݒ-A!=@pw.}oӯ3jV՚jMNJ/lbgugf`(X8(qѫ\ ;9#VĀ37779@@IMKK/_[FD>=,l@k;{'Q8@$JRA :~bdma 0:v,v&%08->݀@ :=`0s4u<g;_ |MNs'Iddha $&< d L?wU''lhap;0p6Ifhw.Nfʀ43t4:9}|ru:_7]ڔ3gl3 [8ƿE?1WDWP&ahbgk01*9PTfAW5/>;gc>-s kCG_r5}&Y!lk=3;?N@% gcsmW5:Z[?E|? S30K @@[S+`QPoߛ>YHv&JDE gdבo" -L LL̀7q[c;Hl@;niΘ725s vИn_3P}qZA_]MoA <o24{z)>Խyk휴{_hFz]m@p0im)|-z"hgux#u G5N@iA?>H8|쾂ţ͊%5M:&Ntx[oͅߖ$NsŏDŽHSyЭ(?) ?5_48e ?iVF=UO2#kکay32 A:꽈rw\E籡ܩ(:B[qʸ×x ,C"oaqVT@r4ϸ#SG*USFڕ G:3 j6bU=0> ~Whnܸ`sTeh^"Ɂyu\2WH9QǹD{6 5Ddqys0 9z<ՄWF]b:EW,G%˞J='rWˆ᣾#P1\XQAl󆏙!U | h9NՎڭCi`)FQ@SBz8:TpㅆĢX(Op@_=-/P gt.Eݴ6-jVry +* *u :ͳ VᗽD1>'Zgj4]O6;8CٌZW~;  ѩ@'$l@YZZ8rIȵu+-KB!i6< 7hZQrpkp6߳Enesƛe%ƒowt}ZJo-vnmڲ%(2Z!+!Bm*,3p:p[f|PIڔhOX-PArf]-=GqR70hqQdLz:#Uj, rnoXQXs衺jJ %MVOl\©j8yo9vcQ pCNU{¨Ӂ5!%C21G 7϶Z1W |.w@Ra%*҉3iщ*t 8Shhg/YfZA(D)rQ4)?2JlAvAM6$Sk)TªMĆѮl!'dH ♰P-Q`qX*0c7*? ?pO-Hfjv>V*]I-YI9< J08;<9WKQʓ+5,SzMI8>lT<_ z` &5|Q_d "t06z&8Q˞G?j]# j2 .w#DWQP}\gk{G>;.ӯ>?=T\i6}2ZA>ǑeA bgt"6.eƮ#;fTddGiF)RRn& fkR1=CQf5WB]wpU}M;HZcd=N:#(1nO.6 IZȞܡ.<R{# NJ?ab's#q.rՏ `B3іT̩m/,"96ҞNϥ`YdBNˆ_XEV5TK/ 3̃?pt†:ˉ1%=lbƫ< 2T>qFQPdy8%w.$$ -4#~6e"nJT֋wi򗙲Z&_+Z#v3Bu^Ht"/弳v#[ PnsuX&o'˓N+Qodá=8;&Trm13F(6Lۙ:~L4%SawaWG&+Ԣޞ8}>dJ)f;-ް6pW7_3pTq8j4Hpd;T2,q&$f'CZt滜̤:wH3.y@]^#5}ؗo6G:XyݸLx%Y7£ $^350O9:eWyʛ0PX%j_tmP{j0t+C6 |R9X)oʉZI`34 W)ҙbpE0zTKsj1~Mm򄾢BOU~^`na\ Mgw4,ZzuN!KO31U$# Y]d5Ps2mt5ޅ7h (]HFu zTJk ۂi#wd)gT2 3{p F0:w o‚c?2 ($b>j:Fv@4c^3j=22<"pZn=ENBiM$es.l:3>Wt;{iE$Hamj9Py H3/@M9cepVAӻ ߸ēZR`7Y֐ݨb 7g:IuH:cvWN},/Wp )(=Έp0\0nE Xw/}Wy냑ΕF6C4IM\X^p@F ^|ʊm:g*ɨ堔Ã8zOH2YDEעORNrx'Lv,l`SA !Wy_C,,l7c-I:5zs<߭ٹk ,|G]5O1[0](@sU!i`^6*9%.q o(&xvd5n}Px]S\jb]RϷA6 y\ {!E]dۂ({!p|}>v1 4#!h$U)EÎyC<0F |mM/OO wH%"kQ6w\J4IܒKPEAI<;4 ĶMwQJ戔ucc@'>߸m$9iL=i!A$5j)ò׀yk]X^c,ؚQ򬺻6+`yUc:)Yи/!v,?'B,9^JD _Oۯ,rh4ZL4{i'\ܽ?`,RВ+9bq,6ITE(S~3cT\Kx1&n1wGCKPJ{`T>kKϳ_AV0@ݎ~/~mb`Q9~v )ʛ1'ˊ >U0iscoEcYcj#|}AIN]7tPɓJ2F!":ث:DN͐%ɘԲ" T2q`#Z͎K'`*2KVc?v5/խ"ci)-6E(S #>jeyVm L z-O9 Ü%VO[WνT¦#t>)G$ezmǟ@ ToĄHRs(\I+ah&v4_1pҎp\^eV>q y\tj{$*m<ӍpڻM n ՇՐU |PZO:jPC^0̂WQo"ڗr״PC՛KvA }Yy AQx'&V%RcMЁ30B,H)`K]J;,o4|Ko+joaiE_kK#'a2\T dvmqD{*]`˿ڼ0dz¬C^jx<%eӏpq=bH]M``H枔Kg5.X _y;V\nX.=Xg]+i75+>?JJ4Q5SWa 4ZC{.ȫ,)5P GiJɎ6c֦+ >0LV3zz0C1wX/$U(~_TLƩ$Z!ԧBgZ' r<; FN2q =m*77)"j{r\.T ʹ*Y~ŭ{{9j[&y" G{tf0uA}NQ&)'״4Pwj)A-u@R=pM@I [YH06~ :0[RDjZe(7W/ ߙ^HQLh \Ko`8Ql|]dL`Ai2 Ll7|(6"[ VumI!pKPgԨbQsTc(cBG_:9WXYaEMeF$&.Y飝XR[R9]#xtΒ;j[-Xt=C] ju$Yw@;+?";M>HdKx3Gӕ5u~dl+_5D͉)'343췂'SЈhha< {hƮ'amղÁu}"e8X“w0}Ɔ.uԾبFhwC'q u1$&w^~jt<ceyqvw;ؙhubd1ާNq@OH9)4ﵱp$bf |_)S4 vJ L|=}l%o_*mQA~Q j yAeoz* ?6.nPYF+qBY/9/V/k;@7#3Tsե(T@L~QE7̴PP&a~$=oF"6O>ly'zM2nft|ԉ+VǨژ ;qtۢZC.s U/M\u=t`_JMϩm7|`b(1ʌdzBUJ8hV(ӃCWU4LvkЛ* K@\=r.E!H< *kшG#FHC`B/OɯM=$&r l,7Y<1j=yIZu[')y9"W)mF~:,R*Eoި^U<J9G?}.gOKרaDCb O0˿PO 1f߳1}+y&-%P%=TnӡGVwف+C3|0렐*o 1;{'vnq 0 I۽R{GĆ"I!B(AU_[y^W& c9{۠93PچXaV)ؠDdi}aNtVwVfBwjLQfscn3v: ?c~[K6h,hb?4'7DIg;t)R%E;0ivZ02<+ OIH^Q־nY]RQ;ta N zKxCM*B=2^Vd:`3|tsŖ%LrӃF̜ҜN>!u7ۼStOװwoF839eYVҙ&%; 7=p'˥'=;ŭyS^ꗜd|xqL/QMVUoGѪ*hU= "'UPB@jX] 9(xUriIgř2)NSTZX!PwWi&CP& H]yԁƎ6{V%ԝP9ڕ#P`tƳT|or<>3S>IR/63c(c8`ZMw./2H{5{ fSx #m *rW[AV4:3:(ns+yYqUW]S#MS] ׬9T)n%w@,f[wV+,ڄKԂ.j+j=NK9GqCZ`>b⇸~%ut뵈U=,߲2Y Ғq}#8XE;2A<. %nZp/HR%s_6Ƅ6+4ONMӞt7x1o&Aϓ^V[@@; ފauۖY~mv’!Ezk!?II$Zb&r~("5|SޓT90<-a9*<\dr୅6MLHzjrINCqÂֶ[`.HDǣɫ$ = G2-50?,ۃ7Qvr2Lc tB-⒵),"6.7J}z#F#ٽf!0AQ,><2Yz^إvF`ZHbN* 㿨X5ЮىYs%Q/;FBcI46/BVm&mb/jLn ( !@cu=r"#ptH'?\Z =@;$BMF2ѲѭRh4ݳA~ۄToI7tvW{nW/5 FѸLԐm2.jOiȓӉk*0t X$a=jNpY10y\.!俙~/krOZR`@׾!5&sEF.6K+l֥ $ !i׏Ho.M%Ss~ᷥN0Y &0 )=׽$D= uʳP*NcaEX3YEX~i8$%eE8shnuѦ m i^ԆilQy>H1ì)7xČ98YFV …^J51J=Ge 5J};U^t~`D{Z,;ku2)!)60Kgِ4Ĥl^Jo82 i&2xJi%N yUR7+-_!N]9al9 ^ʖ w&&3.G3'Qƴ!G-_ח`oYRv7y/]w7SQj9?$e%1sqC32n=醮Ĉ6Z}ZsWȌlx.>7e8WdH6訸he/Bu״z|(+\4lSЈ^i]+Ix2'.EיKPc*^+PXÿ>EX9@tاEy<~BC)n M-o$$ %͕LfP1.GHcw=6b?Ud3  m5]ޞ+?-Az[X0;xe?JF6 {rQ?J l_G=䂖J/WðVx ˿X'72mdQ ?]̸b3'7-/ynD6a^ ''&@7H($C17s:bck[UkVw#N\Rx3'ߥĨ[fnu;H RQ7.Ce54w0iX˩`~u"/ w1 CnH୬El$9'5 ^p>େ'+BiBo}'7mA&_j(6.: Qx~|ii !o,ɴR62:z+:A]0VY%(=LfVTp -Je|<ҨmN l`O,@Ü6buF8ڋQQn|".RF+="zbCxqMd˺j6tyUkTA+4[CdQY2ȪyD;U_ZCHev E3ÒGoO+!"ƚ_-3< Dh=拏&ZF}T&P8i=huk%eϬ)23Q9Dg{.U^^uߪT 0feI378Q\ҎuaN!B=޿#-%HQUOc'z 6;tu~K}.ƃ`\DV]^ZiKx67ܦDď:̮Δ?BUVZc"9vt`?E6 endstream endobj 722 0 obj << /Type /ObjStm /N 100 /First 917 /Length 3437 /Filter /FlateDecode >> stream x[ks6_tL_3I&uӬ9flmd#M\@YUaPA.Hq[qWPBZ2* ^%PZR.PEt][^Ht"p "Ch1Q-n!JSHNBʀ+zpYeH!!TCcBq{0%*](e GBiA-yY{(t "p*`M0J@-tہThhd09(P"Q4 ؐ-KHׂ@O-4f؁.pӦВ8!C8ԡ0:5jLa`5UTa &P(G3h`tϡ=RЕi I.@j_`Kt,FP8`2~A@Nv$ LKꤣ5eEMB 2aMf`4 d^6QE Ôd֓JhtEAx $ Wi@WЇ GTp9͟zx ԁ  aԞWxbA-*tjUP]T;fÓOp~ΎgVqqgx:Őx yYy9xx>/8];UCՄ'6fj>gl&I&ˋcMؔMp.mk5Lr4=e}f|1:=וȎ39W_0|ճ])[tV/wdVFЛ3nwwEwo~x;7ю N^̔jeN;"EؔM)T;/}y~/FpsP-7ObGCaEf(d>xP ux*AwR.z{IL/^L\f^;8p5/ <Ktg`S(x`^:9%'h䓭n)bծu{9~<#ЃZ?Rgq#:vgoaw::gO~ޣU^Uz{M1 o/K\)m#*[~Czj s8NF>7NM5=MNM ͒^uTt.QwZ^x`Q4(z?8b":i̴98ҝ+QMfg8gV'H=O$ fcM=z\(2,Mhhuk2o4% Ol%N׮IsiF#у# 5ɑgᦎVMHj|fSQHZx H~ac"U$<(92:ZiYN&.KѭxU]y{ڐm6{VX~gm]»vbo<60+mG`﹥ fj^P#"p^ŷ-W?_fŷp.Ӎokun :iaԩuK` Rula[M`3b5lVb!ƷyU9@+lRuF)2n(n|W)Ձf3h 4m Zȑ+6ݜ>[Rζ~&ytټ LI]'k|GCz ʸ~x=~O}1N2-D\=//0;i :}n:_u&. 5~k&5k ęIci,7!1\>FIY*;Y-?QI m3FooNLɮuu#''.H}8 Dmγky/= endstream endobj 831 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.16)/Keywords() /CreationDate (D:20200123120042-06'00') /ModDate (D:20200123120042-06'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) kpathsea version 6.2.1) >> endobj 770 0 obj << /Type /ObjStm /N 77 /First 671 /Length 2973 /Filter /FlateDecode >> stream xڍZMsܸWhmU,⻡ڪ-fk{G4xf<Č@6HbэFFAmmn|(k|tK[6,i\ M~٭Sw8r@Mî;<Uxޭ'l&2("9uQ1_* W*^$nl7yOΎq<55Tf$ :Q.Yn QS3 @ݎ$ LHb[R : FQl]hY$ E҂het![}iVC,}%P -A,vifY:p8ʁ3 іXZ; )5o~(.mԠh7E-BqѢhQ#Oy=x(,ZT- HjDHM֫o#0#yܩ SjS3( JjE=A9bPliFn<5Qb8͔FNqvL;ੇ,qQP@P?>ʇQ8aZHM6,'n#SqtVOƁZ9dw5n8Pk8P+1jE@),FM[uS0AMw~ۃZ?_=j~RA(d>9OoDP+.XtxжQz^T5pkp}kDA`!ߙz݀WZxNW!|=}EBM?KQ`!H70JFkOF@P!/MvimPv!s!7p!N %*ٔw NS.ߔ/y{AZ&8 z(wsکBSF, o,rSP^GtrړrS,1O* TPޒtx/^}smvO]ץ{i&zp巗ϱ(}9!hAw endstream endobj 832 0 obj << /Type /XRef /Index [0 833] /Size 833 /W [1 3 1] /Root 830 0 R /Info 831 0 R /ID [<537D6FDE6320E14ACB8E6F3E0EE8F05C> <537D6FDE6320E14ACB8E6F3E0EE8F05C>] /Length 1888 /Filter /FlateDecode >> stream x%KlVEgB@)J[hii BCKr+PD &pcb$J&&q֍.Dc8nLܘB7n379_\漫j+q"s}<Ȉ'VKs(#Jl/rPA 'vX *PMlnoUb逞&1}^/*s;@L8H1FNpbg18Jl1V#k-XGL ڈi]Xh'VYڦ:M3 bW=#ISjĶhSݧ5Gs&Elpb49bc]%v0L&4G(1#NiV[48&$s޹Z4|+́E̋b+`\WUp \k 4* W5s-JղK %6j`=#{W^pcOL+Jynv `x8[81s}`b9.ڻ}i2ڜlHu[~CȶG)bw ][@`v00N3p͜MONZm7`Wp `|</3u>Q8;b8 0p|+1kĬQG"-gRcFj [<1a\npCΈ;#+b ;|iħF|hxZm Hލ.PAA^%^V> k[Z)5J|p`B)W9dѢ;cޭ;i8ٱ8Nt ^6g``,dĮ(8C}6FA.vT1 fwj3|D{h̋^e,`ɻep\ p(ּ{B@j6c٣my{0KfH-oFx>**~ %T>~A#KlE8F3#G}aA=Q$ RCʟ=[F#yŴ~K"` [pbM044444 MCPCPV֐֐(0 AaԢƪFIbj$PCUCUCUCUCUCUCUCUCUCU6QZU!!!!zא֐0M\bp!![6D6D6D6D6vh347in(m(m(mۦܮd܉MTrT 'M蛤y]L+j~BI OP?~B 'OʎjnPV2+-tF (FF ߙB)_}|TO>[PuQ!BBtg츺[t<zp4/FA - t@. N[)8 t_= 90tѾ8&$πY0XK`>O %, endstream endobj startxref 171642 %%EOF tidyr/tests/0000755000176200001440000000000013437754024012560 5ustar liggesuserstidyr/tests/testthat/0000755000176200001440000000000013612577552014424 5ustar liggesuserstidyr/tests/testthat/test-pivot-wide.R0000644000176200001440000000733513612142455017611 0ustar liggesuserscontext("test-pivot-wide") test_that("can pivot all cols to wide", { df <- tibble(key = c("x", "y", "z"), val = 1:3) pv <- pivot_wider(df, names_from = key, values_from = val) expect_named(pv, c("x", "y", "z")) expect_equal(nrow(pv), 1) }) test_that("non-pivoted cols are preserved", { df <- tibble(a = 1, key = c("x", "y"), val = 1:2) pv <- pivot_wider(df, names_from = key, values_from = val) expect_named(pv, c("a", "x", "y")) expect_equal(nrow(pv), 1) }) test_that("implicit missings turn into explicit missings", { df <- tibble(a = 1:2, key = c("x", "y"), val = 1:2) pv <- pivot_wider(df, names_from = key, values_from = val) expect_equal(pv$a, c(1, 2)) expect_equal(pv$x, c(1, NA)) expect_equal(pv$y, c(NA, 2)) }) test_that("warn when overwriting existing column", { df <- tibble( a = c(1, 1), key = c("a", "b"), val = c(1, 2) ) expect_error( pivot_wider(df, names_from = key, values_from = val), "bad names" ) }) test_that("grouping is preserved", { df <- tibble(g = 1, k = "x", v = 2) out <- df %>% dplyr::group_by(g) %>% pivot_wider(names_from = k, values_from = v) expect_equal(dplyr::group_vars(out), "g") }) # keys --------------------------------------------------------- test_that("can override default keys", { df <- tribble( ~row, ~name, ~var, ~value, 1, "Sam", "age", 10, 2, "Sam", "height", 1.5, 3, "Bob", "age", 20, ) pv <- df %>% pivot_wider(id_cols = name, names_from = var, values_from = value) expect_equal(nrow(pv), 2) }) # non-unqiue keys --------------------------------------------------------- test_that("duplicated keys produce list column with warning", { df <- tibble(a = c(1, 1, 2), key = c("x", "x", "x"), val = 1:3) expect_warning( pv <- pivot_wider(df, names_from = key, values_from = val), "list-col" ) expect_equal(pv$a, c(1, 2)) expect_equal(as.list(pv$x), list(c(1L, 2L), 3L)) }) test_that("warning suppressed by supplying values_fn", { df <- tibble(a = c(1, 1, 2), key = c("x", "x", "x"), val = 1:3) expect_warning( pv <- pivot_wider(df, names_from = key, values_from = val, values_fn = list(val = list) ), NA ) expect_equal(pv$a, c(1, 2)) expect_equal(as.list(pv$x), list(c(1L, 2L), 3L)) }) test_that("values_summarize applied even when no-duplicates", { df <- tibble(a = c(1, 2), key = c("x", "x"), val = 1:2) pv <- pivot_wider(df, names_from = key, values_from = val, values_fn = list(val = list) ) expect_equal(pv$a, c(1, 2)) expect_equal(as.list(pv$x), list(1L, 2L)) }) # multiple values ---------------------------------------------------------- test_that("can pivot from multiple measure cols", { df <- tibble(row = 1, var = c("x", "y"), a = 1:2, b = 3:4) sp <- build_wider_spec(df, names_from = var, values_from = c(a, b)) pv <- pivot_wider_spec(df, sp) expect_named(pv, c("row", "a_x", "a_y", "b_x", "b_y")) expect_equal(pv$a_x, 1) expect_equal(pv$b_y, 4) }) test_that("can pivot from multiple measure cols using all keys", { df <- tibble(var = c("x", "y"), a = 1:2, b = 3:4) sp <- build_wider_spec(df, names_from = var, values_from = c(a, b)) pv <- pivot_wider_spec(df, sp) expect_named(pv, c("a_x", "a_y", "b_x", "b_y")) expect_equal(pv$a_x, 1) expect_equal(pv$b_y, 4) }) test_that("column order in output matches spec", { df <- tribble( ~hw, ~name, ~mark, ~pr, "hw1", "anna", 95, "ok", "hw2", "anna", 70, "meh", ) # deliberately create weird order sp <- tribble( ~hw, ~.value, ~.name, "hw1", "mark", "hw1_mark", "hw1", "pr", "hw1_pr", "hw2", "pr", "hw2_pr", "hw2", "mark", "hw2_mark", ) pv <- pivot_wider_spec(df, sp) expect_named(pv, c("name", sp$.name)) }) tidyr/tests/testthat/test-complete.R0000644000176200001440000000216113437754024017330 0ustar liggesuserscontext("complete") test_that("complete with no variables returns data as is", { expect_equal(complete(mtcars), mtcars) }) test_that("basic invocation works", { df <- tibble(x = 1:2, y = 1:2, z = 3:4) out <- complete(df, x, y) expect_equal(nrow(out), 4) expect_equal(out$z, c(3, NA, NA, 4)) }) test_that("preserves grouping", { df <- tibble(x = 1:2, y = 1:2, z = 3:4) %>% dplyr::group_by(x) out <- complete(df, x, y) expect_s3_class(out, "grouped_df") expect_equal(dplyr::groups(out), dplyr::groups(df)) }) test_that("expands empty factors", { f <- factor(levels = c("a", "b", "c")) df <- tibble(one = f, two = f) expect_equal(nrow(complete(df, one, two)), 9) expect_equal(ncol(complete(df, one, two)), 2) }) test_that("empty expansion returns original", { df <- tibble(x = character()) rs <- complete(df, y = NULL) expect_equal(rs, df) df <- tibble(x = 1:4) rs <- complete(df, y = NULL) expect_equal(rs, df) }) test_that("not drop unspecified levels in complete", { df <- tibble(x = 1:3, y = 1:3, z = c("a", "b", "c")) df2 <- df %>% complete(z = c("a", "b")) expect_equal(df, df2) }) tidyr/tests/testthat/test-append.R0000644000176200001440000000232413437754024016770 0ustar liggesuserscontext("test-append.R") test_that("columns in y replace those in x", { df1 <- data.frame(x = 1) df2 <- data.frame(x = 2) expect_equal(append_df(df1, df2), df2) }) test_that("after must be integer or character", { df1 <- data.frame(x = 1) df2 <- data.frame(x = 2) expect_error(append_df(df1, df2, after = 1), "must be character or integer") }) test_that("can append at any integer position", { df1 <- data.frame(x = 1, y = 2) df2 <- data.frame(a = 1) expect_named(append_df(df1, df2, 0L), c("a", "x", "y")) expect_named(append_df(df1, df2, 1L), c("x", "a", "y")) expect_named(append_df(df1, df2, 2L), c("x", "y", "a")) }) test_that("can append at any character position", { df1 <- data.frame(x = 1, y = 2) df2 <- data.frame(a = 1) expect_named(append_df(df1, df2, "x"), c("x", "a", "y")) expect_named(append_df(df1, df2, "y"), c("x", "y", "a")) }) test_that("can replace at any character position ", { df1 <- data.frame(x = 1, y = 2, z = 3) df2 <- data.frame(a = 1) expect_named(append_df(df1, df2, "x", remove = TRUE), c("a", "y", "z")) expect_named(append_df(df1, df2, "y", remove = TRUE), c("x", "a", "z")) expect_named(append_df(df1, df2, "z", remove = TRUE), c("x", "y", "a")) }) tidyr/tests/testthat/test-fill.R0000644000176200001440000000405413440317647016451 0ustar liggesuserscontext("fill") test_that("all missings left unchanged", { df <- tibble( lgl = c(NA, NA), int = c(NA_integer_, NA), dbl = c(NA_real_, NA), chr = c(NA_character_, NA) ) down <- fill(df, lgl, int, dbl, chr) up <- fill(df, lgl, int, dbl, chr, .direction = "up") expect_identical(down, df) expect_identical(up, df) }) test_that("missings are filled correctly", { # filled down from last non-missing df <- tibble(x = c(NA, 1, NA, 2, NA, NA)) out <- fill(df, x) expect_equal(out$x, c(NA, 1, 1, 2, 2, 2)) out <- fill(df, x, .direction = "up") expect_equal(out$x, c(1, 1, 2, 2, NA, NA)) out <- fill(df, x, .direction = 'downup') expect_equal(out$x, c(1, 1, 1, 2, 2, 2)) out <- fill(df, x, .direction = 'updown') expect_equal(out$x, c(1, 1, 2, 2, 2, 2)) }) test_that("missings filled down for each atomic vector", { df <- tibble( lgl = c(T, NA), int = c(1L, NA), dbl = c(1, NA), chr = c("a", NA), lst = list(1:5, NULL) ) out <- fill(df, tidyselect::everything()) expect_equal(out$lgl, c(TRUE, TRUE)) expect_equal(out$int, c(1L, 1L)) expect_equal(out$dbl, c(1, 1)) expect_equal(out$chr, c("a", "a")) expect_equal(out$lst, list(1:5, 1:5)) }) test_that("missings filled up for each vector", { df <- tibble( lgl = c(NA, T), int = c(NA, 1L), dbl = c(NA, 1), chr = c(NA, "a"), lst = list(NULL, 1:5) ) out <- fill(df, tidyselect::everything(), .direction = "up") expect_equal(out$lgl, c(TRUE, TRUE)) expect_equal(out$int, c(1L, 1L)) expect_equal(out$dbl, c(1, 1)) expect_equal(out$chr, c("a", "a")) expect_equal(out$lst, list(1:5, 1:5)) }) test_that("fill preserves attributes", { df <- tibble(x = factor(c(NA, "a", NA))) out_d <- fill(df, x) out_u <- fill(df, x, .direction = "up") expect_equal(attributes(out_d$x), attributes(df$x)) expect_equal(attributes(out_u$x), attributes(df$x)) }) test_that("fill respects grouping", { df <- tibble(x = c(1, 1, 2), y = c(1, NA, NA)) out <- df %>% dplyr::group_by(x) %>% fill(y) expect_equal(out$y, c(1, 1, NA)) }) tidyr/tests/testthat/test-pivot.R0000644000176200001440000000024413440047243016651 0ustar liggesuserscontext("test-pivot") test_that("basic sanity checks for spec occur", { expect_error(check_spec(1), "data.frame") expect_error(check_spec(mtcars), ".name") }) tidyr/tests/testthat/test-pack.R0000644000176200001440000000474513612143152016435 0ustar liggesuserscontext("test-pack") # pack -------------------------------------------------------------------- test_that("can pack multiple columns", { df <- tibble(a1 = 1, a2 = 2, b1 = 1, b2 = 2) out <- df %>% pack(a = c(a1, a2), b = c(b1, b2)) expect_named(out, c("a", "b")) expect_equal(out$a, df[c("a1", "a2")]) expect_equal(out$b, df[c("b1", "b2")]) }) test_that("packing no columns returns input", { df <- tibble(a1 = 1, a2 = 2, b1 = 1, b2 = 2) expect_equal(pack(df), df) }) test_that("all inputs must be named", { df <- tibble(a1 = 1, a2 = 2, b1 = 1, b2 = 2) expect_error(pack(df, a = c(a1, a2), c(b1, b2)), "must be named") expect_error(pack(df, c(a1, a2), c(b1, b2)), "must be named") }) test_that("grouping is preserved", { df <- tibble(g1 = 1, g2 = 1, g3 = 1) out <- df %>% dplyr::group_by(g1, g2) %>% pack(g = c(g2, g3)) expect_equal(dplyr::group_vars(out), "g1") }) # unpack ------------------------------------------------------------------ test_that("grouping is preserved", { df <- tibble(g = 1, x = tibble(y = 1)) out <- df %>% dplyr::group_by(g) %>% unpack(x) expect_equal(dplyr::group_vars(out), "g") }) test_that("can't unpack atomic vectors", { df <- tibble(x = 1:2) expect_error(df %>% unpack(x), "must be a data frame column") }) test_that("df-cols are directly unpacked", { df <- tibble(x = 1:3, y = tibble(a = 1:3, b = 3:1)) out <- df %>% unpack(y) expect_named(out, c("x", "a", "b")) expect_equal(out[c("a", "b")], df$y) }) test_that("can unpack 0-col dataframe", { df <- tibble(x = 1:3, y = tibble(.rows = 3)) out <- df %>% unpack(y) expect_named(out, c("x")) }) test_that("can unpack 0-row dataframe", { df <- tibble(x = integer(), y = tibble(a = integer())) out <- df %>% unpack(y) expect_named(out, c("x", "a")) }) test_that("can control name_repair", { df <- tibble(x = 1, y = tibble(a = 2), z = tibble(a = 3)) if (packageVersion("tibble") > "2.99") { expect_error(df %>% unpack(c(y, z)), class = "rlang_error") } else { expect_error(df %>% unpack(c(y, z)), "must not be duplicated") } expect_message( out <- df %>% unpack(c(y, z), names_repair = "unique"), "New names" ) expect_named(out, c("x", "a...2", "a...3")) out <- df %>% unpack(c(y, z), names_repair = "minimal") expect_named(out, c("x", "a", "a")) }) test_that("can choose to add separtor", { df <- tibble(x = 1, y = tibble(a = 2), z = tibble(a = 3)) out <- df %>% unpack(c(y, z), names_sep = "_") expect_named(out, c("x", "y_a", "z_a")) }) tidyr/tests/testthat/test-full_seq.R0000644000176200001440000000161213523107541017322 0ustar liggesuserscontext("full_seq") test_that("full_seq errors if sequence isn't regular", { expect_error(full_seq(c(1, 3, 4), 2), "not a regular sequence") expect_error(full_seq(c(0, 10, 20), 11, tol = 1.8), "not a regular sequence") }) test_that("full_seq with tol > 0 allows sequences to fall short of period", { expect_equal(full_seq(c(0, 10, 20), 11, tol = 2), c(0, 11, 22)) }) test_that("full_seq pads length correctly for tol > 0", { expect_equal(full_seq(c(0, 10, 16), 11, tol = 5), c(0, 11)) }) test_that("sequences don't have to start at zero", { expect_equal(full_seq(c(1, 5), 2), c(1, 3, 5)) }) test_that("full_seq fills in gaps", { expect_equal(full_seq(c(1, 3), 1), c(1, 2, 3)) }) test_that("preserves attributes", { x1 <- as.Date("2001-01-01") + c(0, 2) x2 <- as.POSIXct(x1) expect_s3_class(full_seq(x1, 2), "Date") expect_s3_class(full_seq(x2, 86400), c("POSIXct", "POSIXt")) }) tidyr/tests/testthat/test-spread.R0000644000176200001440000002046513437754024017005 0ustar liggesuserscontext("Spread") library(dplyr, warn.conflicts = FALSE) test_that("order doesn't matter", { df1 <- tibble(x = factor(c("a", "b")), y = 1:2) df2 <- tibble(x = factor(c("b", "a")), y = 2:1) one <- spread(df1, x, y) two <- spread(df2, x, y) %>% select(a, b) %>% arrange(a, b) expect_identical(one, two) df1 <- tibble(z = factor(c("b", "a")), x = factor(c("a", "b")), y = 1:2) df2 <- tibble(z = factor(c("a", "b")), x = factor(c("b", "a")), y = 2:1) one <- spread(df1, x, y) %>% arrange(z) two <- spread(df2, x, y) expect_identical(one, two) }) test_that("convert turns strings into integers", { df <- tibble(key = "a", value = "1") out <- spread(df, key, value, convert = TRUE) expect_is(out$a, "integer") }) test_that("duplicate values for one key is an error", { df <- tibble(x = factor(c("a", "b", "b")), y = c(1, 2, 2), z = c(1, 2, 2)) expect_error(spread(df, x, y), "Keys are shared for 2 rows:") }) test_that("factors are spread into columns (#35)", { data <- tibble( x = factor(c("a", "a", "b", "b")), y = factor(c("c", "d", "c", "d")), z = factor(c("w", "x", "y", "z")) ) out <- data %>% spread(x, z) expect_equal(names(out), c("y", "a", "b")) expect_true(all(vapply(out, is.factor, logical(1)))) expect_identical(levels(out$a), levels(data$z)) expect_identical(levels(out$b), levels(data$z)) }) test_that("drop = FALSE keeps missing combinations (#25)", { df <- tibble( x = factor("a", levels = c("a", "b")), y = factor("b", levels = c("a", "b")), z = 1 ) out <- df %>% spread(x, z, drop = FALSE) expect_equal(nrow(out), 2) expect_equal(ncol(out), 3) expect_equal(out$a[2], 1) }) test_that("drop = FALSE keeps missing combinations of 0-length factors (#56)", { df <- tibble( x = factor(, levels = c("a", "b")), y = factor(, levels = c("a", "b")), z = logical() ) out <- df %>% spread(x, z, drop = FALSE) expect_equal(nrow(out), 2) expect_equal(ncol(out), 3) expect_equal(out$a, c(NA, NA)) expect_equal(out$b, c(NA, NA)) }) test_that("drop = FALSE spread all levels including NA (#254)", { l <- c("a", "b", "c", "d") df <- tibble( x = factor(c("a", "b", "c", NA), levels = l), y = factor(c("a", "b", "c", "d")), z = factor(c("a", "b", "a", "b")) ) out <- df %>% spread(x, y, drop = FALSE) expect_equal(nrow(out), 2) expect_equal(ncol(out), 6) expect_equal(out$d, factor(c(NA, NA), levels = l)) expect_equal(out[[""]], factor(c(NA, "d"), levels = l)) }) test_that("spread preserves class of tibbles", { dat <- tibble( x = factor(c("a", "a", "b", "b")), y = factor(c("c", "d", "c", "d")), z = factor(c("w", "x", "y", "z")) ) dat %>% spread(x, z) %>% expect_is("tbl_df") }) test_that("dates are spread into columns (#62)", { df <- tibble( id = c("a", "a", "b", "b"), key = c("begin", "end", "begin", "end"), date = Sys.Date() + 0:3 ) out <- spread(df, key, date) expect_identical(names(out), c("id", "begin", "end")) expect_is(out$begin, "Date") expect_is(out$end, "Date") }) test_that("spread can produce mixed variable types (#118)", { df <- tibble( row = rep(1:2, 3), column = rep(1:3, each = 2), cell_contents = as.character(c( rep("Argentina", 2), 62.485, 64.399, 1952, 1957 )) ) out <- spread(df, column, cell_contents, convert = TRUE) expect_equivalent( vapply(out, class, ""), c("integer", "character", "numeric", "integer") ) }) test_that("factors can be used with convert = TRUE to produce mixed types", { df <- tibble( row = c(1, 2, 1, 2, 1, 2), column = c("f", "f", "g", "g", "h", "h"), contents = c("aa", "bb", "1", "2", "TRUE", "FALSE") ) out <- df %>% spread(column, contents, convert = TRUE) expect_is(out$f, "character") expect_is(out$g, "integer") expect_is(out$h, "logical") }) test_that("dates can be used with convert = TRUE", { df <- tibble( id = c("a", "a", "b", "b"), key = c("begin", "end", "begin", "end"), date = Sys.Date() + 0:3 ) out <- spread(df, key, date, convert = TRUE) expect_is(out$begin, "character") expect_is(out$end, "character") }) test_that("vars that are all NA are logical if convert = TRUE (#118)", { df <- tibble( row = c(1, 2, 1, 2), column = c("f", "f", "g", "g"), contents = c("aa", "bb", NA, NA) ) out <- df %>% spread(column, contents, convert = TRUE) expect_is(out$g, "logical") }) test_that("complex values are preserved (#134)", { df <- expand.grid(id = 1:2, key = letters[1:2], stringsAsFactors = TRUE) %>% mutate(value = 1:4 + 1i) out1 <- spread(df, key, value, convert = FALSE) out2 <- spread(df, key, value, convert = TRUE) expect_equal(out1$a, 1:2 + 1i) expect_equal(out2$a, 1:2 + 1i) expect_equal(out1$b, 3:4 + 1i) expect_equal(out2$b, 3:4 + 1i) }) test_that("can spread with nested columns", { df <- tibble(x = c("a", "a"), y = 1:2, z = list(1:2, 3:5)) out <- spread(df, x, y) expect_equal(out$a, 1:2) expect_equal(out$z, df$z) }) test_that("spreading empty data frame gives empty data frame", { df <- tibble(x = character(), y = numeric(), z = character()) rs <- spread(df, x, y) expect_equal(nrow(rs), 0) expect_named(rs, "z") df <- tibble(x = character(), y = numeric()) rs <- spread(df, x, y) expect_equal(nrow(rs), 0) expect_equal(ncol(rs), 0) }) test_that("spread gives one column when no existing non-spread vars", { df <- tibble( key = c("a", "b", "c"), value = c(1, 2, 3) ) expect_equal(df %>% spread(key, value), tibble(a = 1, b = 2, c = 3)) }) test_that("grouping vars are kept where possible", { # Can keep df <- tibble(x = 1:2, key = factor(c("a", "b")), value = 1:2) out <- df %>% group_by(x) %>% spread(key, value) expect_equal(groups(out), list(quote(x))) # Can't keep df <- tibble(key = factor(c("a", "b")), value = 1:2) out <- df %>% group_by(key) %>% spread(key, value) expect_equal(out, tibble(a = 1L, b = 2L)) }) test_that("col names never contains NA", { df <- tibble(x = c(1, NA), y = 1:2) df %>% spread(x, y) %>% expect_named(c("1", "")) df %>% spread(x, y, sep = "_") %>% expect_named(c("x_1", "x_NA")) }) test_that("never has row names (#305)", { df <- tibble(id = 1:2, x = letters[1:2], y = 1:2) expect_false( df %>% spread(x, y) %>% tibble::has_rownames() ) }) test_that("overwrites existing columns", { df <- tibble(x = 1:2, y = 2:1, key = c("x", "x"), value = 3:4) rs <- df %>% spread(key, value) expect_named(rs, c("y", "x")) expect_equal(rs$x, 3:4) }) test_that("spread doesn't convert data frames into tibbles", { df <- data.frame(x = c("a", "b"), y = 1:2) expect_equal(class(spread(df, x, y)), "data.frame") }) test_that("spread with fill replaces explicit missing values", { df <- tibble(key = factor("a"), value = NA) out <- spread(df, key, value, fill = 1) expect_equal(out, tibble(a = 1)) }) test_that("spread with fill replaces implicit missing values", { # Missing keys in some groups df <- tibble( x = factor(c("G1", "G2")), key = factor(c("a", "b")), value = c(1, 1) ) out <- spread(df, key, value, fill = 2) expect_equal(out, tibble(x = factor(c("G1", "G2")), a = c(1, 2), b = c(2, 1))) # Missing factor levels in key with drop = FALSE df <- tibble(key = factor("a", levels = c("a", "b")), value = 1) out <- spread(df, key, value, fill = 2, drop = FALSE) expect_equal(out, tibble(a = 1, b = 2)) }) test_that("ulevels preserves original factor levels", { x_na_lev <- factor(c("a", NA), exclude = NULL) expect_equal(levels(ulevels(x_na_lev)), c("a", NA)) x_na_lev_extra <- factor(c("a", NA), levels = c("a", "b", NA), exclude = NULL) expect_equal(levels(ulevels(x_na_lev_extra)), c("a", "b", NA)) x_no_na_lev <- factor(c("a", NA)) expect_equal(levels(ulevels(x_no_na_lev)), "a") x_no_na_lev_extra <- factor(c("a", NA), levels = c("a", "b")) expect_equal(levels(ulevels(x_no_na_lev_extra)), c("a", "b")) }) test_that("ulevels returns unique elements of a list for a list input", { test_list <- list(a = 1:6, b = 1:6) expect_equal(ulevels(test_list), unique(test_list)) }) test_that("spread works when id column has names (#525)", { df <- tibble( key = factor(c("a", "b", "c"), levels = letters[1:5]), out = 1:3, id = c(a = 1, b = 2, c = 3) ) res <- spread(df, key, out, drop = FALSE) expect_equal(names(res), c("id", letters[1:5])) }) tidyr/tests/testthat/test-rectangle.R0000644000176200001440000001357613612142023017461 0ustar liggesuserscontext("test-hoist") # hoist ------------------------------------------------------------------- test_that("hoist extracts named elements", { df <- tibble(x = list(list(1, b = "b"))) out <- df %>% hoist(x, a = 1, b = "b") expect_equal(out, tibble(a = 1, b = "b")) }) test_that("can require specific type with ptype", { df <- tibble(x = list( list(a = 1), list(a = "a") )) out <- df %>% hoist(x, a = "a", .ptype = list(a = character())) expect_equal(out, tibble(a = c("1", "a"))) }) test_that("doesn't simplify uneven lengths", { df <- tibble(x = list( list(a = 1), list(a = 2:3) )) out <- df %>% hoist(x, a = "a") expect_equal(out$a, list(1, 2:3)) }) test_that("doesn't simplify lists of lists", { df <- tibble(x = list( list(a = list(1)), list(a = list(2)) )) out <- df %>% hoist(x, a = "a") expect_equal(out$a, list(list(1), list(2))) }) test_that("input validation catches problems", { df <- tibble(x = list(list(1, b = "b")), y = 1) expect_error(df %>% hoist(y), "list-column") expect_error(df %>% hoist(x, "a"), "named") }) # strike ------------------------------------------------------------------ test_that("strike can remove using a character vector", { x <- list(a = list(), b = list(a = 1, b = 2), c = "c") expect_equal(strike(x, "a"), x[c("b", "c")]) expect_equal(strike(x, "c"), x[c("a", "b")]) deep <- strike(x, c("b", "b")) expect_equal(deep, list(a = list(), b = list(a = 1), c = "c")) }) test_that("strike can remove using an integer vector", { x <- list(a = list(), b = list(a = 1, b = 2), c = "c") expect_equal(strike(x, 1), x[c(2, 3)]) expect_equal(strike(x, "c"), x[c("a", "b")]) deep <- strike(x, c(2, 2)) expect_equal(deep, list(a = list(), b = list(a = 1), c = "c")) }) test_that("strike can remove using a list", { x <- list(a = list(), b = list(a = 1, b = 2), c = "c") expect_equal(strike(x, list(1)), x[c(2, 3)]) expect_equal(strike(x, list("a")), x[c(2, 3)]) deep <- strike(x, list("b", 2)) expect_equal(deep, list(a = list(), b = list(a = 1), c = "c")) }) test_that("strike returns input if idx not present", { x <- list(a = list(), b = list(a = 1, b = 2), c = "c") expect_equal(strike(x, 4), x) expect_equal(strike(x, "d"), x) expect_equal(strike(x, list("b", 3)), x) expect_equal(strike(x, list("d", 3)), x) expect_equal(strike(x, list("b", "c")), x) expect_equal(strike(x, list(3, "b")), x) expect_equal(strike(x, list(4, "b")), x) }) test_that("ignores weird inputs", { x <- list(a = list(), b = list(a = 1, b = 2), c = "c") expect_equal(strike(x, NULL), x) expect_equal(strike(x, list()), x) expect_equal(strike(x, mean), x) expect_equal(strike(x, list(mean, mean)), x) }) # unnest_wider -------------------------------------------------------- test_that("number of rows is preserved", { df <- tibble( x = 1:3, y = list(NULL, c(a = 1), c(a = 1, b = 2)) ) out <- df %>% unnest_wider(y) expect_equal(nrow(out), 3) }) test_that("simplifies length-1 lists", { df <- tibble( x = 1:2, y = list( list(a = 1, b = 2), list(a = 3) ) ) out <- df %>% unnest_wider(y) expect_equal(out$a, c(1, 3)) expect_equal(out$b, c(2, NA)) }) test_that("can handle data frames consistently with vectors" , { df <- tibble(x = 1:2, y = list(tibble(a = 1:2, b = 2:3))) out <- df %>% unnest_wider(y) expect_named(out, c("x", "a", "b")) expect_equal(nrow(out), 2) }) test_that("bad inputs generate errors", { df <- tibble(x = 1, y = list(mean)) expect_error(unnest_wider(df, y), "must be list of vectors") }) test_that("list of 0-length vectors yields no new columns", { df <- tibble(x = 1:2, y = list(integer(), integer())) expect_named(unnest_wider(df, y), "x") # similarly when empty df <- tibble(x = integer(), y = list()) expect_named(unnest_wider(df, y), "x") }) # unnest_longer ----------------------------------------------------------- test_that("uses input for default column names", { df <- tibble(x = 1:2, y = list(1, 1:2)) out <- df %>% unnest_longer(y) expect_named(out, c("x", "y")) }) test_that("automatically adds id col if named", { df <- tibble(x = 1:2, y = list(c(a = 1), c(b = 2))) out <- df %>% unnest_longer(y) expect_named(out, c("x", "y", "y_id")) }) test_that("can force integer indexes", { df <- tibble(x = 1:2, y = list(1, 2)) out <- df %>% unnest_longer(y, indices_include = TRUE) expect_named(out, c("x", "y", "y_id")) out <- df %>% unnest_longer(y, indices_to = "y2") expect_named(out, c("x", "y", "y2")) }) test_that("preserves empty rows", { df <- tibble( x = 1:3, y = list(NULL, NULL, 1) ) out <- df %>% unnest_longer(y) expect_equal(nrow(out), 3) }) test_that("can handle data frames consistently with vectors" , { df <- tibble(x = 1:2, y = list(tibble(a = 1:2, b = 2:3))) out <- df %>% unnest_longer(y) expect_named(out, c("x", "y")) expect_equal(nrow(out), 4) }) test_that("bad inputs generate errors", { df <- tibble(x = 1, y = list(mean)) expect_error(unnest_longer(df, y), "must be list of vectors") }) # unnest_auto ------------------------------------------------------------- test_that("unnamed becomes longer", { df <- tibble(x = 1:2, y = list(1, 2:3)) expect_message(out <- df %>% unnest_auto(y), "unnest_longer") expect_equal(out$y, c(1, 2, 3)) }) test_that("common name becomes wider", { df <- tibble(x = 1:2, y = list(c(a = 1), c(a = 2))) expect_message(out <- df %>% unnest_auto(y), "unnest_wider") expect_named(out, c("x", "a")) }) test_that("no common name falls back to longer with index", { df <- tibble(x = 1:2, y = list(c(a = 1), c(b = 2))) expect_message(out <- df %>% unnest_auto(y), "unnest_longer") expect_named(out, c("x", "y", "y_id")) }) test_that("mix of named and unnamed becomes longer", { df <- tibble(x = 1:2, y = list(c(a = 1), 2)) expect_message(out <- df %>% unnest_auto(y), "unnest_longer") expect_named(out, c("x", "y")) }) tidyr/tests/testthat/test-unite.R0000644000176200001440000000221313612142023016623 0ustar liggesuserscontext("unite") test_that("unite pastes columns together & removes old col", { df <- tibble(x = "a", y = "b") out <- unite(df, z, x:y) expect_equal(names(out), "z") expect_equal(out$z, "a_b") }) test_that("unite does not remove new col in case of name clash", { df <- tibble(x = "a", y = "b") out <- unite(df, x, x:y) expect_equal(names(out), "x") expect_equal(out$x, "a_b") }) test_that("unite preserves grouping", { df <- tibble(g = 1, x = "a") %>% dplyr::group_by(g) rs <- df %>% unite(x, x) expect_equal(df, rs) expect_equal(class(df), class(rs)) expect_equal(dplyr::groups(df), dplyr::groups(rs)) }) test_that("drops grouping when needed", { df <- tibble(g = 1, x = "a") %>% dplyr::group_by(g) rs <- df %>% unite(gx, g, x) expect_equal(rs$gx, "1_a") expect_equal(dplyr::groups(rs), NULL) }) test_that("empty var spec uses all vars", { df <- tibble(x = "a", y = "b") expect_equal(unite(df, "z"), tibble(z = "a_b")) }) test_that("can remove missing vars on request", { df <- expand_grid(x = c("a", NA), y = c("b", NA)) out <- unite(df, "z", x:y, na.rm = TRUE) expect_equal(out$z, c("a_b", "a", "b", "")) }) tidyr/tests/testthat/test-pivot-long.R0000644000176200001440000001316713612142023017607 0ustar liggesuserscontext("test-pivot-long") test_that("can pivot all cols to long", { df <- tibble(x = 1:2, y = 3:4) pv <- pivot_longer(df, x:y) expect_named(pv, c("name", "value")) expect_equal(pv$name, rep(names(df), 2)) expect_equal(pv$value, c(1, 3, 2, 4)) }) test_that("values interleaved correctly", { df <- tibble( x = c(1, 2), y = c(10, 20), z = c(100, 200), ) pv <- pivot_longer(df, 1:3) expect_equal(pv$value, c(1, 10, 100, 2, 20, 200)) }) test_that("can add multiple columns from spec", { df <- tibble(x = 1:2, y = 3:4) sp <- tibble(.name = c("x", "y"), .value = "v", a = 1, b = 2) pv <- pivot_longer_spec(df, spec = sp) expect_named(pv, c("a", "b", "v")) }) test_that("preserves original keys", { df <- tibble(x = 1:2, y = 2, z = 1:2) pv <- pivot_longer(df, y:z) expect_named(pv, c("x", "name", "value")) expect_equal(pv$x, rep(df$x, each = 2)) }) test_that("can drop missing values", { df <- data.frame(x = c(1, NA), y = c(NA, 2)) pv <- pivot_longer(df, x:y, values_drop_na = TRUE) expect_equal(pv$name, c("x", "y")) expect_equal(pv$value, c(1, 2)) }) test_that("can handle missing combinations", { df <- tribble( ~id, ~x_1, ~x_2, ~y_2, "A", 1, 2, "a", "B", 3, 4, "b", ) pv <- pivot_longer(df, -id, names_to = c(".value", "n"), names_sep = "_") expect_named(pv, c("id", "n", "x", "y")) expect_equal(pv$x, 1:4) expect_equal(pv$y, c(NA, "a", NA, "b")) }) test_that("mixed columns are automatically coerced", { df <- data.frame(x = factor("a"), y = factor("b")) pv <- pivot_longer(df, x:y) expect_equal(pv$value, factor(c("a", "b"))) }) test_that("can override default output column type", { df <- tibble(x = "x", y = 1) pv <- pivot_longer(df, x:y, values_ptypes = list(value = list())) expect_equal(pv$value, list("x", 1)) }) test_that("can pivot to multiple measure cols", { df <- tibble(x = "x", y = 1) sp <- tribble( ~.name, ~.value, ~row, "x", "X", 1, "y", "Y", 1, ) pv <- pivot_longer_spec(df, sp) expect_named(pv, c("row", "X", "Y")) expect_equal(pv$X, "x") expect_equal(pv$Y, 1) }) test_that("original col order is preserved", { df <- tribble( ~id, ~z_1, ~y_1, ~x_1, ~z_2, ~y_2, ~x_2, "A", 1, 2, 3, 4, 5, 6, "B", 7, 8, 9, 10, 11, 12, ) pv <- pivot_longer(df, -id, names_to = c(".value", "n"), names_sep = "_") expect_named(pv, c("id", "n", "z", "y", "x")) }) test_that("handles duplicated column names", { df <- tibble(x = 1, a = 1, a = 2, b = 3, b = 4, .name_repair = "minimal") expect_warning(pv <- pivot_longer(df, -x), "Duplicate column names") expect_named(pv, c("x", "name", ".copy", "value")) expect_equal(pv$.copy, rep(1:2, times = 2)) expect_equal(pv$value, 1:4) }) test_that(".value can be at any position in `names_to`", { samp <- tibble( i = 1:4, y_t1 = rnorm(4), y_t2 = rnorm(4), z_t1 = rep(3, 4), z_t2 = rep(-2, 4), ) value_first <- pivot_longer(samp, -i, names_to = c(".value", "time"), names_sep = "_") samp2 <- dplyr::rename(samp, t1_y = y_t1, t2_y = y_t2, t1_z = z_t1, t2_z = z_t2) value_second <- pivot_longer(samp2, -i, names_to = c("time", ".value"), names_sep = "_") expect_identical(value_first, value_second) }) test_that("type error message use variable names", { df <- data.frame(abc = 1, xyz = "b") err <- capture_error(pivot_longer(df, everything())) expect_s3_class(err, "vctrs_error_incompatible_type") expect_equal(err$x_arg, "abc") expect_equal(err$y_arg, "xyz") }) test_that("grouping is preserved", { df <- tibble(g = 1, x1 = 1, x2 = 2) out <- df %>% dplyr::group_by(g) %>% pivot_longer(x1:x2, names_to = "x", values_to = "v") expect_equal(dplyr::group_vars(out), "g") }) # spec -------------------------------------------------------------------- test_that("multiple names requires names_sep/names_pattern", { df <- tibble(x_y = 1) expect_error( build_longer_spec(df, 1, names_to = c("a", "b")), "multiple names" ) expect_error( build_longer_spec(df, 1, names_to = c("a", "b"), names_sep = "x", names_pattern = "x" ), "one of `names_sep` or `names_pattern" ) }) test_that("names_sep generates correct spec", { df <- tibble(x_y = 1) sp <- build_longer_spec(df, 1, names_to = c("a", "b"), names_sep = "_") expect_equal(sp$a, "x") expect_equal(sp$b, "y") }) test_that("names_sep fails with single name", { df <- tibble(x_y = 1) expect_error(build_longer_spec(df, 1, names_to = "x", names_sep = "_"), "`names_sep`") }) test_that("names_pattern generates correct spec", { df <- tibble(zx_y = 1) sp <- build_longer_spec(df, 1, names_to = c("a", "b"), names_pattern = "z(.)_(.)") expect_equal(sp$a, "x") expect_equal(sp$b, "y") sp <- build_longer_spec(df, 1, names_to = "a", names_pattern = "z(.)") expect_equal(sp$a, "x") }) test_that("names_to can override value_to", { df <- tibble(x_y = 1) sp <- build_longer_spec(df, 1, names_to = c("a", ".value"), names_sep = "_") expect_equal(sp$.value, "y") }) test_that("names_prefix strips off from beginning", { df <- tibble(zzyz = 1) sp <- build_longer_spec(df, 1, names_prefix = "z") expect_equal(sp$name, "zyz") }) test_that("can cast to custom type", { df <- tibble(w1 = 1) sp <- build_longer_spec(df, 1, names_prefix = "w", names_ptypes = list(name = integer()) ) expect_equal(sp$name, 1L) }) test_that("Error if the `col` can't be selected.", { expect_error(pivot_longer(iris, matches("foo")), "select at least one") }) tidyr/tests/testthat/test-separate-rows.R0000644000176200001440000000327113516125434020312 0ustar liggesuserscontext("test-separate-rows.R") test_that("can handle collapsed rows", { df <- tibble(x = 1:3, y = c("a", "d,e,f", "g,h")) expect_equal(separate_rows(df, y)$y, unlist(strsplit(df$y, "\\,"))) }) test_that("can handle empty data frames (#308)", { df <- tibble(a = character(), b = character()) rs <- separate_rows(df, b) expect_equal(rs, tibble(a = character(), b = unspecified())) }) test_that("default pattern does not split decimals in nested strings", { df <- dplyr::tibble(x = 1:3, y = c("1", "1.0,1.1", "2.1")) expect_equal(separate_rows(df, y)$y, unlist(strsplit(df$y, ","))) }) test_that("preserves grouping", { df <- tibble(g = 1, x = "a:b") %>% dplyr::group_by(g) rs <- df %>% separate_rows(x) expect_equal(class(df), class(rs)) expect_equal(dplyr::groups(df), dplyr::groups(rs)) }) test_that("drops grouping when needed", { df <- tibble(x = 1, y = "a:b") %>% dplyr::group_by(x, y) out <- df %>% separate_rows(y) expect_equal(out$y, c("a", "b")) expect_equal(dplyr::groups(out), list(as.name("x"))) out <- df %>% dplyr::group_by(y) %>% separate_rows(y) expect_equal(dplyr::groups(out), NULL) }) test_that("convert produces integers etc", { df <- tibble(x = "1,2,3", y = "T,F,T", z = "a,b,c") out <- separate_rows(df, x, y, z, convert = TRUE) expect_equal(class(out$x), "integer") expect_equal(class(out$y), "logical") expect_equal(class(out$z), "character") }) test_that("leaves list columns intact (#300)", { df <- tibble(x = "1,2,3", y = list(1)) out <- separate_rows(df, x) # Can't compare tibbles with list columns directly expect_equal(names(out), c("x", "y")) expect_equal(out$x, as.character(1:3)) expect_equal(out$y, rep(list(1), 3)) }) tidyr/tests/testthat/test-nest.R0000644000176200001440000002066513612142562016473 0ustar liggesuserscontext("nest") # nest -------------------------------------------------------------------- test_that("nest turns grouped values into one list-df", { df <- tibble(x = c(1, 1, 1), y = 1:3) out <- nest(df, data = y) expect_equal(out$x, 1) expect_equal(length(out$data), 1L) expect_equal(out$data[[1L]], data.frame(y = 1:3)) }) test_that("nest uses grouping vars if present", { df <- tibble(x = c(1, 1, 1), y = 1:3) out <- df %>% dplyr::group_by(x) %>% nest() expect_s3_class(out, "grouped_df") expect_equal(out$data[[1]], data.frame(y = 1:3)) }) test_that("provided grouping vars override grouped defaults", { df <- tibble(x = 1, y = 2, z = 3) %>% dplyr::group_by(x) out <- df %>% nest(data = y) expect_s3_class(out, "grouped_df") expect_named(out, c("x", "z", "data")) expect_named(out$data[[1]], "y") }) test_that("puts data into the correct row", { df <- tibble(x = 1:3, y = c("B", "A", "A")) out <- nest(df, data = x) %>% dplyr::filter(y == "B") expect_equal(out$data[[1]]$x, 1) }) test_that("nesting everything yields a simple data frame", { df <- tibble(x = 1:3, y = c("B", "A", "A")) out <- nest(df, data = c(x, y)) expect_equal(length(out$data), 1L) expect_equal(out$data[[1L]], df) }) test_that("nest preserves order of data", { df <- tibble(x = c(1, 3, 2, 3, 2), y = 1:5) out <- nest(df, data = y) expect_equal(out$x, c(1, 3, 2)) }) test_that("empty factor levels don't affect nest", { df <- tibble( x = factor(c("z", "a"), levels = letters), y = 1:2 ) out <- nest(df, data = y) expect_equal(out$x, df$x) }) test_that("nesting works for empty data frames", { df <- tibble(x = integer(), y = character()) out <- nest(df, data = x) expect_named(out, c("y", "data")) expect_equal(nrow(out), 0L) out <- nest(df, data = c(x, y)) expect_named(out, "data") expect_equal(nrow(out), 0L) }) test_that("tibble conversion occurs in the `nest.data.frame()` method", { df <- data.frame(x = 1, y = 1:2) out <- df %>% nest(data = y) expect_s3_class(out, "tbl_df") expect_s3_class(out$data[[1L]], "tbl_df") }) test_that("can nest multiple columns", { df <- tibble(x = 1, a1 = 1, a2 = 2, b1 = 1, b2 = 2) out <- df %>% nest(a = c(a1, a2), b = c(b1, b2)) expect_named(out, c("x", "a", "b")) expect_equal(as.list(out$a), list(df[c("a1", "a2")])) expect_equal(as.list(out$b), list(df[c("b1", "b2")])) }) test_that("nesting no columns nests all inputs", { # included only for backward compatibility df <- tibble(a1 = 1, a2 = 2, b1 = 1, b2 = 2) expect_warning(out <- nest(df), "must not be empty") expect_named(out, "data") expect_equal(out$data[[1]], df) }) # unnest ------------------------------------------------------------------ test_that("can keep empty rows", { df <- tibble(x = 1:3, y = list(NULL, tibble(), tibble(a = 1))) out1 <- df %>% unnest(y) expect_equal(nrow(out1), 1) out2 <- df %>% unnest(y, keep_empty = TRUE) expect_equal(nrow(out2), 3) expect_equal(out2$a, c(NA, NA, 1)) }) test_that("empty rows still affect output type", { df <- tibble( x = 1:2, data = list( tibble(y = character(0)), tibble(z = integer(0)) ) ) out <- unnest(df, data) expect_equal(out, tibble(x = integer(), y = character(), z = integer())) }) test_that("bad inputs generate errors", { df <- tibble(x = 1, y = list(mean)) expect_error(unnest(df, y), "must be list of vectors") }) test_that("unesting combines augmented vectors", { df <- tibble(x = as.list(as.factor(letters[1:3]))) expect_equal(unnest(df, x)$x, factor(letters[1:3])) }) test_that("vector unnest preserves names", { df <- tibble(x = list(1, 2:3), y = list("a", c("b", "c"))) out <- unnest(df, x) expect_named(out, c("x", "y")) }) test_that("rows and cols of nested-dfs are expanded", { df <- tibble(x = 1:2, y = list(tibble(a = 1), tibble(b = 1:2))) out <- df %>% unnest(y) expect_named(out, c("x", "a", "b")) expect_equal(nrow(out), 3) }) test_that("can unnest nested lists", { df <- tibble( x = 1:2, y = list(list("a"), list("b")) ) rs <- unnest(df, y) expect_identical(rs, tibble(x = 1:2, y = list("a", "b"))) }) test_that("can unnest mixture of name and unnamed lists of same length", { df <- tibble( x = c("a"), y = list(y = 1:2), z = list(1:2) ) expect_identical( unnest(df, c(y, z)), tibble(x = c("a","a"), y = c(1:2), z = c(1:2)) ) }) test_that("can unnest list_of", { df <- tibble( x = 1:2, y = vctrs::list_of(1:3, 4:9) ) expect_equal( unnest(df, y), tibble(x = rep(1:2, c(3, 6)), y = 1:9) ) }) test_that("can combine NULL with vectors or data frames", { df1 <- tibble(x = 1:2, y = list(NULL, tibble(z = 1))) out <- unnest(df1, y) expect_named(out, c("x", "z")) expect_equal(out$z, 1) df2 <- tibble(x = 1:2, y = list(NULL, 1)) out <- unnest(df2, y) expect_named(out, c("x", "y")) expect_equal(out$y, 1) }) test_that("vectors become columns", { df <- tibble(x = 1:2, y = list(1, 1:2)) out <- unnest(df, y) expect_equal(out$y, c(1L, 1:2)) }) test_that("multiple columns must be same length", { df <- tibble(x = list(1:2), y = list(1:3)) expect_error(unnest(df, c(x, y)), class = "vctrs_error_incompatible_size") df <- tibble(x = list(1:2), y = list(tibble(y = 1:3))) expect_error(unnest(df, c(x, y)), class = "vctrs_error_incompatible_size") }) test_that("can use non-syntactic names", { out <- tibble("foo bar" = list(1:2, 3)) %>% unnest(`foo bar`) expect_named(out, "foo bar") }) # Empty inputs ------------------------------------------------------------ test_that("can unnest empty data frame", { df <- tibble(x = integer(), y = list()) out <- unnest(df, y) expect_equal(out, tibble(x = integer(), y = unspecified())) }) test_that("unnest() preserves ptype", { tbl <- tibble(x = integer(), y = list_of(ptype = tibble(a = integer()))) res <- unnest(tbl, y) expect_equal(res, tibble(x = integer(), a = integer())) }) test_that("errors on bad inputs", { df <- tibble(x = integer(), y = list()) expect_error(unnest(df, x), "list of vectors") }) test_that("unnest keeps list cols", { df <- tibble(x = 1:2, y = list(3, 4), z = list(5, 6:7)) out <- df %>% unnest(y) expect_equal(names(out), c("x", "y", "z")) }) # Deprecated behaviours --------------------------------------------------- test_that("warn about old style interface", { df <- tibble(x = c(1, 1, 1), y = 1:3) expect_warning(out <- nest(df, y), "data = c(y)", fixed = TRUE) expect_named(out, c("x", "data")) }) test_that("can control output column name", { df <- tibble(x = c(1, 1, 1), y = 1:3) expect_warning(out <- nest(df, y, .key = "y"), "y = c(y)", fixed = TRUE) expect_named(out, c("x", "y")) }) test_that("can control output column name when nested", { df <- dplyr::group_by(tibble(x = c(1, 1, 1), y = 1:3), x) expect_warning(out <- nest(df, .key = "y"), "`.key`", fixed = TRUE) expect_named(out, c("x", "y")) }) test_that(".key gets warning with new interface", { df <- tibble(x = c(1, 1, 1), y = 1:3) expect_warning(out <- nest(df, y = y, .key = "y"), ".key", fixed = TRUE) expect_named(df, c("x", "y")) }) test_that("cols must go in cols", { df <- tibble(x = list(3, 4), y = list("a", "b")) expect_warning(unnest(df, x, y), "c(x, y)", fixed = TRUE) }) test_that("need supply column names", { df <- tibble(x = 1:2, y = list("a", "b")) expect_warning(unnest(df), "c(y)", fixed = TRUE) }) test_that("sep combines column names", { df <- tibble(x = list(tibble(x = 1)), y = list(tibble(x = 1))) out <- expect_warning(df %>% unnest(c(x, y), .sep = "_"), "names_sep") expect_named(out, c("x_x", "y_x")) }) test_that("unnest has mutate semantics", { df <- tibble(x = 1:3, y = list(1, 2:3, 4)) out <- expect_warning(df %>% unnest(z = map(y, `+`, 1)), "mutate") expect_equal(out$z, 2:5) }) test_that(".drop and .preserve are deprecated", { df <- tibble(x = list(3, 4), y = list("a", "b")) expect_warning(df %>% unnest(x, .preserve = y), ".preserve") df <- tibble(x = list(3, 4), y = list("a", "b")) expect_warning(df %>% unnest(x, .drop = FALSE), ".drop") }) test_that(".id creates vector of names for vector unnest", { df <- tibble(x = 1:2, y = list(a = 1, b = 1:2)) out <- expect_warning(unnest(df, y, .id = "name"), "names") expect_equal(out$name, c("a", "b", "b")) }) test_that("grouping is preserved", { df <- tibble(g = 1, x = list(1:3)) %>% dplyr::group_by(g) rs <- df %>% unnest(x) expect_equal(rs$x, 1:3) expect_equal(class(df), class(rs)) expect_equal(dplyr::groups(df), dplyr::groups(rs)) }) tidyr/tests/testthat/test-expand.R0000644000176200001440000000624113612142023016763 0ustar liggesuserscontext("expand") test_that("expand completes all values", { df <- data.frame(x = 1:2, y = 1:2) out <- expand(df, x, y) expect_equal(nrow(out), 4) }) test_that("multiple variables in one arg doesn't expand", { df <- data.frame(x = 1:2, y = 1:2) out <- expand(df, c(x, y)) expect_equal(nrow(out), 2) }) test_that("nesting doesn't expand values", { df <- data.frame(x = 1:2, y = 1:2) expect_equal(expand(df, nesting(x, y)), df) }) test_that("unnamed data frames are flattened", { df <- data.frame(x = 1:2, y = 1:2) out <- expand(df, nesting(x, y)) expect_equal(out$x, df$x) out <- crossing(df) expect_equal(out$x, df$x) }) test_that("named data frames are not flattened", { df <- data.frame(x = 1:2, y = 1:2) out <- expand(df, x = nesting(x, y)) expect_equal(out$x, df) out <- crossing(x = df) expect_equal(out$x, df) }) test_that("expand works with non-standard col names", { df <- tibble(` x ` = 1:2, `/y` = 1:2) out <- expand(df, ` x `, `/y`) expect_equal(nrow(out), 4) }) test_that("expand excepts expressions", { df <- expand(data.frame(), x = 1:3, y = 3:1) expect_equal(df, crossing(x = 1:3, y = 3:1)) }) test_that("expand respects groups", { df <- tibble( a = c(1L, 1L, 2L), b = c(1L, 2L, 1L), c = c(2L, 1L, 1L) ) out <- df %>% dplyr::group_by(a) %>% expand(b, c) %>% nest() expect_equal(out$data[[1]], crossing(b = 1:2, c = 1:2)) expect_equal(out$data[[2]], tibble(b = 1L, c = 1L)) }) test_that("preserves ordered factors", { df <- tibble(a = ordered("a")) out <- expand(df, a) expect_equal(df$a, ordered("a")) }) test_that("preserves NAs", { x <- c("A", "B", NA) expect_equal(crossing(x)$x, x) expect_equal(nesting(x)$x, x) }) test_that("crossing preserves factor levels", { x_na_lev_extra <- factor(c("a", NA), levels = c("a", "b", NA), exclude = NULL) expect_equal(levels(crossing(x = x_na_lev_extra)$x), c("a", "b", NA)) }) test_that("NULL inputs", { tb <- tibble(x = 1:5) expect_equal(expand(tb, x, y = NULL), tb) expect_equal(nesting(x = tb$x, y = NULL), tb) expect_equal(crossing(x = tb$x, y = NULL), tb) }) test_that("zero length input gives zero length output", { tb <- tibble(x = character()) expect_equal(expand(tb, x), tb) expect_equal(expand(tb, y = NULL), tibble()) expect_equal( expand_grid(x = integer(), y = 1:3), tibble(x = integer(), y = integer()) ) }) test_that("expand & crossing expand missing factor leves; nesting does not", { tb <- tibble( x = 1:3, f = factor("a", levels = c("a", "b")) ) expect_equal(nrow(expand(tb, x, f)), 6) expect_equal(nrow(crossing(!!!tb)), 6) expect_equal(nrow(nesting(!!!tb)), nrow(tb)) }) test_that("expand() reconstructs input dots is empty", { expect_is(expand(mtcars), "data.frame") expect_is(expand(as_tibble(mtcars)), "tbl_df") }) test_that("crossing checks for bad inputs", { expect_error( crossing(x = 1:10, y = quote(a)), class = "vctrs_error_scalar_type" ) }) test_that("crossing handles list columns", { x <- 1:2 y <- list(1, 1:2) out <- crossing(x, y) expect_equal(nrow(out), 4) expect_s3_class(out, "tbl_df") expect_equal(out$x, rep(x, each = 2)) expect_equal(out$y, rep(y, 2)) }) tidyr/tests/testthat/test-separate.R0000644000176200001440000000703113437754024017325 0ustar liggesuserscontext("Separate") test_that("missing values in input are missing in output", { df <- tibble(x = c(NA, "a b")) out <- separate(df, x, c("x", "y")) expect_equal(out$x, c(NA, "a")) expect_equal(out$y, c(NA, "b")) }) test_that("positive integer values specific position between characters", { df <- tibble(x = c(NA, "ab", "cd")) out <- separate(df, x, c("x", "y"), 1) expect_equal(out$x, c(NA, "a", "c")) expect_equal(out$y, c(NA, "b", "d")) }) test_that("negative integer values specific position between characters", { df <- tibble(x = c(NA, "ab", "cd")) out <- separate(df, x, c("x", "y"), -1) expect_equal(out$x, c(NA, "a", "c")) expect_equal(out$y, c(NA, "b", "d")) }) test_that("extreme integer values handled sensibly", { df <- tibble(x = c(NA, "a", "bc", "def")) out <- separate(df, x, c("x", "y"), 3) expect_equal(out$x, c(NA, "a", "bc", "def")) expect_equal(out$y, c(NA, "", "", "")) out <- separate(df, x, c("x", "y"), -3) expect_equal(out$x, c(NA, "", "", "")) expect_equal(out$y, c(NA, "a", "bc", "def")) }) test_that("convert produces integers etc", { df <- tibble(x = "1-1.5-FALSE") out <- separate(df, x, c("x", "y", "z"), "-", convert = TRUE) expect_equal(out$x, 1L) expect_equal(out$y, 1.5) expect_equal(out$z, FALSE) }) test_that("convert keeps characters as character", { df <- tibble(x = "X-1") out <- separate(df, x, c("x", "y"), "-", convert = TRUE) expect_equal(out$x, "X") expect_equal(out$y, 1L) }) test_that("too many pieces dealt with as requested", { df <- tibble(x = c("a b", "a b c")) expect_warning(separate(df, x, c("x", "y")), "Additional pieces discarded") merge <- separate(df, x, c("x", "y"), extra = "merge") expect_equal(merge[[1]], c("a", "a")) expect_equal(merge[[2]], c("b", "b c")) drop <- separate(df, x, c("x", "y"), extra = "drop") expect_equal(drop[[1]], c("a", "a")) expect_equal(drop[[2]], c("b", "b")) expect_warning(separate(df, x, c("x", "y"), extra = "error"), "deprecated") }) test_that("too few pieces dealt with as requested", { df <- tibble(x = c("a b", "a b c")) expect_warning(separate(df, x, c("x", "y", "z")), "Missing pieces filled") left <- separate(df, x, c("x", "y", "z"), fill = "left") expect_equal(left$x, c(NA, "a")) expect_equal(left$y, c("a", "b")) expect_equal(left$z, c("b", "c")) right <- separate(df, x, c("x", "y", "z"), fill = "right") expect_equal(right$z, c(NA, "c")) }) test_that("preserves grouping", { df <- tibble(g = 1, x = "a:b") %>% dplyr::group_by(g) rs <- df %>% separate(x, c("a", "b")) expect_equal(class(df), class(rs)) expect_equal(dplyr::groups(df), dplyr::groups(rs)) }) test_that("drops grouping when needed", { df <- tibble(x = "a:b") %>% dplyr::group_by(x) rs <- df %>% separate(x, c("a", "b")) expect_equal(rs$a, "a") expect_equal(dplyr::groups(rs), NULL) }) test_that("overwrites existing columns", { df <- tibble(x = "a:b") rs <- df %>% separate(x, c("x", "y")) expect_named(rs, c("x", "y")) expect_equal(rs$x, "a") }) test_that("drops NA columns", { df <- tibble(x = c(NA, "ab", "cd")) out <- separate(df, x, c(NA, "y"), 1) expect_equal(names(out), "y") expect_equal(out$y, c(NA, "b", "d")) }) test_that("checks type of `into` and `sep`", { df <- tibble(x = "a:b") expect_error( separate(df, x, "x", FALSE), "must be either numeric or character" ) expect_error( separate(df, x, FALSE), "must be a character vector" ) }) test_that("list_indices truncates long warnings", { expect_equal(list_indices(letters, max = 3), "a, b, c, ...") }) tidyr/tests/testthat/test-nest-legacy.R0000644000176200001440000002000413523107541017717 0ustar liggesusers# nest -------------------------------------------------------------------- test_that("nest turns grouped values into one list-df", { df <- tibble(x = c(1, 1, 1), y = 1:3) out <- nest_legacy(df, y) expect_equal(out$x, 1) expect_equal(length(out$data), 1L) expect_equal(out$data[[1L]], data.frame(y = 1:3)) }) test_that("nest works with data frames too", { df <- data.frame(x = c(1, 1, 1), y = 1:3) out <- nest_legacy(df, y) expect_equal(out$x, 1) expect_equal(length(out$data), 1L) expect_equal(out$data[[1L]], data.frame(y = 1:3)) }) test_that("can control output column name", { df <- tibble(x = c(1, 1, 1), y = 1:3) out <- nest_legacy(df, y, .key = y) expect_equal(names(out), c("x", "y")) out <- nest_legacy(df, y, .key = "y") expect_equal(names(out), c("x", "y")) }) test_that("nest doesn't include grouping vars in nested data", { df <- tibble(x = c(1, 1, 1), y = 1:3) out <- df %>% dplyr::group_by(x) %>% nest_legacy() expect_equal(out$data[[1]], data.frame(y = 1:3)) }) test_that("can restrict variables in grouped nest", { df <- tibble(x = 1, y = 2, z = 3) %>% dplyr::group_by(x) out <- df %>% nest_legacy(y) expect_equal(names(out$data[[1]]), "y") }) test_that("puts data into the correct row", { df <- tibble(x = 1:3, y = c("B", "A", "A")) out <- nest_legacy(df, x) %>% dplyr::filter(y == "B") expect_equal(out$data[[1]]$x, 1) }) test_that("nesting everything yields a simple data frame", { df <- tibble(x = 1:3, y = c("B", "A", "A")) out <- nest_legacy(df, x, y) expect_equal(length(out$data), 1L) expect_equal(out$data[[1L]], df) }) test_that("nest preserves order of data", { df <- tibble(x = c(1, 3, 2, 3, 2), y = 1:5) out <- nest_legacy(df, y) expect_equal(out$x, c(1, 3, 2)) }) test_that("empty factor levels don't affect nest", { df <- tibble( x = factor(c("z", "a"), levels = letters), y = 1:2 ) out <- nest_legacy(df, y) expect_equal(out$x, df$x) }) test_that("nesting works for empty data frames", { df <- tibble(x = 1:3, y = c("B", "A", "A"))[0, ] out <- nest_legacy(df, x) expect_equal(names(out), c("y", "data")) expect_equal(nrow(out), 0L) expect_equal(length(out$data), 0L) out <- nest_legacy(df, x, y) expect_equal(length(out$data), 1L) expect_equal(out$data[[1L]], df) }) test_that("tibble conversion occurs in the `nest.data.frame()` method", { tbl <- mtcars %>% nest_legacy(-am, -cyl) expect_s3_class(tbl, "tbl_df") expect_is(tbl$data[[1L]], "tbl_df") }) test_that("nest_legacy() does not preserve grouping", { df <- tibble(x = c(1, 1, 2), y = 1:3) %>% dplyr::group_by(x) out <- nest_legacy(df) expect_false(inherits(out, "grouped_df")) }) # unnest ------------------------------------------------------------------ test_that("unnesting combines atomic vectors", { df <- tibble(x = list(1, 2:3, 4:10)) expect_equal(unnest_legacy(df)$x, 1:10) }) test_that("unesting combines augmented vectors", { df <- tibble::tibble(x = as.list(as.factor(letters[1:3]))) expect_equal(unnest_legacy(df)$x, factor(letters[1:3])) }) test_that("vector unnest preserves names", { df <- tibble(x = list(1, 2:3), y = list("a", c("b", "c"))) out <- unnest_legacy(df) expect_named(out, c("x", "y")) }) test_that("unnesting row binds data frames", { df <- tibble(x = list( tibble(x = 1:5), tibble(x = 6:10) )) expect_equal(unnest_legacy(df)$x, 1:10) }) test_that("can unnest nested lists", { df <- tibble( x = 1:2, y = list(list("a"), list("b")) ) rs <- unnest_legacy(df, y) expect_identical(rs, tibble(x = 1:2, y = list("a", "b"))) }) test_that("can unnest mixture of name and unnamed lists of same length", { df <- tibble( x = c("a"), y = list(y = 1:2), z = list(1:2) ) expect_identical(unnest_legacy(df), tibble(x = c("a","a"), y = c(1:2), z = c(1:2))) }) test_that("elements must all be of same type", { df <- tibble(x = list(1, "a")) expect_error( unnest_legacy(df), "(incompatible type)|(numeric to character)|(character to numeric)" ) }) test_that("can't combine vectors and data frames", { df <- tibble(x = list(1, tibble(1))) expect_error(unnest_legacy(df), "a list of vectors or a list of data frames") }) test_that("multiple columns must be same length", { df <- tibble(x = list(1), y = list(1:2)) expect_error(unnest_legacy(df), "same number of elements") df <- tibble(x = list(1), y = list(tibble(x = 1:2))) expect_error(unnest_legacy(df), "same number of elements") }) test_that("nested is split as a list (#84)", { df <- tibble(x = 1:3, y = list(1, 2:3, 4), z = list(5, 6:7, 8)) expect_warning(out <- unnest_legacy(df, y, z), NA) expect_equal(out$x, c(1, 2, 2, 3)) expect_equal(out$y, unlist(df$y)) expect_equal(out$z, unlist(df$z)) }) test_that("unnest has mutate semantics", { df <- tibble(x = 1:3, y = list(1, 2:3, 4)) out <- df %>% unnest_legacy(z = map(y, `+`, 1)) expect_equal(out$z, 2:5) }) test_that(".id creates vector of names for vector unnest", { df <- tibble(x = 1:2, y = list(a = 1, b = 1:2)) out <- unnest_legacy(df, .id = "name") expect_equal(out$name, c("a", "b", "b")) }) test_that(".id creates vector of names for grouped vector unnest", { df <- tibble(x = 1:2, y = list(a = 1, b = 1:2)) %>% dplyr::group_by(x) out <- unnest_legacy(df, .id = "name") expect_equal(out$name, c("a", "b", "b")) }) test_that(".id creates vector of names for data frame unnest", { df <- tibble(x = 1:2, y = list( a = tibble(y = 1), b = tibble(y = 1:2) )) out <- unnest_legacy(df, .id = "name") expect_equal(out$name, c("a", "b", "b")) }) test_that(".id creates vector of names for grouped data frame unnest", { df <- tibble(x = 1:2, y = list( a = tibble(y = 1), b = tibble(y = 1:2) )) %>% dplyr::group_by(x) out <- unnest_legacy(df, .id = "name") expect_equal(out$name, c("a", "b", "b")) }) test_that("can use non-syntactic names", { out <- tibble("foo bar" = list(1:2, 3)) %>% unnest_legacy() expect_named(out, "foo bar") }) test_that("sep combines column names", { ldf <- list(tibble(x = 1)) tibble(x = ldf, y = ldf) %>% unnest_legacy(.sep = "_") %>% expect_named(c("x_x", "y_x")) }) test_that("can unnest empty data frame", { df <- tibble(x = integer(), y = list()) out <- unnest_legacy(df, y) expect_equal(out, tibble(x = integer())) }) test_that("empty ... returns df if no list-cols", { df <- tibble(x = integer(), y = integer()) expect_equal(unnest_legacy(df), df) }) test_that("can optional preserve list cols", { df <- tibble(x = list(3, 4), y = list("a", "b")) rs <- df %>% unnest_legacy(x, .preserve = y) expect_identical(rs, tibble(y = df$y, x = c(3, 4))) df <- tibble(x = list(c("d", "e")), y = list(1:2)) rs <- df %>% unnest_legacy(.preserve = y) expect_identical(rs, tibble(y = rep(list(1:2), 2), x = c("d", "e"))) }) test_that("unnest drops list cols if expanding", { df <- tibble(x = 1:2, y = list(3, 4), z = list(5, 6:7)) out <- df %>% unnest_legacy(z) expect_equal(names(out), c("x", "z")) }) test_that("unnest keeps list cols if not expanding", { df <- tibble(x = 1:2, y = list(3, 4), z = list(5, 6:7)) out <- df %>% unnest_legacy(y) expect_equal(names(out), c("x", "z", "y")) }) test_that("unnest respects .drop_lists", { df <- tibble(x = 1:2, y = list(3, 4), z = list(5, 6:7)) expect_equal(df %>% unnest_legacy(y, .drop = TRUE) %>% names(), c("x", "y")) expect_equal(df %>% unnest_legacy(z, .drop = FALSE) %>% names(), c("x", "y", "z")) }) test_that("grouping is preserved", { df <- tibble(g = 1, x = list(1:3)) %>% dplyr::group_by(g) rs <- df %>% unnest_legacy(x) expect_equal(rs$x, 1:3) expect_equal(class(df), class(rs)) expect_equal(dplyr::groups(df), dplyr::groups(rs)) }) test_that("unnesting zero row column preserves names", { df <- tibble(a = character(), b = character()) expect_equal(df %>% unnest_legacy(b), tibble(b = character(), a = character())) }) test_that("unnest_legacy() recognize ptype", { tbl <- tibble(x = integer(), y = structure(list(), ptype = double())) res <- unnest_legacy(tbl) expect_equal(res, tibble(x = integer(), y = double())) }) tidyr/tests/testthat/test-id.R0000644000176200001440000000105113437754024016111 0ustar liggesuserscontext("id") test_that("drop preserves count of factor levels", { x <- factor(levels = c("a", "b")) expect_equal(id_var(x), structure(integer(), n = 2)) expect_equal(id(data.frame(x)), structure(integer(), n = 2)) }) test_that("id works with dimensions beyond integer range", { df <- data.frame(matrix(c(1, 2), nrow = 2, ncol = 32)) expect_equal(id(df), structure(c(1, 2), n = 2 ^ 32)) }) test_that("id_var() handles named vectors (#525)", { res <- id_var(c(a = 5, b = 3, c = 5)) expect_equal(res, structure(c(2L, 1L, 2L), n = 2L)) }) tidyr/tests/testthat/test-drop-na.R0000644000176200001440000000312313523107541017047 0ustar liggesuserscontext("drop_na") test_that("empty call drops every row", { df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b")) exp <- tibble(x = c(1), y = c("a")) res <- tidyr::drop_na(df) expect_equal(res, exp) }) test_that("specifying (a) variables considers only that variable(s)", { df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b")) exp <- tibble(x = c(1, 2), y = c("a", NA)) res <- tidyr::drop_na(df, x) expect_equal(res, exp) exp <- tibble(x = c(1), y = c("a")) res <- tidyr::drop_na(df, x:y) expect_equal(res, exp) }) test_that("groups are preserved", { df <- tibble(g = c("A", "A", "B"), x = c(1, 2, NA), y = c("a", NA, "b")) exp <- tibble(g = c("A", "B"), x = c(1, NA), y = c("a", "b")) gdf <- dplyr::group_by(df, "g") gexp <- dplyr::group_by(exp, "g") res <- tidyr::drop_na(gdf, y) expect_equal(res, gexp) expect_equal(dplyr::groups(res), dplyr::groups(gexp)) }) test_that("empty call drops every row", { df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b")) res <- tidyr::drop_na(df) expect_identical(res, tibble(x = 1, y = "a")) }) test_that("errors are raised", { df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b")) expect_error(tidyr::drop_na(df, !! list())) expect_error(tidyr::drop_na(df, "z")) }) test_that("single variable data.frame doesn't lose dimension", { df <- data.frame(x = c(1, 2, NA)) res <- tidyr::drop_na(df, "x") exp <- data.frame(x = c(1, 2)) expect_equal(res, exp) }) test_that("works with list-cols", { df <- tibble(x = list(1L, NULL, 3L), y = c(1L, 2L, NA)) rs <- drop_na(df) expect_identical(rs, tibble(x = list(1L), y = 1L)) }) tidyr/tests/testthat/test-chop.R0000644000176200001440000000421213612142023016431 0ustar liggesuserscontext("test-chop") # chop -------------------------------------------------------------------- test_that("can chop multiple columns", { df <- tibble(x = c(1, 1, 2), a = 1:3, b = 1:3) out <- df %>% chop(c(a, b)) expect_named(out, c("x", "a", "b")) expect_equal(out$a, list(1:2, 3L)) expect_equal(out$b, list(1:2, 3L)) }) test_that("chopping no columns returns input", { df <- tibble(a1 = 1, a2 = 2, b1 = 1, b2 = 2) expect_equal(chop(df), df) }) test_that("grouping is preserved", { df <- tibble(g = c(1, 1), x = 1:2) out <- df %>% dplyr::group_by(g) %>% chop(x) expect_equal(dplyr::group_vars(out), "g") }) # unchop ------------------------------------------------------------------ test_that("extends into rows", { df <- tibble(x = 1:2, y = list(NULL, 1:4)) out <- df %>% unchop(y) expect_equal(out$x, rep(2, 4)) expect_equal(out$y, 1:4) }) test_that("can unchop multiple cols", { df <- tibble(x = 1:2, y = list(1, 2:3), z = list(4, 5:6)) out <- df %>% unchop(c(y, z)) expect_equal(out$x, c(1, 2, 2)) expect_equal(out$y, 1:3) expect_equal(out$z, 4:6) }) test_that("unchopping nothing leaves input unchanged", { df <- tibble(x = 1:3, y = 4:6) expect_equal(unchop(df, integer()), df) }) test_that("optionally keep empty rows", { df <- tibble(x = 1:2, y = list(NULL, 1:2), z = list(tibble(x = integer()), tibble(x = 1:2))) out <- df %>% unchop(y, keep_empty = TRUE) expect_equal(out$x, c(1, 2, 2)) expect_equal(out$y, c(NA, 1, 2)) out <- df %>% unchop(z, keep_empty = TRUE) expect_equal(out$x, c(1, 2, 2)) expect_equal(out$z, tibble(x = c(NA, 1L, 2L))) }) test_that("preserves colums of empty inputs", { df <- tibble(x = integer(), y = list(), z = list()) expect_named(df %>% unchop(y), c("x", "y", "z")) expect_named(df %>% unchop(c(y, z)), c("x", "y", "z")) }) test_that("respects list_of types", { df <- tibble(x = integer(), y = list_of(.ptype = integer())) expect_equal(df %>% unchop(y), tibble(x = integer(), y = integer())) }) test_that("grouping is preserved", { df <- tibble(g = 1, x = list(1, 2)) out <- df %>% dplyr::group_by(g) %>% unchop(x) expect_equal(dplyr::group_vars(out), "g") }) tidyr/tests/testthat/test-utils.R0000644000176200001440000000072313523107541016652 0ustar liggesuserscontext("test-utils") test_that("tidyr_legacy copies old approach", { expect_equal(tidyr_legacy(c()), character()) expect_equal(tidyr_legacy(c("x", "x", "y")), c("x", "x1", "y")) expect_equal(tidyr_legacy(c("", "", "")), c("V1", "V2", "V3")) }) test_that("reconstruct doesn't repair names", { # This ensures that name repair elsewhere isn't overridden df <- tibble(x = 1, x = 2, .name_repair = "minimal") expect_equal(reconstruct_tibble(df, df), df) }) tidyr/tests/testthat/test-uncount.R0000644000176200001440000000136713437754024017222 0ustar liggesuserscontext("test-uncount.R") test_that("symbols weights are dropped in output", { df <- tibble(x = 1, w = 1) expect_equal(uncount(df, w), tibble(x = 1)) }) test_that("can request to preserve symbols", { df <- tibble(x = 1, w = 1) expect_equal(uncount(df, w, .remove = FALSE), df) }) test_that("unique identifiers created on request", { df <- tibble(w = 1:3) expect_equal(uncount(df, w, .id = "id"), tibble(id = c(1L, 1:2, 1:3))) }) test_that("expands constants and expressions", { df <- tibble(x = 1, w = 2) expect_equal(uncount(df, 2), df[c(1, 1), ]) expect_equal(uncount(df, 1 + 1), df[c(1, 1), ]) }) test_that("must evaluate to numeric", { df <- tibble(x = 1) expect_error(uncount(df, "W"), "must evaluate to a numeric vector") }) tidyr/tests/testthat/test-extract.R0000644000176200001440000000267713612142023017167 0ustar liggesuserscontext("Extract") test_that("default returns first alpha group", { df <- data.frame(x = c("a.b", "a.d", "b.c")) out <- df %>% extract(x, "A") expect_equal(out$A, c("a", "a", "b")) }) test_that("can match multiple groups", { df <- data.frame(x = c("a.b", "a.d", "b.c")) out <- df %>% extract(x, c("A", "B"), "([[:alnum:]]+)\\.([[:alnum:]]+)") expect_equal(out$A, c("a", "a", "b")) expect_equal(out$B, c("b", "d", "c")) }) test_that("match failures give NAs", { df <- data.frame(x = c("a.b", "a")) out <- df %>% extract(x, "a", "(b)") expect_equal(out$a, c("b", NA)) }) test_that("extract keeps characters as character", { df <- tibble(x = "X-1") out <- extract(df, x, c("x", "y"), "(.)-(.)", convert = TRUE) expect_equal(out$x, "X") expect_equal(out$y, 1L) }) test_that("can combine into multiple columns", { df <- tibble(x = "abcd") out <- extract(df, x, c("a", "b", "a" , "b"), "(.)(.)(.)(.)", convert = TRUE) expect_equal(out, tibble(a = "ac", b = "bd")) }) test_that("groups are preserved", { df <- tibble(g = 1, x = "X1") %>% dplyr::group_by(g) rs <- df %>% extract(x, c("x", "y"), "(.)(.)") expect_equal(class(df), class(rs)) expect_equal(dplyr::groups(df), dplyr::groups(rs)) }) test_that("informative error message if wrong number of groups", { df <- tibble(x = "a") expect_error(extract(df, x, "y", "."), "should define 1 groups") expect_error(extract(df, x, c("y", "z"), "."), "should define 2 groups") }) tidyr/tests/testthat/test-gather.R0000644000176200001440000001263213612142357016771 0ustar liggesuserscontext("Gather") test_that("gather all columns when ... is empty", { df <- data.frame( x = 1:5, y = 6:10 ) out <- gather(df, key, val) expect_equal(nrow(out), 10) expect_equal(names(out), c("key", "val")) }) test_that("gather returns input if no columns gathered", { df <- data.frame(x = 1:2, y = 1:2) out <- gather(df, a, b, -x, -y) expect_equal(df, out) }) test_that("if not supply, key and value default to key and value", { df <- data.frame(x = 1:2) out <- gather(df) expect_equal(nrow(out), 2) expect_equal(names(out), c("key", "value")) }) test_that("Missing values removed when na.rm = TRUE", { df <- data.frame(x = c(1, NA)) out <- gather(df, k, v) expect_equal(out$v, df$x) out <- gather(df, k, v, na.rm = TRUE) expect_equal(out$v, 1) }) test_that("key converted to character by default", { df <- data.frame(y = 1, x = 2) out <- gather(df, k, v) expect_equal(out$k, c("y", "x")) }) test_that("covert will generate integers if needed", { df <- tibble(`1` = 1, `2` = 2) out <- gather(df, convert = TRUE) expect_identical(out$key, c(1L, 2L)) }) test_that("key preserves column ordering when factor_key = TRUE", { df <- data.frame(y = 1, x = 2) out <- gather(df, k, v, factor_key = TRUE) expect_equal(out$k, factor(c("y", "x"), levels = c("y", "x"))) }) test_that("preserve class of input", { dat <- data.frame(x = 1:2) dat %>% as_tibble() %>% gather() %>% expect_is("tbl_df") }) test_that("additional inputs control which columns to gather", { data <- tibble(a = 1, b1 = 1, b2 = 2, b3 = 3) out <- gather(data, key, val, b1:b3) expect_equal(names(out), c("a", "key", "val")) expect_equal(out$val, 1:3) }) test_that("group_vars are kept where possible", { df <- tibble(x = 1, y = 1, z = 1) # Can't keep out <- df %>% dplyr::group_by(x) %>% gather(key, val, x:z) expect_equal(out, tibble(key = c("x", "y", "z"), val = 1)) # Can keep out <- df %>% dplyr::group_by(x) %>% gather(key, val, y:z) expect_equal(dplyr::groups(out), list(quote(x))) }) test_that("overwrites existing vars", { df <- data.frame( X = 1, Y = 1, Z = 2 ) rs <- gather(df, key = "name", value = "Y") expect_named(rs, c("name", "Y")) expect_equal(rs$Y, c(1, 2)) }) # Column types ------------------------------------------------------------ test_that("can gather all atomic vectors", { df1 <- data.frame(x = 1, y = FALSE) df2 <- data.frame(x = 1, y = 1L) df3 <- data.frame(x = 1, y = 1) df4 <- data.frame(x = 1, y = "a", stringsAsFactors = FALSE) df5 <- data.frame(x = 1, y = 1 + 1i, stringsAsFactors = FALSE) gathered_val <- function(val) { data.frame(x = 1, key = "y", val = val, stringsAsFactors = FALSE) } gathered_key <- function(key) { data.frame(y = key, key = "x", val = 1, stringsAsFactors = FALSE) } expect_equal(gather(df1, key, val, -x), gathered_val(FALSE)) expect_equal(gather(df2, key, val, -x), gathered_val(1L)) expect_equal(gather(df3, key, val, -x), gathered_val(1)) expect_equal(gather(df4, key, val, -x), gathered_val("a")) expect_equal(gather(df5, key, val, -x), gathered_val(1 + 1i)) expect_equal(gather(df1, key, val, -y), gathered_key(FALSE)) expect_equal(gather(df2, key, val, -y), gathered_key(1L)) expect_equal(gather(df3, key, val, -y), gathered_key(1)) expect_equal(gather(df4, key, val, -y), gathered_key("a")) expect_equal(gather(df5, key, val, -y), gathered_key(1 + 1i)) }) test_that("gather throws error for POSIXlt", { df <- data.frame(y = 1) df$x <- as.POSIXlt(Sys.time()) expect_error(gather(df, key, val, -x), "a POSIXlt") expect_error(gather(df, key, val, -y), "a POSIXlt") }) test_that("gather throws error for weird objects", { df <- data.frame(y = 1) df$x <- expression(x) expect_error(gather(df, key, val, -x), "atomic vectors or lists") expect_error(gather(df, key, val, -y), "atomic vectors or lists") e <- new.env(parent = emptyenv()) e$x <- 1 df <- data.frame(y = 1) df$x <- e expect_error(gather(df, key, val, -x), "atomic vectors or list") expect_error(gather(df, key, val, -y), "atomic vectors or list") }) test_that("factors coerced to characters, not integers", { df <- data.frame( v1 = 1:3, v2 = factor(letters[1:3]) ) expect_warning( out <- gather(df, k, v), "attributes are not identical across measure variables" ) expect_equal(out$v, c(1:3, letters[1:3])) }) test_that("attributes of id variables are preserved", { df <- data.frame(x = factor(1:3), y = 1:3, z = 3:1) out <- gather(df, key, val, -x) expect_equal(attributes(df$x), attributes(out$x)) }) test_that("common attributes are preserved", { df <- data.frame(date1 = Sys.Date(), date2 = Sys.Date() + 10) out <- gather(df, k, v) expect_is(out$v, "Date") }) test_that("varying attributes are dropped with a warning", { df <- data.frame( date1 = as.POSIXct(Sys.Date()), date2 = Sys.Date() + 10 ) expect_warning( gather(df, k, v), "attributes are not identical across measure variables" ) }) test_that("gather preserves OBJECT bit on e.g. POSIXct", { df <- data.frame(now = Sys.time()) out <- gather(df, k, v) expect_true(is.object(out$v)) }) test_that("can handle list-columns", { df <- tibble(x = 1:2, y = list("a", TRUE)) out <- gather(df, k, v, -y) expect_identical(out$y, df$y) }) test_that("can gather list-columns", { df <- tibble(x = 1:2, y = list(1, 2), z = list(3, 4)) out <- gather(df, k, v, y:z) expect_equal(out$v, list(1, 2, 3, 4)) }) tidyr/tests/testthat/test-replace_na.R0000644000176200001440000000212013437754024017604 0ustar liggesuserscontext("replace_na") # vector ------------------------------------------------------------------ test_that("empty call does nothing", { x <- c(1, NA) expect_equal(replace_na(x), x) }) test_that("missing values are replaced", { x <- c(1, NA) expect_equal(replace_na(x, 0), c(1, 0)) }) test_that("can only be length 0", { expect_error(replace_na(1, 1:10), "length 10, not length 1") }) # data frame ------------------------------------------------------------- test_that("empty call does nothing", { df <- tibble(x = c(1, NA)) out <- replace_na(df) expect_equal(out, df) }) test_that("missing values are replaced", { df <- tibble(x = c(1, NA)) out <- replace_na(df, list(x = 0)) expect_equal(out$x, c(1, 0)) }) test_that("don't complain about variables that don't exist", { df <- tibble(a = c(1, NA)) out <- replace_na(df, list(a = 100, b = 0)) expect_equal(out, tibble(a = c(1, 100))) }) test_that("can replace NULLs in list-column", { df <- tibble(x = list(1, NULL)) rs <- replace_na(df, list(x = list(1:5))) expect_identical(rs, tibble(x = list(1, 1:5))) }) tidyr/tests/testthat.R0000644000176200001440000000006613437754024014545 0ustar liggesuserslibrary(testthat) library(tidyr) test_check("tidyr") tidyr/src/0000755000176200001440000000000013612357535012206 5ustar liggesuserstidyr/src/melt.cpp0000644000176200001440000001743413437754024013663 0ustar liggesusers#include using namespace Rcpp; // A debug macro -- change to 'debug(x) x' for debug output #define debug(x) // An optimized rep #define DO_REP(RTYPE, CTYPE, ACCESSOR) \ { \ for (int i = 0; i < n; ++i) { \ memcpy((char*)ACCESSOR(output) + i * xn * sizeof(CTYPE), \ (char*)ACCESSOR(x), \ sizeof(CTYPE) * xn); \ } \ } SEXP rep_(SEXP x, int n, std::string var_name) { if (!Rf_isVectorAtomic(x) && TYPEOF(x) != VECSXP) { Rf_errorcall( R_NilValue, "All columns must be atomic vectors or lists. Problem with '%s'", var_name.c_str() ); } if (Rf_inherits(x, "POSIXlt")) { stop("'%s' is a POSIXlt. Please convert to POSIXct.", var_name); } int xn = Rf_length(x); int nout = xn * n; Shield output(Rf_allocVector(TYPEOF(x), nout)); switch (TYPEOF(x)) { case INTSXP: DO_REP(INTSXP, int, INTEGER); break; case REALSXP: DO_REP(REALSXP, double, REAL); break; case LGLSXP: DO_REP(LGLSXP, int, LOGICAL); break; case CPLXSXP: DO_REP(CPLXSXP, Rcomplex, COMPLEX); break; case RAWSXP: DO_REP(RAWSXP, Rbyte, RAW); break; case STRSXP: { int counter = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < xn; ++j) { SET_STRING_ELT(output, counter, STRING_ELT(x, j)); ++counter; } } break; } case VECSXP: { int counter = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < xn; ++j) { SET_VECTOR_ELT(output, counter, VECTOR_ELT(x, j)); ++counter; } } break; } default: { stop("Unhandled RTYPE in '%s'", var_name); return R_NilValue; } } Rf_copyMostAttrib(x, output); return output; } // Optimized factor routine for the case where we want to make // a factor from a vector of names -- used for generating the // 'variable' column in the melted data.frame IntegerVector make_variable_column_factor(CharacterVector x, int nrow) { IntegerVector output = no_init(x.size() * nrow); int idx = 0; for (int i = 0; i < x.size(); ++i) for (int j = 0; j < nrow; ++j) output[idx++] = i + 1; output.attr("levels") = x; output.attr("class") = "factor"; return output; } CharacterVector make_variable_column_character(CharacterVector x, int nrow) { CharacterVector output = no_init(x.size() * nrow); int idx = 0; for (int i = 0; i < x.size(); ++i) for (int j = 0; j < nrow; ++j) output[idx++] = x[i]; return output; } // Concatenate vectors for the 'value' column #define DO_CONCATENATE(CTYPE) \ { \ memcpy((char*)dataptr(output) + i* nrow * sizeof(CTYPE), \ (char*)dataptr(tmp), \ nrow * sizeof(CTYPE)); \ break; \ } SEXP concatenate(const DataFrame& x, IntegerVector ind, bool factorsAsStrings) { int nrow = x.nrows(); int n_ind = ind.size(); // We coerce up to the 'max type' if necessary, using the fact // that R's SEXPTYPEs are also ordered in terms of 'precision' // Note: we convert factors to characters if necessary int max_type = 0; int ctype = 0; for (int i = 0; i < n_ind; ++i) { if (Rf_isFactor(x[ind[i]]) and factorsAsStrings) { ctype = STRSXP; } else { ctype = TYPEOF(x[ind[i]]); } max_type = ctype > max_type ? ctype : max_type; } debug(printf("Max type of value variables is %s\n", Rf_type2char(max_type))); Armor tmp; Shield output(Rf_allocVector(max_type, nrow * n_ind)); for (int i = 0; i < n_ind; ++i) { SEXP col = x[ind[i]]; if (Rf_inherits(col, "POSIXlt")) { stop("Column %i is a POSIXlt. Please convert to POSIXct.", i + 1); } // a 'tmp' pointer to the current column being iterated over, or // a coerced version if necessary if (TYPEOF(col) == max_type) { tmp = col; } else if (Rf_isFactor(col) and factorsAsStrings) { tmp = Rf_asCharacterFactor(col); } else { tmp = Rf_coerceVector(col, max_type); } switch (max_type) { case INTSXP: DO_CONCATENATE(int); case REALSXP: DO_CONCATENATE(double); case LGLSXP: DO_CONCATENATE(int); case CPLXSXP: DO_CONCATENATE(Rcomplex); case STRSXP: { for (int j = 0; j < nrow; ++j) { SET_STRING_ELT(output, i * nrow + j, STRING_ELT(tmp, j)); } break; } case VECSXP: { for (int j = 0; j < nrow; ++j) { SET_VECTOR_ELT(output, i * nrow + j, VECTOR_ELT(tmp, j)); } break; } default: Rf_errorcall( R_NilValue, "All columns be atomic vectors or lists (not %s)", Rf_type2char(max_type) ); } } return output; } // [[Rcpp::export]] List melt_dataframe(const DataFrame& data, const IntegerVector& id_ind, const IntegerVector& measure_ind, String variable_name, String value_name, SEXP attrTemplate, bool factorsAsStrings, bool valueAsFactor, bool variableAsFactor) { int nrow = data.nrows(); CharacterVector data_names = as(data.attr("names")); int n_id = id_ind.size(); debug(Rprintf("n_id == %i\n", n_id)); int n_measure = measure_ind.size(); debug(Rprintf("n_measure == %i\n", n_measure)); // Don't melt if the value variables are non-atomic for (int i = 0; i < n_measure; ++i) { if (!Rf_isVector(data[measure_ind[i]]) || Rf_inherits(data[measure_ind[i]], "data.frame")) { Rf_errorcall( R_NilValue, "All columns must be atomic vectors or lists. Problem with column %i.", measure_ind[i] + 1 ); } } // The output should be a data.frame with: // number of columns == number of id vars + 'variable' + 'value', // with number of rows == data.nrow() * number of value vars List output = no_init(n_id + 2); // First, allocate the ID variables // we repeat each ID vector n_measure times for (int i = 0; i < n_id; ++i) { SEXP object = data[id_ind[i]]; std::string var_name = std::string(data_names[id_ind[i]]); output[i] = rep_(object, n_measure, var_name); } // Now, we assign the 'variable' and 'value' columns // 'variable' is made up of repeating the names of the 'measure' variables, // each nrow times. We want this to be a factor as well. CharacterVector id_names = no_init(n_measure); for (int i = 0; i < n_measure; ++i) { id_names[i] = data_names[measure_ind[i]]; } if (variableAsFactor) { output[n_id] = make_variable_column_factor(id_names, nrow); } else { output[n_id] = make_variable_column_character(id_names, nrow); } // 'value' is made by concatenating each of the 'value' variables output[n_id + 1] = concatenate(data, measure_ind, factorsAsStrings); if (!Rf_isNull(attrTemplate)) { Rf_copyMostAttrib(attrTemplate, output[n_id + 1]); } // Make the List more data.frame like // Set the row names output.attr("row.names") = IntegerVector::create(IntegerVector::get_na(), -(nrow * n_measure)); // Set the names CharacterVector out_names = no_init(n_id + 2); for (int i = 0; i < n_id; ++i) { out_names[i] = data_names[id_ind[i]]; } out_names[n_id] = variable_name; out_names[n_id + 1] = value_name; output.attr("names") = out_names; // Set the class output.attr("class") = "data.frame"; return output; } tidyr/src/fill.cpp0000644000176200001440000000557613437754024013654 0ustar liggesusers#include using namespace Rcpp; // [[Rcpp::export]] SEXP fillDown(SEXP x) { int n = Rf_length(x); SEXP out = Rf_allocVector(TYPEOF(x), n); switch(TYPEOF(x)) { case LGLSXP: { int* xin = LOGICAL(x); int* xout = LOGICAL(out); int lastVal = xin[0]; for (int i = 0; i < n; ++i) { if (xin[i] != NA_LOGICAL) lastVal = xin[i]; xout[i] = lastVal; } break; } case INTSXP: { int* xin = INTEGER(x); int* xout = INTEGER(out); int lastVal = xin[0]; for (int i = 0; i < n; ++i) { if (xin[i] != NA_INTEGER) lastVal = xin[i]; xout[i] = lastVal; } break; } case REALSXP: { double* xin = REAL(x); double* xout = REAL(out); double lastVal = xin[0]; for (int i = 0; i < n; ++i) { if (!ISNA(xin[i])) lastVal = xin[i]; xout[i] = lastVal; } break; } case STRSXP: { SEXP lastVal = NA_STRING; for (int i = 0; i < n; ++i) { if (STRING_ELT(x, i) != NA_STRING) lastVal = STRING_ELT(x, i); SET_STRING_ELT(out, i, lastVal); } break; } case VECSXP: { SEXP lastVal = R_NilValue; for (int i = 0; i < n; ++i) { if (!Rf_isNull(VECTOR_ELT(x, i))) lastVal = VECTOR_ELT(x, i); SET_VECTOR_ELT(out, i, lastVal); } break; } default: stop("Don't know how to handle column of type", Rf_type2char(TYPEOF(x))); } Rf_copyMostAttrib(x, out); return out; } // [[Rcpp::export]] SEXP fillUp(SEXP x) { int n = Rf_length(x); SEXP out = Rf_allocVector(TYPEOF(x), n); switch(TYPEOF(x)) { case LGLSXP: { int* xin = LOGICAL(x); int* xout = LOGICAL(out); int lastVal = xin[n - 1]; for (int i = n - 1; i >= 0; --i) { if (xin[i] != NA_LOGICAL) lastVal = xin[i]; xout[i] = lastVal; } break; } case INTSXP: { int* xin = INTEGER(x); int* xout = INTEGER(out); int lastVal = xin[n - 1]; for (int i = n - 1; i >= 0; --i) { if (xin[i] != NA_INTEGER) lastVal = xin[i]; xout[i] = lastVal; } break; } case REALSXP: { double* xin = REAL(x); double* xout = REAL(out); double lastVal = xin[n - 1]; for (int i = n - 1; i >= 0; --i) { if (!ISNA(xin[i])) lastVal = xin[i]; xout[i] = lastVal; } break; } case STRSXP: { SEXP lastVal = NA_STRING; for (int i = n - 1; i >= 0; --i) { if (STRING_ELT(x, i) != NA_STRING) lastVal = STRING_ELT(x, i); SET_STRING_ELT(out, i, lastVal); } break; } case VECSXP: { SEXP lastVal = R_NilValue; for (int i = n - 1; i >= 0; --i) { if (!Rf_isNull(VECTOR_ELT(x, i))) lastVal = VECTOR_ELT(x, i); SET_VECTOR_ELT(out, i, lastVal); } break; } default: stop("Don't know how to handle column of type", Rf_type2char(TYPEOF(x))); } Rf_copyMostAttrib(x, out); return out; } tidyr/src/RcppExports.cpp0000644000176200001440000000645113572754404015212 0ustar liggesusers// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include using namespace Rcpp; // fillDown SEXP fillDown(SEXP x); RcppExport SEXP _tidyr_fillDown(SEXP xSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< SEXP >::type x(xSEXP); rcpp_result_gen = Rcpp::wrap(fillDown(x)); return rcpp_result_gen; END_RCPP } // fillUp SEXP fillUp(SEXP x); RcppExport SEXP _tidyr_fillUp(SEXP xSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< SEXP >::type x(xSEXP); rcpp_result_gen = Rcpp::wrap(fillUp(x)); return rcpp_result_gen; END_RCPP } // melt_dataframe List melt_dataframe(const DataFrame& data, const IntegerVector& id_ind, const IntegerVector& measure_ind, String variable_name, String value_name, SEXP attrTemplate, bool factorsAsStrings, bool valueAsFactor, bool variableAsFactor); RcppExport SEXP _tidyr_melt_dataframe(SEXP dataSEXP, SEXP id_indSEXP, SEXP measure_indSEXP, SEXP variable_nameSEXP, SEXP value_nameSEXP, SEXP attrTemplateSEXP, SEXP factorsAsStringsSEXP, SEXP valueAsFactorSEXP, SEXP variableAsFactorSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< const DataFrame& >::type data(dataSEXP); Rcpp::traits::input_parameter< const IntegerVector& >::type id_ind(id_indSEXP); Rcpp::traits::input_parameter< const IntegerVector& >::type measure_ind(measure_indSEXP); Rcpp::traits::input_parameter< String >::type variable_name(variable_nameSEXP); Rcpp::traits::input_parameter< String >::type value_name(value_nameSEXP); Rcpp::traits::input_parameter< SEXP >::type attrTemplate(attrTemplateSEXP); Rcpp::traits::input_parameter< bool >::type factorsAsStrings(factorsAsStringsSEXP); Rcpp::traits::input_parameter< bool >::type valueAsFactor(valueAsFactorSEXP); Rcpp::traits::input_parameter< bool >::type variableAsFactor(variableAsFactorSEXP); rcpp_result_gen = Rcpp::wrap(melt_dataframe(data, id_ind, measure_ind, variable_name, value_name, attrTemplate, factorsAsStrings, valueAsFactor, variableAsFactor)); return rcpp_result_gen; END_RCPP } // simplifyPieces List simplifyPieces(ListOf pieces, int p, bool fillLeft); RcppExport SEXP _tidyr_simplifyPieces(SEXP piecesSEXP, SEXP pSEXP, SEXP fillLeftSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< ListOf >::type pieces(piecesSEXP); Rcpp::traits::input_parameter< int >::type p(pSEXP); Rcpp::traits::input_parameter< bool >::type fillLeft(fillLeftSEXP); rcpp_result_gen = Rcpp::wrap(simplifyPieces(pieces, p, fillLeft)); return rcpp_result_gen; END_RCPP } static const R_CallMethodDef CallEntries[] = { {"_tidyr_fillDown", (DL_FUNC) &_tidyr_fillDown, 1}, {"_tidyr_fillUp", (DL_FUNC) &_tidyr_fillUp, 1}, {"_tidyr_melt_dataframe", (DL_FUNC) &_tidyr_melt_dataframe, 9}, {"_tidyr_simplifyPieces", (DL_FUNC) &_tidyr_simplifyPieces, 3}, {NULL, NULL, 0} }; RcppExport void R_init_tidyr(DllInfo *dll) { R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); R_useDynamicSymbols(dll, FALSE); } tidyr/src/simplifyPieces.cpp0000644000176200001440000000223213437754024015675 0ustar liggesusers#include using namespace Rcpp; // [[Rcpp::export]] List simplifyPieces(ListOf pieces, int p, bool fillLeft = true) { std::vector tooSml, tooBig; int n = pieces.size(); List list(p); for (int j = 0; j < p; ++j) list[j] = CharacterVector(n); ListOf out(list); for (int i = 0; i < n; ++i) { CharacterVector x = pieces[i]; if (x.size() == 1 && x[0] == NA_STRING) { for (int j = 0; j < p; ++j) out[j][i] = NA_STRING; } else if (x.size() > p) { // too big tooBig.push_back(i + 1); for (int j = 0; j < p; ++j) out[j][i] = x[j]; } else if (x.size() < p) { // too small tooSml.push_back(i + 1); int gap = p - x.size(); for (int j = 0; j < p; ++j) { if (fillLeft) { out[j][i] = (j >= gap) ? x[j - gap] : NA_STRING; } else { out[j][i] = (j < x.size()) ? x[j] : NA_STRING; } } } else { for (int j = 0; j < p; ++j) out[j][i] = x[j]; } } return List::create( _["strings"] = out, _["too_big"] = wrap(tooBig), _["too_sml"] = wrap(tooSml) ); } tidyr/vignettes/0000755000176200001440000000000013612357535013427 5ustar liggesuserstidyr/vignettes/preg2.csv0000644000176200001440000000011113437754024015153 0ustar liggesusers"treatment","John Smith","Jane Doe","Mary Johnson" "a",NA,4,6 "b",18,1,7 tidyr/vignettes/tidy-data.Rmd0000644000176200001440000005077613612142023015752 0ustar liggesusers--- title: "Tidy data" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Tidy data} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, echo = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>") set.seed(1014) options(dplyr.print_max = 10) ``` (This is an informal and code heavy version of the full [tidy data paper](https://vita.had.co.nz/papers/tidy-data.html). Please refer to that for more details.) # Data tidying It is often said that 80% of data analysis is spent on the cleaning and preparing data. And it's not just a first step, but it must be repeated many times over the course of analysis as new problems come to light or new data is collected. To get a handle on the problem, this paper focuses on a small, but important, aspect of data cleaning that I call data **tidying**: structuring datasets to facilitate analysis. The principles of tidy data provide a standard way to organise data values within a dataset. A standard makes initial data cleaning easier because you don't need to start from scratch and reinvent the wheel every time. The tidy data standard has been designed to facilitate initial exploration and analysis of the data, and to simplify the development of data analysis tools that work well together. Current tools often require translation. You have to spend time munging the output from one tool so you can input it into another. Tidy datasets and tidy tools work hand in hand to make data analysis easier, allowing you to focus on the interesting domain problem, not on the uninteresting logistics of data. # Defining tidy data {#sec:defining} > Happy families are all alike; every unhappy family is unhappy in its own way > --- Leo Tolstoy Like families, tidy datasets are all alike but every messy dataset is messy in its own way. Tidy datasets provide a standardized way to link the structure of a dataset (its physical layout) with its semantics (its meaning). In this section, I'll provide some standard vocabulary for describing the structure and semantics of a dataset, and then use those definitions to define tidy data. ## Data structure Most statistical datasets are data frames made up of **rows** and **columns**. The columns are almost always labeled and the rows are sometimes labeled. The following code provides some data about an imaginary experiment in a format commonly seen in the wild. The table has two columns and three rows, and both rows and columns are labeled. ```{r} preg <- read.csv("preg.csv", stringsAsFactors = FALSE) preg ``` There are many ways to structure the same underlying data. The following table shows the same data as above, but the rows and columns have been transposed. ```{r} read.csv("preg2.csv", stringsAsFactors = FALSE) ``` The data is the same, but the layout is different. Our vocabulary of rows and columns is simply not rich enough to describe why the two tables represent the same data. In addition to appearance, we need a way to describe the underlying semantics, or meaning, of the values displayed in the table. ## Data semantics A dataset is a collection of **values**, usually either numbers (if quantitative) or strings (if qualitative). Values are organised in two ways. Every value belongs to a **variable** and an **observation**. A variable contains all values that measure the same underlying attribute (like height, temperature, duration) across units. An observation contains all values measured on the same unit (like a person, or a day, or a race) across attributes. A tidy version of the pregnancy data looks like this: (you'll learn how the functions work a little later) ```{r, message = FALSE} library(tidyr) library(dplyr) preg2 <- preg %>% gather(treatment, n, treatmenta:treatmentb) %>% mutate(treatment = gsub("treatment", "", treatment)) %>% arrange(name, treatment) preg2 ``` This makes the values, variables and observations more clear. The dataset contains 18 values representing three variables and six observations. The variables are: 1. `name`, with three possible values (John, Mary, and Jane). 2. `treatment`, with two possible values (a and b). 3. `n`, with five or six values depending on how you think of the missing value (`r sort(preg2$n, na.last = TRUE)`) The experimental design tells us more about the structure of the observations. In this experiment, every combination of of `name` and `treatment` was measured, a completely crossed design. The experimental design also determines whether or not missing values can be safely dropped. In this experiment, the missing value represents an observation that should have been made, but wasn't, so it's important to keep it. Structural missing values, which represent measurements that can't be made (e.g., the count of pregnant males) can be safely removed. For a given dataset, it's usually easy to figure out what are observations and what are variables, but it is surprisingly difficult to precisely define variables and observations in general. For example, if the columns in the pregnancy data were `height` and `weight` we would have been happy to call them variables. If the columns were `height` and `width`, it would be less clear cut, as we might think of height and width as values of a `dimension` variable. If the columns were `home phone` and `work phone`, we could treat these as two variables, but in a fraud detection environment we might want variables `phone number` and `number type` because the use of one phone number for multiple people might suggest fraud. A general rule of thumb is that it is easier to describe functional relationships between variables (e.g., `z` is a linear combination of `x` and `y`, `density` is the ratio of `weight` to `volume`) than between rows, and it is easier to make comparisons between groups of observations (e.g., average of group a vs. average of group b) than between groups of columns. In a given analysis, there may be multiple levels of observation. For example, in a trial of new allergy medication we might have three observational types: demographic data collected from each person (`age`, `sex`, `race`), medical data collected from each person on each day (`number of sneezes`, `redness of eyes`), and meteorological data collected on each day (`temperature`, `pollen count`). Variables may change over the course of analysis. Often the variables in the raw data are very fine grained, and may add extra modelling complexity for little explanatory gain. For example, many surveys ask variations on the same question to better get at an underlying trait. In early stages of analysis, variables correspond to questions. In later stages, you change focus to traits, computed by averaging together multiple questions. This considerably simplifies analysis because you don't need a hierarchical model, and you can often pretend that the data is continuous, not discrete. ## Tidy data Tidy data is a standard way of mapping the meaning of a dataset to its structure. A dataset is messy or tidy depending on how rows, columns and tables are matched up with observations, variables and types. In **tidy data**: 1. Each variable forms a column. 2. Each observation forms a row. 3. Each type of observational unit forms a table. This is Codd's 3rd normal form, but with the constraints framed in statistical language, and the focus put on a single dataset rather than the many connected datasets common in relational databases. **Messy data** is any other arrangement of the data. Tidy data makes it easy for an analyst or a computer to extract needed variables because it provides a standard way of structuring a dataset. Compare the different versions of the pregnancy data: in the messy version you need to use different strategies to extract different variables. This slows analysis and invites errors. If you consider how many data analysis operations involve all of the values in a variable (every aggregation function), you can see how important it is to extract these values in a simple, standard way. Tidy data is particularly well suited for vectorised programming languages like R, because the layout ensures that values of different variables from the same observation are always paired. While the order of variables and observations does not affect analysis, a good ordering makes it easier to scan the raw values. One way of organising variables is by their role in the analysis: are values fixed by the design of the data collection, or are they measured during the course of the experiment? Fixed variables describe the experimental design and are known in advance. Computer scientists often call fixed variables dimensions, and statisticians usually denote them with subscripts on random variables. Measured variables are what we actually measure in the study. Fixed variables should come first, followed by measured variables, each ordered so that related variables are contiguous. Rows can then be ordered by the first variable, breaking ties with the second and subsequent (fixed) variables. This is the convention adopted by all tabular displays in this paper. # Tidying messy datasets {#sec:tidying} Real datasets can, and often do, violate the three precepts of tidy data in almost every way imaginable. While occasionally you do get a dataset that you can start analysing immediately, this is the exception, not the rule. This section describes the five most common problems with messy datasets, along with their remedies: - Column headers are values, not variable names. - Multiple variables are stored in one column. - Variables are stored in both rows and columns. - Multiple types of observational units are stored in the same table. - A single observational unit is stored in multiple tables. Surprisingly, most messy datasets, including types of messiness not explicitly described above, can be tidied with a small set of tools: gathering, separating and spreading. The following sections illustrate each problem with a real dataset that I have encountered, and show how to tidy them. ## Column headers are values, not variable names A common type of messy dataset is tabular data designed for presentation, where variables form both the rows and columns, and column headers are values, not variable names. While I would call this arrangement messy, in some cases it can be extremely useful. It provides efficient storage for completely crossed designs, and it can lead to extremely efficient computation if desired operations can be expressed as matrix operations. The following code shows a subset of a typical dataset of this form. This dataset explores the relationship between income and religion in the US. It comes from a report produced by the Pew Research Center, an American think-tank that collects data on attitudes to topics ranging from religion to the internet, and produces many reports that contain datasets in this format. ```{r} relig_income ``` This dataset has three variables, `religion`, `income` and `frequency`. To tidy it, we need to **gather** the non-variable columns into a two-column key-value pair. This action is often described as making a wide dataset long (or tall), but I'll avoid those terms because they're imprecise. When gathering variables, we need to provide the name of the new key-value columns to create. The first argument, is the name of the key column, which is the name of the variable defined by the values of the column headings. In this case, it's `income`. The second argument is the name of the value column, `frequency`. The third argument defines the columns to gather, here, every column except religion. ```{r} relig_income %>% gather(income, frequency, -religion) ``` This form is tidy because each column represents a variable and each row represents an observation, in this case a demographic unit corresponding to a combination of `religion` and `income`. This format is also used to record regularly spaced observations over time. For example, the Billboard dataset shown below records the date a song first entered the billboard top 100. It has variables for `artist`, `track`, `date.entered`, `rank` and `week`. The rank in each week after it enters the top 100 is recorded in 75 columns, `wk1` to `wk75`. This form of storage is not tidy, but it is useful for data entry. It reduces duplication since otherwise each song in each week would need its own row, and song metadata like title and artist would need to be repeated. This will be discussed in more depth in [multiple types](#multiple-types). ```{r} billboard ``` To tidy this dataset, we first gather together all the `wk` columns. The column names give the `week` and the values are the `rank`s: ```{r} billboard2 <- billboard %>% gather(week, rank, wk1:wk76, na.rm = TRUE) billboard2 ``` Here we use `na.rm` to drop any missing values from the gather columns. In this data, missing values represent weeks that the song wasn't in the charts, so can be safely dropped. In this case it's also nice to do a little cleaning, converting the week variable to a number, and figuring out the date corresponding to each week on the charts: ```{r} billboard3 <- billboard2 %>% mutate( week = extract_numeric(week), date = as.Date(date.entered) + 7 * (week - 1)) %>% select(-date.entered) billboard3 ``` Finally, it's always a good idea to sort the data. We could do it by artist, track and week: ```{r} billboard3 %>% arrange(artist, track, week) ``` Or by date and rank: ```{r} billboard3 %>% arrange(date, rank) ``` ## Multiple variables stored in one column After gathering columns, the key column is sometimes a combination of multiple underlying variable names. This happens in the `tb` (tuberculosis) dataset, shown below. This dataset comes from the World Health Organisation, and records the counts of confirmed tuberculosis cases by `country`, `year`, and demographic group. The demographic groups are broken down by `sex` (m, f) and `age` (0-14, 15-25, 25-34, 35-44, 45-54, 55-64, unknown). ```{r} tb <- as_tibble(read.csv("tb.csv", stringsAsFactors = FALSE)) tb ``` First we gather up the non-variable columns: ```{r} tb2 <- tb %>% gather(demo, n, -iso2, -year, na.rm = TRUE) tb2 ``` Column headers in this format are often separated by a non-alphanumeric character (e.g. `.`, `-`, `_`, `:`), or have a fixed width format, like in this dataset. `separate()` makes it easy to split a compound variables into individual variables. You can either pass it a regular expression to split on (the default is to split on non-alphanumeric columns), or a vector of character positions. In this case we want to split after the first character: ```{r} tb3 <- tb2 %>% separate(demo, c("sex", "age"), 1) tb3 ``` Storing the values in this form resolves a problem in the original data. We want to compare rates, not counts, which means we need to know the population. In the original format, there is no easy way to add a population variable. It has to be stored in a separate table, which makes it hard to correctly match populations to counts. In tidy form, adding variables for population and rate is easy because they're just additional columns. ## Variables are stored in both rows and columns The most complicated form of messy data occurs when variables are stored in both rows and columns. The code below loads daily weather data from the Global Historical Climatology Network for one weather station (MX17004) in Mexico for five months in 2010. ```{r} weather <- as_tibble(read.csv("weather.csv", stringsAsFactors = FALSE)) weather ``` It has variables in individual columns (`id`, `year`, `month`), spread across columns (`day`, d1-d31) and across rows (`tmin`, `tmax`) (minimum and maximum temperature). Months with fewer than 31 days have structural missing values for the last day(s) of the month. To tidy this dataset we first gather the day columns: ```{r} weather2 <- weather %>% gather(day, value, d1:d31, na.rm = TRUE) weather2 ``` For presentation, I've dropped the missing values, making them implicit rather than explicit. This is ok because we know how many days are in each month and can easily reconstruct the explicit missing values. We'll also do a little cleaning: ```{r} weather3 <- weather2 %>% mutate(day = extract_numeric(day)) %>% select(id, year, month, day, element, value) %>% arrange(id, year, month, day) weather3 ``` This dataset is mostly tidy, but the `element` column is not a variable; it stores the names of variables. (Not shown in this example are the other meteorological variables `prcp` (precipitation) and `snow` (snowfall)). Fixing this requires the spread operation. This performs the inverse of gathering by spreading the `element` and `value` columns back out into the columns: ```{r} weather3 %>% spread(element, value) ``` This form is tidy: there's one variable in each column, and each row represents one day. ## Multiple types in one table {#multiple-types} Datasets often involve values collected at multiple levels, on different types of observational units. During tidying, each type of observational unit should be stored in its own table. This is closely related to the idea of database normalisation, where each fact is expressed in only one place. It's important because otherwise inconsistencies can arise. The billboard dataset actually contains observations on two types of observational units: the song and its rank in each week. This manifests itself through the duplication of facts about the song: `artist` is repeated many times. This dataset needs to be broken down into two pieces: a song dataset which stores `artist` and `song name`, and a ranking dataset which gives the `rank` of the `song` in each `week`. We first extract a `song` dataset: ```{r} song <- billboard3 %>% select(artist, track) %>% unique() %>% mutate(song_id = row_number()) song ``` Then use that to make a `rank` dataset by replacing repeated song facts with a pointer to song details (a unique song id): ```{r} rank <- billboard3 %>% left_join(song, c("artist", "track")) %>% select(song_id, date, week, rank) %>% arrange(song_id, date) rank ``` You could also imagine a `week` dataset which would record background information about the week, maybe the total number of songs sold or similar "demographic" information. Normalisation is useful for tidying and eliminating inconsistencies. However, there are few data analysis tools that work directly with relational data, so analysis usually also requires denormalisation or the merging the datasets back into one table. ## One type in multiple tables It's also common to find data values about a single type of observational unit spread out over multiple tables or files. These tables and files are often split up by another variable, so that each represents a single year, person, or location. As long as the format for individual records is consistent, this is an easy problem to fix: 1. Read the files into a list of tables. 2. For each table, add a new column that records the original file name (the file name is often the value of an important variable). 3. Combine all tables into a single table. Purrr makes this straightforward in R. The following code generates a vector of file names in a directory (`data/`) which match a regular expression (ends in `.csv`). Next we name each element of the vector with the name of the file. We do this because will preserve the names in the following step, ensuring that each row in the final data frame is labeled with its source. Finally, `map_dfr()` loops over each path, reading in the csv file and combining the results into a single data frame. ```{r, eval = FALSE} library(purrr) paths <- dir("data", pattern = "\\.csv$", full.names = TRUE) names(paths) <- basename(paths) map_dfr(paths, read.csv, stringsAsFactors = FALSE, .id = "filename") ``` Once you have a single table, you can perform additional tidying as needed. An example of this type of cleaning can be found at which takes 129 yearly baby name tables provided by the US Social Security Administration and combines them into a single file. A more complicated situation occurs when the dataset structure changes over time. For example, the datasets may contain different variables, the same variables with different names, different file formats, or different conventions for missing values. This may require you to tidy each file to individually (or, if you're lucky, in small groups) and then combine them once tidied. An example of this type of tidying is illustrated in , which shows the tidying of epa fuel economy data for over 50,000 cars from 1978 to 2008. The raw data is available online, but each year is stored in a separate file and there are four major formats with many minor variations, making tidying this dataset a considerable challenge. tidyr/vignettes/nest.Rmd0000644000176200001440000000517713534721204015045 0ustar liggesusers--- title: "Nested data" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{nest} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup, message = FALSE} library(tidyr) library(dplyr) library(purrr) ``` ## Basics A nested data frame is a data frame where one (or more) columns is a list of data frames. You can create simple nested data frames by hand: ```{r} df1 <- tibble( g = c(1, 2, 3), data = list( tibble(x = 1, y = 2), tibble(x = 4:5, y = 6:7), tibble(x = 10) ) ) df1 ``` (It is possible to create list-columns in regular data frames, not just in tibbles, but it's considerably more work because the default behaviour of `data.frame()` is to treat lists as lists of columns.) But more commonly you'll create them with `tidyr::nest()`: ```{r} df2 <- tribble( ~g, ~x, ~y, 1, 1, 2, 2, 4, 6, 2, 5, 7, 3, 10, NA ) df2 %>% nest(data = c(x, y)) ``` `nest()` specifies which variables should be nested inside; an alternative is to use `dplyr::group_by()` to describe which variables should be kept outside. ```{r} df2 %>% group_by(g) %>% nest() ``` I think nesting is easiest to understand in connection to grouped data: each row in the output corresponds to one _group_ in the input. We'll see shortly this is particularly convenient when you have other per-group objects. The opposite of `nest()` is `unnest()`. You give it the name of a list-column containing data frames, and it row-binds the data frames together, repeating the outer columns the right number of times to line up. ```{r} df1 %>% unnest(data) ``` ## Nested data and models Nested data is a great fit for problems where you have one of _something_ for each group. A common place this arises is when you're fitting multiple models. ```{r} mtcars_nested <- mtcars %>% group_by(cyl) %>% nest() mtcars_nested ``` Once you have a list of data frames, it's very natural to produce a list of models: ```{r} mtcars_nested <- mtcars_nested %>% mutate(model = map(data, function(df) lm(mpg ~ wt, data = df))) mtcars_nested ``` And then you could even produce a list of predictions: ```{r} mtcars_nested <- mtcars_nested %>% mutate(model = map(model, predict)) mtcars_nested ``` This workflow works particularly well in conjunction with [broom](https://broom.tidyverse.org/), which makes it easy to turn models into tidy data frames which can then be `unnest()`ed to get back to flat data frames. You can see a bigger example in the [broom and dplyr vignette](https://broom.tidyverse.org/articles/broom_and_dplyr.html). tidyr/vignettes/pivot.Rmd0000644000176200001440000005224013612142023015217 0ustar liggesusers--- title: "Pivoting" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Pivoting} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) options(tibble.print_max = 10) ``` # Introduction This vignette describes the use of the new `pivot_longer()` and `pivot_wider()` functions. Their goal is to improve the usability of `gather()` and `spread()`, and incorporate state-of-the-art features found in other packages. For some time, it's been obvious that there is something fundamentally wrong with the design of `spread()` and `gather()`. Many people don't find the names intuitive and find it hard to remember which direction corresponds to spreading and which to gathering. It also seems surprisingly hard to remember the arguments to these functions, meaning that many people (including me!) have to consult the documentation every time. There are two important new features inspired by other R packages that have been advancing reshaping in R: * `pivot_longer()` can work with multiple value variables that may have different types, inspired by the enhanced `melt()` and `dcast()` functions provided by the [data.table][data.table] package by Matt Dowle and Arun Srinivasan. * `pivot_longer()` and `pivot_wider()` can take a data frame that specifies precisely how metadata stored in column names becomes data variables (and vice versa), inspired by the [cdata][cdata] package by John Mount and Nina Zumel. In this vignette, you'll learn the key ideas behind `pivot_longer()` and `pivot_wider()` as you see them used to solve a variety of data reshaping challenges ranging from simple to complex. To begin we'll load some needed packages. In real analysis code, I'd imagine you'd do with the `library(tidyverse)`, but I can't do that here since this vignette is embedded in a package. ```{r setup, message = FALSE} library(tidyr) library(dplyr) library(readr) ``` # Longer `pivot_longer()` makes datasets __longer__ by increasing the number of rows and decreasing the number of columns. I don't believe it makes sense to describe a dataset as being in "long form". Length is a relative term, and you can only say (e.g.) that dataset A is longer than dataset B. `pivot_longer()` is commonly needed to tidy wild-caught datasets as they often optimise for ease of data entry or ease of comparison rather than ease of analysis. The following sections show how to use `pivot_longer()` for a wide range of realistic datasets. ## String data in column names {#pew} The `relig_income` dataset stores counts based on a survey which (among other things) asked people about their religion and annual income: ```{r} relig_income ``` This dataset contains three variables: * `religion`, stored in the rows, * `income` spread across the column names, and * `count` stored in the cell values. To tidy it we use `pivot_longer()`: ```{r} relig_income %>% pivot_longer(-religion, names_to = "income", values_to = "count") ``` * The first argument is the dataset to reshape, `relig_income`. * The second argument describes which columns need to be reshaped. In this case, it's every column apart from `religion`. * The `names_to` gives the name of the variable that will be created from the data stored in the column names, i.e. `income`. * The `values_to` gives the name of the variable that will be created from the data stored in the cell value, i.e. `count`. Neither the `names_to` nor the `values_to` column exists in `relig_income`, so we provide them as character strings surrounded in quotes. ## Numeric data in column names {#billboard} The `billboard` dataset records the billboard rank of songs in the year 2000. It has a form similar to the `relig_income` data, but the data encoded in the column names is really a number, not a string. ```{r} billboard ``` We can start with the same basic specification as for the `relig_income` dataset. Here we want the names to become a variable called `week`, and the values to become a variable called `rank`. I also use `values_drop_na` to drop rows that correspond to missing values. Not every song stays in the charts for all 76 weeks, so the structure of the input data force the creation of unnessary explicit `NA`s. ```{r} billboard %>% pivot_longer( cols = starts_with("wk"), names_to = "week", values_to = "rank", values_drop_na = TRUE ) ``` It would be nice to easily determine how long each song stayed in the charts, but to do that, we'll need to convert the `week` variable to an integer. We can do that by using two additional arguments: `names_prefix` strips off the `wk` prefix, and `names_ptypes` specifies that `week` should be an integer: ```{r} billboard %>% pivot_longer( cols = starts_with("wk"), names_to = "week", names_prefix = "wk", names_ptypes = list(week = integer()), values_to = "rank", values_drop_na = TRUE, ) ``` ## Many variables in column names A more challenging situation occurs when you have multiple variables crammed into the column names. For example, take the `who` dataset: ```{r} who ``` `country`, `iso2`, `iso3`, and `year` are already variables, so they can be left as is. But the columns from `new_sp_m014` to `newrel_f65` encode four variables in their names: * The `new_`/`new` prefix indicates these are counts of new cases. This dataset only contains new cases, so we'll ignore it here because it's constant. * `sp`/`rel`/`sp`/`ep` describe how the case was diagnosed. * `m`/`f` gives the gender. * `014`/`1524`/`2535`/`3544`/`4554`/`65` supplies the age range. We can break these variables up by specifying multiple column names in `names_to`, and then either providing `names_sep` or `names_pattern`. Here `names_pattern` is the most natural fit. It has a similar interface to `extract`: you give it a regular expression containing groups (defined by `()`) and it puts each group in a column. ```{r} who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", values_to = "count" ) ``` We could go one step further and specify the types of the `gender` and `age` columns. I think this is good practice when you have categorical variables with a known set of values. ```{r} who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", names_ptypes = list( gender = factor(levels = c("f", "m")), age = factor( levels = c("014", "1524", "2534", "3544", "4554", "5564", "65"), ordered = TRUE ) ), values_to = "count", ) ``` ## Multiple observations per row So far, we have been working with data frames that have one observation per row, but many important pivotting problems involve multiple observations per row. You can usually recognise this case because name of the column that you want to appear in the output is part of the column name in the input. In this section, you'll learn how to pivot this sort of data. The following example is adapted from the [data.table vignette](https://CRAN.R-project.org/package=data.table/vignettes/datatable-reshape.html), as inspiration for tidyr's solution to this problem. ```{r} family <- tribble( ~family, ~dob_child1, ~dob_child2, ~gender_child1, ~gender_child2, 1L, "1998-11-26", "2000-01-29", 1L, 2L, 2L, "1996-06-22", NA, 2L, NA, 3L, "2002-07-11", "2004-04-05", 2L, 2L, 4L, "2004-10-10", "2009-08-27", 1L, 1L, 5L, "2000-12-05", "2005-02-28", 2L, 1L, ) family <- family %>% mutate_at(vars(starts_with("dob")), parse_date) family ``` Note that we have two pieces of information (or values) for each child: their `gender` and their `dob` (date of birth). These need to go into separate columns in the result. Again we supply multiple variables to `names_to`, using `names_sep` to split up each variable name. Note the special name `.value`: this tells `pivot_longer()` that that part of the column name specifies the "value" being measured (which will become a variable in the output). ```{r} family %>% pivot_longer( -family, names_to = c(".value", "child"), names_sep = "_", values_drop_na = TRUE ) ``` Note the use of `values_drop_na = TRUE`: the input shape forces the creation of explicit missing variables for observations that don't exist. This problem also exists in the `anscombe` dataset built in to base R: ```{r} anscombe ``` This dataset contains four pairs of variables (`x1` and `y1`, `x2` and `y2`, etc) that underlie Anscombe's quartet, a collection of four datasets that have the same summary statistics (mean, sd, correlation etc), but have quite different data. We want to produce a dataset with columns `set`, `x` and `y`. ```{r} anscombe %>% pivot_longer(everything(), names_to = c(".value", "set"), names_pattern = "(.)(.)" ) %>% arrange(set) ``` A similar situation can arise with panel data. For example, take this example dataset provided by [Thomas Leeper](http://github.com/leeper/rio/issues/193). We can tidy it using the same approach as for `anscombe`: ```{r} pnl <- tibble( x = 1:4, a = c(1, 1,0, 0), b = c(0, 1, 1, 1), y1 = rnorm(4), y2 = rnorm(4), z1 = rep(3, 4), z2 = rep(-2, 4), ) pnl %>% pivot_longer( -c(x, a, b), names_to = c(".value", "time"), names_pattern = "(.)(.)" ) ``` ## Duplicated column names Occassionally you will come across datasets that have duplicated column names. Generally, such datasets are hard to work with in R, because when you refer to a column by name it only finds the first match. To create a tibble with duplicated names, you have to explicitly opt out of the name repair that usually prevents you from creating such a dataset: ```{r} df <- tibble(x = 1:3, y = 4:6, y = 5:7, y = 7:9, .name_repair = "minimal") df ``` When `pivot_longer()` encounters such data, it automatically adds another column to the output: ```{r} df %>% pivot_longer(-x, names_to = "name", values_to = "value") ``` # Wider `pivot_wider()` is the opposite of `pivot_longer()`: it makes a dataset __wider__ by increasing the number of columns and decreasing the number of rows. It's relatively rare to need `pivot_wider()` to make tidy data, but it's often useful for creating summary tables for presentation, or data in a format needed by other tools. ## Capture-recapture data The `fish_encounters` dataset, contributed by [Myfanwy Johnston](https://fishsciences.github.io/post/visualizing-fish-encounter-histories/), describes when fish swimming down a river are detected by automatic monitoring stations: ```{r} fish_encounters ``` Many tools used to analyse this data need it in a form where each station is a column: ```{r} fish_encounters %>% pivot_wider(names_from = station, values_from = seen) ``` This dataset only records when a fish was detected by the station - it doesn't record when it wasn't detected (this is common with this type of data). That means the output data is filled with `NA`s. However, in this case we know that the absence of a record means that the fish was not `seen`, so we can ask `pivot_wider()` to fill these missing values in with zeros: ```{r} fish_encounters %>% pivot_wider( names_from = station, values_from = seen, values_fill = list(seen = 0) ) ``` ## Aggregation You can also use `pivot_wider()` to perform simple aggregation. For example, take the `warpbreaks` dataset built in to base R (converted to a tibble for the better print method): ```{r} warpbreaks <- warpbreaks %>% as_tibble() %>% select(wool, tension, breaks) warpbreaks ``` This is a designed experiment with nine replicates for every combination of `wool` (`A` and `B`) and `tension` (`L`, `M`, `H`): ```{r} warpbreaks %>% count(wool, tension) ``` What happens if we attempt to pivot the levels of `wool` into the columns? ```{r} warpbreaks %>% pivot_wider(names_from = wool, values_from = breaks) ``` We get a warning that each cell in the output corresponds to multiple cells in the input. The default behaviour produces list-columns, which contain all the individual values. A more useful output would be summary statistics, e.g. `mean` breaks for each combination of wool and tension: ```{r} warpbreaks %>% pivot_wider( names_from = wool, values_from = breaks, values_fn = list(breaks = mean) ) ``` For more complex summary operations, I recommend summarising before reshaping, but for simple cases it's often convenient to summarise within `pivot_wider()`. ## Generate column name from multiple variables Imagine, as in , that we have information containing the combination of product, country, and year. In tidy form it might look like this: ```{r} production <- expand_grid( product = c("A", "B"), country = c("AI", "EI"), year = 2000:2014 ) %>% filter((product == "A" & country == "AI") | product == "B") %>% mutate(production = rnorm(nrow(.))) production ``` We want to widen the data so we have one column for each combination of `product` and `country`. The key is to specify multiple variables for `names_from`: ```{r} production %>% pivot_wider( names_from = c(product, country), values_from = production ) ``` ## Tidy census The `us_rent_income` dataset contains information about median income and rent for each state in the US for 2017 (from the American Community Survey, retrieved with the [tidycensus][tidycensus] package). ```{r} us_rent_income ``` Here both `estimate` and `moe` are values columns, so we can supply them to `values_from`: ```{r} us_rent_income %>% pivot_wider(names_from = variable, values_from = c(estimate, moe)) ``` Note that the name of the variable is automatically appended to the output columns. ## Contact list A final challenge is inspired by [Jiena Gu](https://github.com/jienagu/tidyverse_examples/blob/master/example_long_wide.R). Imagine you have a contact list that you've copied and pasted from a website: ```{r} contacts <- tribble( ~field, ~value, "name", "Jiena McLellan", "company", "Toyota", "name", "John Smith", "company", "google", "email", "john@google.com", "name", "Huxley Ratcliffe" ) ``` This is challenging because there's no variable that identifies which observations belong together. We can fix this by noting that every contact starts with a name, so we can create a unique id by counting every time we see "name" as the `field`: ```{r} contacts <- contacts %>% mutate( person_id = cumsum(field == "name") ) contacts ``` Now that we have a unique identifier for each person, we can pivot `field` and `value` into the columns: ```{r} contacts %>% pivot_wider(names_from = field, values_from = value) ``` # Longer, then wider Some problems can't be solved by pivotting in a single direction. The examples in this section show how you might combine `pivot_longer()` and `pivot_wider()` to solve more complex problems. ## World bank `world_bank_pop` contains data from the World Bank about population per country from 2000 to 2018. ```{r} world_bank_pop ``` My goal is to produce a tidy dataset where each variable is in a column. It's not obvious exactly what steps are needed yet, but I'll start with the most obvious problem: year is spread across multiple columns. ```{r} pop2 <- world_bank_pop %>% pivot_longer(`2000`:`2017`, names_to = "year", values_to = "value") pop2 ``` Next we need to consider the `indicator` variable: ```{r} pop2 %>% count(indicator) ``` Here `SP.POP.GROW` is population growth, `SP.POP.TOTL` is total population, and `SP.URB.*` are the same but only for urban areas. Let's split this up into two variables: `area` (total or urban) and the actual variable (population or growth): ```{r} pop3 <- pop2 %>% separate(indicator, c(NA, "area", "variable")) pop3 ``` Now we can complete the tidying by pivoting `variable` and `value` to make `TOTL` and `GROW` columns: ```{r} pop3 %>% pivot_wider(names_from = variable, values_from = value) ``` ## Multi-choice Based on a suggestion by [Maxime Wack](https://github.com/MaximeWack), ), the final example shows how to deal with a common way of recording multiple choice data. Often you will get such data as follows: ```{r} multi <- tribble( ~id, ~choice1, ~choice2, ~choice3, 1, "A", "B", "C", 2, "C", "B", NA, 3, "D", NA, NA, 4, "B", "D", NA ) ``` But the actual order isn't important, and you'd prefer to have the individual questions in the columns. You can achieve the desired transformation in two steps. First, you make the data longer, eliminating the explcit `NA`s, and adding a column to indicate that this choice was chosen: ```{r} multi2 <- multi %>% pivot_longer(-id, values_drop_na = TRUE) %>% mutate(checked = TRUE) multi2 ``` Then you make the data wider, filling in the missing observations with `FALSE`: ```{r} multi2 %>% pivot_wider( id_cols = id, names_from = value, values_from = checked, values_fill = list(checked = FALSE) ) ``` # Manual specs The arguments to `pivot_longer()` and `pivot_wider()` allow you to pivot a wide range of datasets. But the creativity that people apply to their data structures is seemingly endless, so it's quite possible that you will encounter a dataset that you can't immediately see how to reshape with `pivot_longer()` and `pivot_wider()`. To gain more control over pivotting, you can instead create a "spec" data frame that describes exactly how data stored in the column names becomes variables (and vice versa). This section introduces you to the spec data structure, and show you how to use it when `pivot_longer()` and `pivot_wider()` are insufficient. ## Longer To see how this works, lets return to the simplest case of pivotting applied to the `relig_income` dataset. Now pivotting happens in two steps: we first create a spec object (using `build_longer_spec()`) then use that to describe the pivotting operation: ```{r} spec <- relig_income %>% build_longer_spec( cols = -religion, names_to = "income", values_to = "count" ) pivot_longer_spec(relig_income, spec) ``` (This gives the same result as before, just with more code. There's no need to use it here, it is presented as a simple example for using `spec`.) What does `spec` look like? It's a data frame with one row for each column, and two special columns that start with `.`: * `.name` gives the name of the column. * `.value` gives the name of the column that the values in the cells will go into. ```{r} spec ``` ## Wider Below we widen `us_rent_income` with `pivot_wider()`. The result is ok, but I think it could be improved: ```{r} us_rent_income %>% pivot_wider(names_from = variable, values_from = c(estimate, moe)) ``` I think it would be better to have columns `income`, `rent`, `income_moe`, and `rent_moe`, which we can achieve with a manual spec. The current spec looks like this: ```{r} spec1 <- us_rent_income %>% build_wider_spec(names_from = variable, values_from = c(estimate, moe)) spec1 ``` For this case, we mutate `spec` to carefully construct the column names: ```{r} spec2 <- spec1 %>% mutate(.name = paste0(variable, ifelse(.value == "moe", "_moe", ""))) spec2 ``` Supplying this spec to `pivot_wider()` gives us the result we're looking for: ```{r} pivot_wider_spec(us_rent_income, spec2) ``` ## By hand Sometimes it's not possible (or not convenient) to compute the spec, and instead it's more convenient to construct the spec "by hand". For example, take this `construction` data, which is lightly modified from Table 5 "completions" found at : ```{r} construction ``` This sort of data is not uncommon from government agencies: the column names actually belong to different variables, and here we have summaries for number of units (1, 2-4, 5+) and regions of the country (NE, NW, midwest, S, W). We can most easily describe that with a tibble: ```{r} spec <- tribble( ~.name, ~.value, ~units, ~region, "1 unit", "n", "1", NA, "2 to 4 units", "n", "2-4", NA, "5 units or more", "n", "5+", NA, "Northeast", "n", NA, "Northeast", "Midwest", "n", NA, "Midwest", "South", "n", NA, "South", "West", "n", NA, "West", ) ``` Which yields the following longer form: ```{r} pivot_longer_spec(construction, spec) ``` Note that there is no overlap between the `units` and `region` variables; here the data would really be most naturally described in two independent tables. ## Theory One neat property of the `spec` is that you need the same spec for `pivot_longer()` and `pivot_wider()`. This makes it very clear that the two operations are symmetric: ```{r} construction %>% pivot_longer_spec(spec) %>% pivot_wider_spec(spec) ``` The pivotting spec allows us to be more precise about exactly how `pivot_longer(df, spec = spec)` changes the shape of `df`: it will have `nrow(df) * nrow(spec)` rows, and `ncol(df) - nrow(spec) + ncol(spec) - 2` columns. [cdata]: https://winvector.github.io/cdata/ [data.table]: https://github.com/Rdatatable/data.table/wiki [tidycensus]: https://walkerke.github.io/tidycensus tidyr/vignettes/tb.csv0000755000176200001440000143643013437754024014566 0ustar liggesusers"iso2","year","m04","m514","m014","m1524","m2534","m3544","m4554","m5564","m65","mu","f04","f514","f014","f1524","f2534","f3544","f4554","f5564","f65","fu" "AD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1996,NA,NA,0,0,0,4,1,0,0,NA,NA,NA,0,1,1,0,0,1,0,NA "AD",1997,NA,NA,0,0,1,2,2,1,6,NA,NA,NA,0,1,2,3,0,0,1,NA "AD",1998,NA,NA,0,0,0,1,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",1999,NA,NA,0,0,0,1,1,0,0,NA,NA,NA,0,0,0,1,0,0,0,NA "AD",2000,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",2001,NA,NA,0,NA,NA,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AD",2002,NA,NA,0,0,0,1,0,0,0,NA,NA,NA,0,1,0,0,0,0,0,NA "AD",2003,NA,NA,0,0,0,1,2,0,0,NA,NA,NA,0,1,1,1,0,0,0,NA "AD",2004,NA,NA,0,0,0,1,1,0,0,NA,NA,NA,0,0,1,0,0,0,0,NA "AD",2005,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0 "AD",2006,0,0,0,1,1,2,0,1,1,0,0,0,0,0,1,0,1,0,0,0 "AD",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,1,NA,NA,NA "AD",2008,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0 "AE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",1999,NA,NA,4,9,3,2,4,6,5,NA,NA,NA,9,11,5,3,0,3,2,NA "AE",2000,NA,NA,2,4,4,6,5,12,10,NA,NA,NA,3,16,1,3,0,0,4,NA "AE",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",2002,NA,NA,1,2,0,6,6,10,0,NA,NA,NA,3,3,8,3,4,10,1,NA "AE",2003,NA,NA,2,10,8,12,3,2,10,NA,NA,NA,4,9,5,3,3,2,4,NA "AE",2004,NA,NA,1,7,6,7,3,1,7,NA,NA,NA,3,6,2,7,2,2,3,NA "AE",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AE",2006,0,0,0,5,3,7,3,1,4,NA,0,2,2,6,4,5,3,4,5,NA "AE",2007,0,2,2,5,6,3,4,3,10,NA,0,1,1,8,6,3,2,0,0,NA "AE",2008,0,0,0,6,1,7,5,3,6,0,0,0,0,10,4,1,1,3,3,0 "AF",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AF",1997,NA,NA,0,10,6,3,5,2,0,NA,NA,NA,5,38,36,14,8,0,1,NA "AF",1998,NA,NA,30,129,128,90,89,64,41,NA,NA,NA,45,350,419,194,118,61,20,NA "AF",1999,NA,NA,8,55,55,47,34,21,8,NA,NA,NA,25,139,160,110,50,25,8,NA "AF",2000,NA,NA,52,228,183,149,129,94,80,NA,NA,NA,93,414,565,339,205,99,36,NA "AF",2001,NA,NA,129,379,349,274,204,139,103,NA,NA,NA,146,799,888,586,375,179,89,NA "AF",2002,NA,NA,90,476,481,368,246,241,189,NA,NA,NA,192,1119,1251,792,526,320,218,NA "AF",2003,NA,NA,127,511,436,284,256,288,203,NA,NA,NA,245,1152,1287,814,462,305,158,NA "AF",2004,NA,NA,139,537,568,360,358,386,310,NA,NA,NA,256,1360,1561,1096,645,413,256,NA "AF",2005,NA,NA,151,606,560,472,453,470,419,NA,NA,NA,320,1651,1959,1302,869,471,246,NA "AF",2006,NA,NA,193,837,791,574,572,572,410,NA,NA,NA,442,2139,2340,1654,1006,630,309,NA "AF",2007,NA,NA,186,856,840,597,566,630,507,NA,NA,NA,475,2224,2357,1708,1143,771,353,NA "AF",2008,NA,NA,187,941,773,545,570,630,575,NA,NA,NA,428,2094,2449,1614,1149,817,364,NA "AG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1996,NA,NA,0,0,0,0,1,0,0,NA,NA,NA,0,0,0,1,0,0,0,NA "AG",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",2000,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,1,1,1,0,0,0,0,NA "AG",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,NA "AG",2002,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,2,0,1,0,0,0,0,NA "AG",2003,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "AG",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",2005,NA,NA,NA,NA,NA,1,1,NA,NA,NA,NA,NA,NA,2,2,NA,NA,NA,NA,NA "AG",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AG",2007,0,0,0,0,0,0,1,1,0,NA,0,0,0,0,0,0,0,0,0,NA "AG",2008,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA "AI",2004,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "AI",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AI",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1995,NA,NA,0,0,0,0,19,40,30,NA,NA,NA,0,1,0,0,13,20,16,NA "AL",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AL",1997,NA,NA,0,23,43,33,25,21,19,NA,NA,NA,1,16,19,14,9,10,8,NA "AL",1998,NA,NA,1,17,21,24,18,26,24,NA,NA,NA,2,19,11,12,13,11,13,NA "AL",1999,NA,NA,0,13,23,25,19,15,15,NA,NA,NA,0,5,13,11,5,8,16,NA "AL",2000,NA,NA,2,19,21,14,24,19,16,NA,NA,NA,3,11,10,8,8,5,11,NA "AL",2001,NA,NA,3,13,18,17,19,20,30,NA,NA,NA,1,12,10,5,7,7,9,NA "AL",2002,NA,NA,0,21,27,29,19,23,25,NA,NA,NA,2,20,19,9,6,8,17,NA "AL",2003,NA,NA,0,28,19,32,16,22,19,NA,NA,NA,2,13,8,6,14,12,20,NA "AL",2004,NA,NA,5,12,19,21,24,23,20,NA,NA,NA,2,12,12,8,11,10,22,NA "AL",2005,0,0,0,26,21,16,31,20,37,0,0,0,0,3,9,5,5,5,18,0 "AL",2006,1,4,5,24,19,22,21,19,20,0,0,2,2,12,8,7,7,7,13,0 "AL",2007,0,0,0,19,13,16,24,16,19,0,0,2,2,13,9,7,7,11,9,0 "AL",2008,1,0,1,23,26,13,19,13,16,NA,0,1,1,20,10,8,5,5,10,NA "AM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AM",1995,NA,NA,1,18,16,11,10,8,1,NA,NA,NA,1,1,7,2,1,1,NA,NA "AM",1996,NA,NA,2,53,100,51,43,30,7,NA,NA,NA,0,9,11,9,8,4,0,NA "AM",1997,NA,NA,2,85,59,77,51,34,12,NA,NA,NA,3,16,22,17,7,14,1,NA "AM",1998,NA,NA,2,159,90,79,39,17,15,NA,NA,NA,1,21,20,11,10,5,6,NA "AM",1999,NA,NA,4,151,88,115,76,37,20,NA,NA,NA,6,22,15,20,6,9,7,NA "AM",2000,NA,NA,2,152,130,131,63,26,21,NA,NA,NA,1,24,27,24,8,8,4,NA "AM",2001,NA,NA,2,154,120,93,54,24,9,NA,NA,NA,1,40,31,22,10,7,5,NA "AM",2002,NA,NA,1,95,63,109,93,21,14,NA,NA,NA,2,16,24,32,36,4,1,NA "AM",2003,NA,NA,12,120,98,75,104,49,18,NA,NA,NA,2,29,31,13,12,9,3,NA "AM",2004,NA,NA,2,130,72,76,62,25,24,NA,NA,NA,1,24,17,12,10,3,3,NA "AM",2005,1,2,3,170,104,83,84,30,24,0,0,3,3,27,21,10,11,4,7,0 "AM",2006,0,0,0,113,116,96,98,38,17,0,0,3,3,28,29,16,15,7,4,0 "AM",2007,0,1,1,81,87,100,92,29,20,0,0,2,2,31,22,11,7,7,7,0 "AM",2008,0,0,0,53,103,74,87,37,15,0,0,4,4,44,25,10,14,10,11,0 "AN",1996,NA,NA,0,0,0,0,1,1,1,NA,NA,NA,0,0,0,1,0,0,0,NA "AN",1997,NA,NA,0,0,1,1,0,1,3,NA,NA,NA,0,0,2,2,1,1,1,NA "AN",1998,NA,NA,0,0,0,0,0,1,2,NA,NA,NA,0,1,0,2,1,0,0,NA "AN",1999,NA,NA,0,0,1,0,1,0,0,NA,NA,NA,0,1,1,0,0,0,0,NA "AN",2000,NA,NA,0,0,1,2,0,0,0,NA,NA,NA,0,0,1,0,0,1,0,NA "AN",2001,NA,NA,0,0,1,5,0,0,0,NA,NA,NA,0,0,1,0,0,1,0,NA "AN",2002,NA,NA,0,1,1,3,2,3,1,NA,NA,NA,0,1,0,0,1,0,1,NA "AN",2003,NA,NA,0,0,2,1,0,0,3,NA,NA,NA,0,0,1,1,0,1,0,NA "AN",2004,NA,NA,1,1,0,4,3,0,1,NA,NA,NA,0,0,NA,1,0,0,0,NA "AN",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AN",2006,0,0,0,0,0,2,1,1,0,NA,0,1,1,0,0,0,0,0,0,NA "AN",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AN",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AO",1995,NA,NA,386,724,562,346,224,155,14,NA,NA,NA,371,707,443,264,248,130,18,NA "AO",1996,NA,NA,360,1036,926,1027,469,272,169,NA,NA,NA,388,1066,963,615,370,242,113,NA "AO",1997,NA,NA,419,913,1026,819,507,304,193,NA,NA,NA,431,1165,1007,627,411,234,145,NA "AO",1998,NA,NA,240,915,950,839,470,219,135,NA,NA,NA,297,1084,970,623,319,169,92,NA "AO",1999,NA,NA,391,1134,1237,973,518,314,234,NA,NA,NA,459,1197,1157,743,474,217,194,NA "AO",2000,NA,NA,186,999,1003,912,482,312,194,NA,NA,NA,247,1142,1091,844,417,200,120,NA "AO",2001,NA,NA,230,892,752,648,420,197,173,NA,NA,NA,279,993,869,647,323,200,182,NA "AO",2002,NA,NA,435,2223,2292,1915,1187,624,444,NA,NA,NA,640,2610,2208,1600,972,533,305,NA "AO",2003,NA,NA,409,2355,2598,1908,1090,512,361,NA,NA,NA,591,3078,2641,1747,1157,395,129,NA "AO",2004,NA,NA,554,2684,2659,1998,1196,561,321,NA,NA,NA,733,3198,2772,1854,1029,505,269,NA "AO",2005,NA,NA,520,2549,2797,1918,1255,665,461,NA,NA,NA,704,2926,2682,1797,1138,581,417,NA "AO",2006,NA,NA,540,2632,3049,2182,1397,729,428,NA,NA,NA,689,2851,2892,1990,1223,583,314,NA "AO",2007,NA,NA,484,2824,3197,2255,1357,699,465,NA,NA,NA,703,2943,2721,1812,1041,554,367,NA "AO",2008,NA,NA,367,2970,3493,2418,1480,733,420,0,NA,NA,512,3199,2786,2082,1209,556,337,0 "AR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AR",1996,NA,NA,113,611,535,338,276,230,286,NA,NA,NA,107,643,591,528,546,520,463,NA "AR",1997,NA,NA,96,580,600,523,489,417,393,NA,NA,NA,133,566,511,336,240,199,234,NA "AR",1998,NA,NA,84,578,571,463,476,387,370,NA,NA,NA,94,558,498,271,229,207,276,NA "AR",1999,NA,NA,90,490,546,435,464,384,380,NA,NA,NA,108,502,442,292,210,177,249,NA "AR",2000,NA,NA,97,278,594,402,419,368,330,NA,NA,NA,121,544,479,262,230,179,216,NA "AR",2001,NA,NA,78,682,611,495,471,404,436,NA,NA,NA,85,674,561,303,242,215,249,NA "AR",2002,NA,NA,70,612,658,463,477,389,399,NA,NA,NA,117,622,580,301,237,203,255,NA "AR",2003,NA,NA,89,574,565,413,461,366,405,NA,NA,NA,99,516,513,294,241,192,231,NA "AR",2004,NA,NA,64,588,543,399,387,332,345,NA,NA,NA,98,519,477,271,237,169,237,NA "AR",2005,NA,NA,64,621,530,358,384,340,348,NA,NA,NA,90,530,474,290,198,169,240,NA "AR",2006,19,48,67,519,484,360,351,346,321,NA,18,56,74,438,437,235,197,173,213,NA "AR",2007,14,63,77,656,623,401,415,389,324,NA,14,56,70,558,500,246,217,172,246,NA "AR",2008,11,58,69,633,611,390,416,364,295,30,5,61,66,536,506,252,221,157,204,8 "AS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1997,NA,NA,1,0,0,1,1,1,1,NA,NA,NA,0,0,0,0,1,0,0,NA "AS",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",2000,NA,NA,NA,NA,NA,NA,1,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA "AS",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,1,NA,NA "AS",2002,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",2003,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA "AS",2004,NA,NA,NA,NA,NA,NA,NA,2,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA "AS",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,2,NA,NA,NA "AS",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,2,NA,NA,NA "AS",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AS",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1995,NA,NA,4,37,95,82,89,71,73,NA,NA,NA,6,22,52,32,21,18,59,NA "AT",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1997,NA,NA,24,59,117,170,168,122,185,NA,NA,NA,33,41,93,62,52,52,172,NA "AT",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AT",1999,NA,NA,0,13,40,54,52,37,49,NA,NA,NA,0,10,16,18,6,2,26,NA "AT",2000,NA,NA,1,17,30,59,42,23,41,NA,NA,NA,1,11,22,12,11,6,22,NA "AT",2001,NA,NA,1,15,27,39,37,37,27,NA,NA,NA,1,8,13,15,4,6,18,NA "AT",2002,NA,NA,1,8,14,32,43,20,25,NA,NA,NA,0,8,13,7,5,7,21,NA "AT",2003,NA,NA,0,19,31,37,43,19,28,NA,NA,NA,2,10,25,12,7,4,12,NA "AT",2004,NA,NA,1,19,19,38,27,24,21,NA,NA,NA,0,12,15,9,3,3,16,NA "AT",2005,1,0,1,32,23,22,41,24,30,0,0,0,0,13,11,8,3,5,10,0 "AT",2006,0,1,1,9,25,36,39,19,19,0,1,1,2,12,12,16,5,3,15,0 "AT",2007,NA,1,1,12,15,27,26,18,25,NA,1,1,2,10,14,7,11,2,19,NA "AT",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AU",1997,NA,NA,1,8,24,18,13,17,28,NA,NA,NA,0,10,15,9,5,10,12,NA "AU",1998,NA,NA,0,11,22,18,13,15,31,NA,NA,NA,2,19,24,15,8,2,24,NA "AU",1999,NA,NA,0,13,40,54,52,37,49,NA,NA,NA,0,10,16,18,6,2,26,NA "AU",2000,NA,NA,3,16,35,25,24,19,49,NA,NA,NA,0,15,19,12,15,5,14,NA "AU",2001,NA,NA,1,23,20,18,18,13,35,NA,NA,NA,1,21,27,16,7,8,20,NA "AU",2002,NA,NA,1,15,20,26,19,13,34,NA,NA,NA,0,15,21,15,6,4,23,NA "AU",2003,NA,NA,0,14,10,2,11,5,30,NA,NA,NA,0,9,13,3,5,4,7,NA "AU",2004,NA,NA,0,18,16,17,15,11,32,NA,NA,NA,0,6,17,5,7,3,19,NA "AU",2005,NA,NA,0,32,27,23,11,12,30,NA,NA,NA,2,18,26,11,10,6,14,NA "AU",2006,1,1,1,33,35,23,21,16,43,NA,1,1,2,18,27,14,7,9,21,NA "AU",2007,0,3,3,30,33,20,15,14,37,NA,0,4,4,26,37,20,12,7,23,NA "AU",2008,NA,NA,2,46,33,20,27,23,42,NA,NA,NA,3,27,32,14,6,11,10,NA "AZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",1995,NA,NA,0,13,29,14,6,4,1,NA,NA,NA,0,5,18,0,0,0,0,NA "AZ",1996,NA,NA,0,57,302,231,47,101,16,NA,NA,NA,5,20,154,86,16,13,10,NA "AZ",1997,NA,NA,0,120,244,194,89,12,3,NA,NA,NA,0,42,70,178,23,0,0,NA "AZ",1998,NA,NA,0,44,47,24,9,4,2,NA,NA,NA,0,7,10,7,6,1,0,NA "AZ",1999,NA,NA,0,96,46,217,184,49,0,NA,NA,NA,0,4,17,73,58,19,0,NA "AZ",2000,NA,NA,0,9,24,33,42,30,0,NA,NA,NA,0,3,3,6,3,0,0,NA "AZ",2001,NA,NA,3,1,3,NA,NA,NA,NA,NA,NA,NA,2,NA,1,NA,NA,NA,NA,NA "AZ",2002,NA,NA,6,290,433,359,190,72,16,NA,NA,NA,5,48,88,80,34,19,21,NA "AZ",2003,NA,NA,3,212,258,215,113,66,20,NA,NA,NA,1,72,60,62,48,26,5,NA "AZ",2004,NA,NA,8,248,311,222,167,92,83,NA,NA,NA,8,120,65,57,34,33,24,NA "AZ",2005,2,75,77,109,297,215,209,187,88,0,2,88,90,64,98,47,32,24,24,0 "AZ",2006,1,5,6,241,362,365,120,78,30,0,0,2,2,51,66,66,44,15,8,0 "AZ",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "AZ",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BA",1995,NA,NA,0,15,61,90,140,139,100,NA,NA,NA,0,40,67,64,49,77,23,NA "BA",1996,NA,NA,5,30,48,62,51,60,39,NA,NA,NA,0,23,28,39,16,27,39,NA "BA",1997,NA,NA,5,48,84,99,66,36,74,NA,NA,NA,11,53,42,50,35,65,83,NA "BA",1998,NA,NA,1,28,75,85,75,55,75,NA,NA,NA,3,37,42,27,22,30,85,NA "BA",1999,NA,NA,2,44,76,113,89,60,68,NA,NA,NA,6,49,59,34,24,38,87,NA "BA",2000,NA,NA,4,56,82,99,66,58,77,NA,NA,NA,4,30,46,29,29,48,124,NA "BA",2001,NA,NA,6,39,70,110,89,53,99,NA,NA,NA,7,45,50,34,17,50,127,NA "BA",2002,NA,NA,1,36,48,70,69,33,63,NA,NA,NA,2,22,33,18,19,31,81,NA "BA",2003,NA,NA,4,32,42,49,52,45,50,NA,NA,NA,4,27,37,34,14,30,73,NA "BA",2004,NA,NA,3,66,79,95,82,77,115,NA,NA,NA,3,45,67,43,51,59,102,NA "BA",2005,0,1,1,22,58,61,78,44,80,1,0,2,2,35,39,33,28,28,130,0 "BA",2006,0,0,0,40,58,47,53,42,66,2,0,0,0,41,50,24,29,20,88,2 "BA",2007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 "BA",2008,0,0,0,20,35,38,84,49,79,0,0,3,3,26,26,20,11,6,112,0 "BB",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1996,NA,NA,0,0,1,0,1,1,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",2000,NA,NA,0,0,0,2,0,0,0,NA,NA,NA,0,0,1,0,0,0,0,NA "BB",2001,NA,NA,0,1,1,1,0,0,1,NA,NA,NA,0,0,0,1,1,0,0,NA "BB",2002,NA,NA,NA,2,NA,NA,1,NA,1,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA "BB",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",2004,NA,NA,NA,NA,2,2,6,NA,4,NA,NA,NA,1,NA,2,1,1,NA,1,NA "BB",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BB",2006,NA,NA,NA,NA,2,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,1,NA "BB",2007,0,0,0,0,0,0,5,0,0,NA,0,0,0,0,0,0,3,0,0,NA "BB",2008,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 "BD",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BD",1995,NA,NA,29,505,983,1001,748,648,424,NA,NA,NA,64,309,546,360,236,132,38,NA "BD",1996,NA,NA,45,723,1322,1264,908,737,472,NA,NA,NA,89,434,663,434,268,151,41,NA "BD",1997,NA,NA,201,2639,5013,5226,3926,2901,2003,NA,NA,NA,328,1883,2634,1748,1029,527,236,NA "BD",1998,NA,NA,254,3516,5988,6242,4771,3522,2569,NA,NA,NA,438,2663,3319,2156,1212,649,324,NA "BD",1999,NA,NA,259,3504,5777,6143,4748,3568,2701,NA,NA,NA,405,2753,3276,2180,1315,712,333,NA "BD",2000,NA,NA,256,3640,5643,5750,4718,3667,2837,NA,NA,NA,495,3029,3238,2247,1315,778,370,NA "BD",2001,NA,NA,283,3976,5834,6257,5172,3682,3039,NA,NA,NA,428,3392,3538,2260,1492,763,371,NA "BD",2002,NA,NA,449,4490,6288,7038,5981,4493,3682,NA,NA,NA,575,3104,3926,2791,2101,988,865,NA "BD",2003,NA,NA,320,5166,7275,8058,6947,5501,4142,NA,NA,NA,544,4298,4282,3258,2086,1150,591,NA "BD",2004,NA,NA,420,6171,8281,8914,8327,6276,5144,NA,NA,NA,589,5081,4869,3758,2518,1434,718,NA "BD",2005,NA,NA,524,8170,10443,11423,11038,8476,7453,NA,NA,NA,751,6776,6785,5538,3960,2281,1230,NA "BD",2006,NA,NA,607,9937,12166,12889,13378,10283,9513,NA,NA,NA,850,8164,8048,6395,5020,2982,1735,NA "BD",2007,NA,NA,523,10210,12442,13003,13307,10653,9830,NA,NA,NA,829,8562,8164,6678,5220,3057,1818,NA "BD",2008,NA,NA,422,10618,12926,12761,13355,10772,10386,0,NA,NA,764,9189,8389,6465,5206,3173,1947,0 "BE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BE",1995,NA,NA,3,23,49,63,52,54,102,NA,NA,NA,3,12,24,32,17,10,34,NA "BE",1996,NA,NA,1,20,43,49,45,32,59,NA,NA,NA,4,9,30,25,11,10,26,NA "BE",1997,NA,NA,3,18,45,56,43,41,115,NA,NA,NA,2,11,26,22,13,11,28,NA "BE",1998,NA,NA,3,22,50,58,48,36,78,NA,NA,NA,2,6,30,20,17,13,35,NA "BE",1999,NA,NA,2,18,40,49,46,38,83,NA,NA,NA,4,20,38,19,22,8,16,NA "BE",2000,NA,NA,3,20,57,39,55,32,56,NA,NA,NA,6,15,15,19,4,13,27,NA "BE",2001,NA,NA,8,31,40,47,44,23,54,NA,NA,NA,6,14,21,24,15,7,18,NA "BE",2002,NA,NA,1,19,56,52,33,19,58,NA,NA,NA,6,21,19,16,9,16,16,NA "BE",2003,NA,NA,6,27,33,30,40,17,35,NA,NA,NA,5,20,17,15,11,2,7,NA "BE",2004,NA,NA,1,26,55,30,37,24,48,NA,NA,NA,6,18,16,20,3,8,14,NA "BE",2005,1,0,1,26,50,32,27,15,47,0,1,1,2,27,31,15,12,4,23,0 "BE",2006,3,1,4,26,52,38,45,27,42,0,3,3,6,25,25,18,6,7,22,0 "BE",2007,1,1,2,23,55,35,38,18,43,NA,3,1,4,13,31,23,7,8,22,NA "BE",2008,2,1,3,23,40,43,32,24,41,0,2,1,3,17,40,22,8,3,12,0 "BF",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BF",1995,NA,NA,4,67,133,124,62,48,29,NA,NA,NA,7,76,53,39,26,11,10,NA "BF",1996,NA,NA,3,47,161,148,115,65,36,NA,NA,NA,10,51,97,67,58,31,10,NA "BF",1997,NA,NA,3,47,161,148,115,65,36,NA,NA,NA,10,51,97,67,58,31,10,NA "BF",1998,NA,NA,4,104,270,236,159,89,65,NA,NA,NA,9,83,98,86,82,32,14,NA "BF",1999,NA,NA,13,85,247,216,118,83,56,NA,NA,NA,8,67,141,92,63,39,20,NA "BF",2000,NA,NA,12,91,274,252,133,68,65,NA,NA,NA,7,59,128,101,45,38,14,NA "BF",2001,NA,NA,7,124,283,279,168,122,70,NA,NA,NA,17,80,155,100,49,32,32,NA "BF",2002,NA,NA,6,123,273,266,156,124,83,NA,NA,NA,12,85,159,104,80,30,25,NA "BF",2003,NA,NA,14,148,313,321,162,129,80,NA,NA,NA,19,102,131,132,70,46,36,NA "BF",2004,NA,NA,10,155,375,308,204,138,102,NA,NA,NA,22,109,196,148,72,54,33,NA "BF",2005,NA,NA,18,181,430,370,273,144,113,NA,NA,NA,15,125,248,174,109,54,40,NA "BF",2006,NA,NA,13,227,473,433,307,183,140,NA,NA,NA,33,155,252,198,99,99,47,NA "BF",2007,2,6,8,233,442,429,303,176,145,NA,4,25,29,157,243,187,129,88,45,NA "BF",2008,NA,NA,8,225,555,448,314,174,146,0,NA,NA,33,143,250,180,116,107,57,0 "BG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BG",2000,NA,NA,0,13,16,20,3,9,10,NA,NA,NA,0,11,14,7,3,4,6,NA "BG",2001,NA,NA,1,15,20,23,23,18,13,NA,NA,NA,1,11,16,13,5,2,9,NA "BG",2002,NA,NA,2,62,86,116,132,58,56,NA,NA,NA,6,48,73,45,19,9,30,NA "BG",2003,NA,NA,3,99,169,178,200,121,89,NA,NA,NA,7,85,106,63,44,32,58,NA "BG",2004,NA,NA,10,97,156,166,204,153,111,NA,NA,NA,4,84,111,64,49,35,71,NA "BG",2005,0,9,9,98,150,195,195,150,136,0,0,9,9,90,111,59,29,37,70,0 "BG",2006,NA,NA,6,86,146,170,184,133,123,NA,NA,NA,12,76,96,86,34,24,59,NA "BG",2007,2,5,7,63,122,181,176,131,90,NA,2,2,4,63,77,53,38,29,46,NA "BG",2008,1,1,2,80,145,151,159,127,68,0,1,0,1,57,78,54,31,23,44,0 "BH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BH",1995,NA,NA,0,0,1,2,3,1,3,NA,NA,NA,0,1,1,2,0,1,1,NA "BH",1996,NA,NA,0,8,25,24,16,7,6,NA,NA,NA,1,10,11,7,0,3,3,NA "BH",1997,NA,NA,1,11,32,19,10,4,10,NA,NA,NA,0,4,11,4,2,1,1,NA "BH",1998,NA,NA,0,3,40,36,20,13,22,NA,NA,NA,3,4,9,7,5,2,6,NA "BH",1999,NA,NA,0,12,19,14,13,5,3,NA,NA,NA,0,6,11,6,0,1,3,NA "BH",2000,NA,NA,0,0,3,2,5,3,4,NA,NA,NA,0,1,2,0,1,1,1,NA "BH",2001,NA,NA,0,1,2,2,6,1,6,NA,NA,NA,0,1,2,0,2,0,0,NA "BH",2002,NA,NA,0,1,1,2,2,1,5,NA,NA,NA,0,1,1,1,1,0,1,NA "BH",2003,NA,NA,0,2,2,1,1,3,4,NA,NA,NA,0,1,0,0,1,1,0,NA "BH",2004,NA,NA,0,0,0,2,2,0,1,NA,NA,NA,0,1,1,1,0,1,2,NA "BH",2005,NA,NA,0,0,0,2,3,0,4,NA,NA,NA,1,1,0,3,1,0,0,NA "BH",2006,NA,NA,0,10,25,11,18,1,1,NA,NA,NA,0,7,14,4,5,2,0,NA "BH",2007,NA,NA,0,8,26,15,8,4,3,NA,NA,NA,1,10,15,5,3,0,1,NA "BH",2008,0,0,0,17,48,27,8,2,3,0,0,0,0,12,16,8,1,0,0,0 "BI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",1995,NA,NA,5,128,238,224,73,32,19,NA,NA,NA,19,109,124,89,33,12,4,NA "BI",1996,NA,NA,16,217,283,274,116,41,17,NA,NA,NA,18,132,203,112,53,16,7,NA "BI",1997,NA,NA,21,208,446,431,198,79,32,NA,NA,NA,30,189,265,198,71,39,19,NA "BI",1998,NA,NA,45,301,527,530,319,102,33,NA,NA,NA,49,265,321,240,126,47,16,NA "BI",1999,NA,NA,64,349,566,492,281,102,57,NA,NA,NA,66,291,253,236,109,30,28,NA "BI",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BI",2001,NA,NA,34,344,559,469,238,75,39,NA,NA,NA,81,369,364,337,86,30,15,NA "BI",2002,NA,NA,16,310,470,520,270,97,52,NA,NA,NA,48,243,242,324,152,24,23,NA "BI",2003,NA,NA,32,348,572,488,260,106,35,NA,NA,NA,75,308,361,276,119,27,10,NA "BI",2004,NA,NA,24,352,674,468,292,78,48,NA,NA,NA,51,325,370,232,114,40,19,NA "BI",2005,NA,NA,34,352,591,525,372,111,55,NA,NA,NA,46,298,399,288,122,36,33,NA "BI",2006,NA,NA,30,347,600,488,320,114,64,NA,NA,NA,41,296,367,242,140,56,14,NA "BI",2007,0,0,26,425,637,542,372,177,88,NA,0,0,55,360,392,276,140,67,38,NA "BI",2008,NA,NA,30,430,684,526,459,175,80,NA,NA,NA,38,335,340,264,139,72,38,NA "BJ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",1995,NA,NA,14,186,352,306,176,101,92,NA,NA,NA,26,148,197,118,69,32,22,NA "BJ",1996,NA,NA,17,215,348,277,166,102,77,NA,NA,NA,34,169,218,136,46,42,21,NA "BJ",1997,NA,NA,20,215,376,306,180,76,107,NA,NA,NA,26,169,226,124,64,21,26,NA "BJ",1998,NA,NA,20,233,367,251,205,113,71,NA,NA,NA,15,189,242,159,65,39,19,NA "BJ",1999,NA,NA,14,250,444,293,207,124,85,NA,NA,NA,28,207,254,153,74,39,30,NA "BJ",2000,NA,NA,19,277,428,327,213,103,74,NA,NA,NA,36,239,275,149,76,45,25,NA "BJ",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",2002,NA,NA,16,248,489,304,231,125,94,NA,NA,NA,35,255,298,159,86,47,24,NA "BJ",2003,NA,NA,20,266,504,370,188,117,92,NA,NA,NA,32,226,304,150,93,47,25,NA "BJ",2004,NA,NA,16,308,529,344,229,125,82,NA,NA,NA,43,263,354,147,73,45,24,NA "BJ",2005,NA,NA,21,306,595,396,270,135,87,NA,NA,NA,25,249,331,145,89,51,39,NA "BJ",2006,NA,NA,18,298,624,465,247,124,106,NA,NA,NA,32,310,371,158,111,38,41,NA "BJ",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BJ",2008,NA,NA,20,333,604,439,284,163,100,0,NA,NA,38,245,386,173,99,52,30,0 "BM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2004,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "BM",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2006,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA "BM",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BM",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",1999,NA,NA,0,16,42,30,11,25,31,NA,NA,NA,1,16,36,16,16,13,14,NA "BN",2000,NA,NA,0,6,4,15,5,7,15,NA,NA,NA,0,4,6,9,6,3,4,NA "BN",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BN",2002,NA,NA,2,15,15,7,6,8,14,NA,NA,NA,0,11,9,8,5,5,7,NA "BN",2003,NA,NA,0,5,25,17,8,8,9,NA,NA,NA,0,9,14,11,4,5,6,NA "BN",2004,NA,NA,0,10,13,12,16,11,10,NA,NA,NA,0,6,11,12,8,2,4,NA "BN",2005,NA,NA,0,9,19,19,12,9,0,NA,NA,NA,0,9,11,8,3,2,0,NA "BN",2006,NA,NA,2,10,11,12,13,10,11,NA,NA,NA,1,5,11,8,11,4,9,NA "BN",2007,0,0,0,5,10,15,21,10,17,NA,0,2,0,6,6,12,15,9,2,NA "BN",2008,0,0,0,10,10,12,21,6,23,0,0,1,1,6,11,8,7,7,10,0 "BO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BO",1996,NA,NA,178,1359,887,636,525,321,324,NA,NA,NA,172,841,676,422,244,189,175,NA "BO",1997,NA,NA,150,1214,792,579,485,334,318,NA,NA,NA,202,792,548,380,285,192,187,NA "BO",1998,NA,NA,167,1254,885,579,488,364,353,NA,NA,NA,202,777,587,274,264,157,230,NA "BO",1999,NA,NA,222,1182,862,527,482,379,400,NA,NA,NA,225,798,554,352,263,205,222,NA "BO",2000,NA,NA,166,1182,797,518,466,340,366,NA,NA,NA,191,831,588,334,254,192,233,NA "BO",2001,NA,NA,165,1235,761,483,489,359,355,NA,NA,NA,241,915,664,302,226,194,283,NA "BO",2002,NA,NA,231,1235,787,492,417,356,386,NA,NA,NA,281,938,630,358,238,185,295,NA "BO",2003,NA,NA,156,1164,742,501,438,336,442,NA,NA,NA,167,811,549,313,224,196,305,NA "BO",2004,NA,NA,161,1205,750,505,431,319,399,NA,NA,NA,151,793,555,272,205,186,281,NA "BO",2005,NA,NA,157,1320,725,439,391,346,415,NA,NA,NA,160,846,533,276,226,182,262,NA "BO",2006,NA,NA,127,1147,699,471,390,333,398,NA,NA,NA,179,764,461,253,177,148,241,NA "BO",2007,NA,NA,116,1100,604,379,348,328,354,NA,NA,NA,125,736,453,243,193,162,259,NA "BO",2008,NA,NA,128,1253,734,412,391,363,429,NA,NA,NA,147,850,482,237,193,178,251,NA "BR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BR",1999,NA,NA,301,3662,5401,5827,4630,2634,2121,NA,NA,NA,372,2909,3450,2621,1661,1042,1106,NA "BR",2000,NA,NA,1894,7268,11568,11906,8623,5085,4494,NA,NA,NA,1859,6719,7215,5395,3582,2384,2496,NA "BR",2001,NA,NA,468,4455,5536,5184,4285,2353,1694,NA,NA,NA,516,3632,3303,2296,1701,1050,1018,NA "BR",2002,NA,NA,344,4695,5890,6325,4834,2738,2080,NA,NA,NA,380,3715,3584,2817,1755,1031,535,NA "BR",2003,NA,NA,382,4485,5709,6034,4863,2589,2057,NA,NA,NA,401,3582,3542,2540,1676,1001,1022,NA "BR",2004,NA,NA,337,5041,6321,6481,5157,2716,2169,NA,NA,NA,375,3684,3763,2742,1865,1041,1189,NA "BR",2005,NA,NA,317,5074,6119,6128,5259,2803,2140,NA,NA,NA,355,3496,3663,2626,1897,1112,1104,NA "BR",2006,136,207,343,4783,6098,6050,5042,2885,2221,NA,65,278,343,3132,3506,2569,1885,1121,1139,NA "BR",2007,175,196,371,4399,5990,5456,4878,2726,2075,NA,78,266,344,2952,3250,2327,1727,977,972,NA "BR",2008,115,183,298,4436,6173,5305,4854,2650,1905,0,69,287,356,2709,3233,2266,1669,964,879,0 "BS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",1995,NA,NA,3,3,5,7,4,2,2,NA,NA,NA,0,1,7,2,0,0,1,NA "BS",1996,NA,NA,0,1,4,4,5,0,0,NA,NA,NA,0,2,4,4,0,1,1,NA "BS",1997,NA,NA,0,2,14,11,5,3,2,NA,NA,NA,0,2,5,7,4,0,2,NA "BS",1998,NA,NA,0,3,2,7,5,3,0,NA,NA,NA,1,1,3,5,1,0,0,NA "BS",1999,NA,NA,1,0,10,8,6,0,0,NA,NA,NA,0,1,3,4,2,0,0,NA "BS",2000,NA,NA,1,2,7,9,4,3,2,NA,NA,NA,2,5,7,8,2,3,1,NA "BS",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",2002,NA,NA,2,2,2,7,7,3,2,NA,NA,NA,4,1,6,3,3,1,1,NA "BS",2003,NA,NA,0,2,5,6,3,1,3,NA,NA,NA,2,2,2,4,3,2,3,NA "BS",2004,NA,NA,3,3,6,14,9,0,1,NA,NA,NA,0,3,4,1,0,3,0,NA "BS",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BS",2007,0,0,0,3,3,9,4,1,0,NA,0,0,0,3,4,3,1,1,0,NA "BS",2008,0,0,0,2,6,5,7,2,0,0,0,0,0,1,4,4,0,0,0,0 "BT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BT",1995,NA,NA,2,42,65,36,35,24,11,NA,NA,NA,12,43,44,25,12,9,8,NA "BT",1996,NA,NA,4,51,45,43,22,12,8,NA,NA,NA,8,42,41,22,14,6,6,NA "BT",1997,NA,NA,4,39,42,36,21,24,8,NA,NA,NA,4,43,34,16,7,6,3,NA "BT",1998,NA,NA,3,45,39,24,24,22,9,NA,NA,NA,7,45,26,25,8,11,6,NA "BT",1999,NA,NA,10,27,42,31,29,22,14,NA,NA,NA,9,33,34,23,18,14,9,NA "BT",2000,NA,NA,6,65,41,30,24,12,2,NA,NA,NA,7,57,34,31,23,3,2,NA "BT",2001,NA,NA,3,51,50,37,32,10,16,NA,NA,NA,6,58,45,20,12,11,8,NA "BT",2002,NA,NA,5,54,51,32,26,22,19,NA,NA,NA,6,54,38,22,20,5,10,NA "BT",2003,NA,NA,9,62,50,20,25,20,13,NA,NA,NA,14,57,39,17,13,15,6,NA "BT",2004,NA,NA,1,54,52,28,27,18,23,NA,NA,NA,8,54,35,33,10,8,5,NA "BT",2005,NA,NA,1,47,58,26,23,14,12,NA,NA,NA,9,45,38,13,11,9,2,NA "BT",2006,NA,NA,0,65,55,22,20,12,11,NA,NA,NA,5,61,27,10,9,6,9,NA "BT",2007,NA,NA,2,60,44,29,26,17,13,NA,NA,NA,3,59,28,21,10,10,6,NA "BT",2008,NA,NA,3,85,46,12,18,13,14,NA,NA,NA,9,151,77,32,33,23,23,NA "BW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1997,NA,NA,29,193,509,422,244,143,95,NA,NA,NA,28,291,359,181,97,60,35,NA "BW",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BW",1999,NA,NA,18,177,526,492,274,139,93,NA,NA,NA,46,274,434,225,90,30,37,NA "BW",2000,NA,NA,25,185,605,488,267,135,96,NA,NA,NA,37,335,469,262,98,57,36,NA "BW",2001,NA,NA,15,190,539,490,288,116,73,NA,NA,NA,33,328,493,309,116,46,23,NA "BW",2002,NA,NA,17,226,595,517,244,136,84,NA,NA,NA,45,393,566,290,144,54,26,NA "BW",2003,NA,NA,22,203,552,446,244,136,78,NA,NA,NA,32,338,524,276,104,52,43,NA "BW",2004,NA,NA,29,245,490,436,271,122,96,NA,NA,NA,49,358,544,290,110,52,36,NA "BW",2005,NA,NA,27,260,563,506,272,135,97,NA,NA,NA,45,321,491,253,97,55,48,NA "BW",2006,NA,NA,36,262,577,490,289,122,104,NA,NA,NA,54,326,507,259,133,55,38,NA "BW",2007,NA,NA,25,251,535,442,263,120,82,NA,NA,NA,46,347,430,254,123,47,37,NA "BW",2008,4,23,27,254,528,384,220,113,85,0,5,37,42,347,474,226,135,51,30,0 "BY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BY",2001,NA,NA,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,4,NA,NA,NA,NA,NA,NA,NA "BY",2002,NA,NA,0,66,133,217,159,75,51,NA,NA,NA,0,12,22,28,17,17,41,NA "BY",2003,NA,NA,0,67,134,243,226,96,60,NA,NA,NA,0,18,39,43,26,21,45,NA "BY",2004,NA,NA,NA,84,170,260,235,83,56,NA,NA,NA,1,31,38,38,35,11,67,NA "BY",2005,NA,NA,NA,71,180,273,287,118,62,NA,NA,NA,NA,25,53,50,43,11,62,NA "BY",2006,NA,NA,NA,61,134,217,260,96,71,NA,NA,1,1,32,38,43,43,18,58,NA "BY",2007,NA,NA,NA,57,142,205,244,110,56,NA,NA,NA,NA,28,58,41,35,17,58,NA "BY",2008,NA,NA,NA,44,149,207,261,106,69,NA,NA,NA,NA,26,43,36,34,20,65,NA "BZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1995,NA,NA,1,1,2,4,0,1,1,NA,NA,NA,0,6,2,0,1,1,2,NA "BZ",1996,NA,NA,1,3,2,2,2,3,2,NA,NA,NA,0,1,4,0,0,0,0,NA "BZ",1997,NA,NA,2,2,6,3,10,3,6,NA,NA,NA,2,3,2,2,0,4,3,NA "BZ",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "BZ",2000,NA,NA,2,5,7,2,6,3,5,NA,NA,NA,0,2,1,2,4,1,4,NA "BZ",2001,NA,NA,0,0,5,9,7,9,11,NA,NA,NA,0,0,3,4,1,2,2,NA "BZ",2002,NA,NA,4,7,5,7,11,4,4,NA,NA,NA,3,5,6,3,4,4,4,NA "BZ",2003,NA,NA,1,4,8,10,3,2,8,NA,NA,NA,2,6,3,3,2,5,5,NA "BZ",2004,NA,NA,0,4,6,8,6,3,2,NA,NA,NA,1,0,1,1,2,0,0,NA "BZ",2005,NA,NA,0,8,8,6,8,5,3,NA,NA,NA,0,4,4,4,3,2,4,NA "BZ",2006,0,3,3,4,4,7,5,1,3,NA,0,2,2,6,5,3,5,6,6,NA "BZ",2007,1,0,1,6,8,8,7,6,3,NA,0,0,0,8,2,5,2,2,3,NA "BZ",2008,0,1,1,8,12,15,9,5,8,0,0,0,0,5,0,6,4,3,8,0 "CA",1980,NA,NA,12,54,75,83,100,108,186,NA,NA,NA,18,62,51,34,31,33,104,NA "CA",1981,NA,NA,8,49,61,64,87,103,141,NA,NA,NA,6,46,57,26,28,35,92,NA "CA",1982,NA,NA,6,52,66,69,90,91,150,NA,NA,NA,7,51,57,30,25,38,80,NA "CA",1983,NA,NA,9,47,63,62,90,92,123,NA,NA,NA,11,50,50,29,24,35,86,NA "CA",1984,NA,NA,3,44,75,58,68,83,169,NA,NA,NA,9,51,59,28,28,36,100,NA "CA",1985,NA,NA,11,42,70,59,77,81,168,NA,NA,NA,5,30,56,19,28,48,97,NA "CA",1986,NA,NA,9,58,73,62,59,73,147,NA,NA,NA,10,33,54,33,20,26,95,NA "CA",1987,NA,NA,9,40,71,60,49,64,129,NA,NA,NA,8,39,48,29,17,26,79,NA "CA",1988,NA,NA,4,43,73,62,52,68,131,NA,NA,NA,6,38,56,27,16,26,80,NA "CA",1989,NA,NA,10,45,56,60,54,62,122,NA,NA,NA,6,37,51,23,24,21,81,NA "CA",1990,NA,NA,3,35,70,55,40,42,100,NA,NA,NA,1,30,38,26,17,20,72,NA "CA",1991,NA,NA,7,37,79,53,37,36,110,NA,NA,NA,4,23,37,31,9,20,60,NA "CA",1992,NA,NA,6,42,47,58,41,51,79,NA,NA,NA,2,27,28,21,11,15,78,NA "CA",1993,NA,NA,8,33,47,53,43,33,74,NA,NA,NA,6,22,50,22,21,21,55,NA "CA",1994,NA,NA,2,42,54,42,43,34,87,NA,NA,NA,3,37,37,19,11,13,59,NA "CA",1995,NA,NA,1,28,31,60,34,41,70,NA,NA,NA,7,33,28,22,12,18,51,NA "CA",1996,NA,NA,3,28,49,48,31,34,70,NA,NA,NA,2,23,34,28,14,16,50,NA "CA",1997,NA,NA,0,21,55,44,30,44,90,NA,NA,NA,1,36,44,26,13,16,53,NA "CA",1998,NA,NA,4,33,43,51,31,26,80,NA,NA,NA,1,26,31,26,14,18,54,NA "CA",1999,NA,NA,0,23,47,51,36,33,94,NA,NA,NA,4,33,31,28,13,11,51,NA "CA",2000,NA,NA,5,34,45,46,41,32,79,NA,NA,NA,4,33,40,30,25,12,66,NA "CA",2001,NA,NA,6,24,49,56,40,22,76,NA,NA,NA,5,23,41,33,16,14,53,NA "CA",2002,NA,NA,0,25,34,50,34,27,64,NA,NA,NA,6,32,31,26,17,17,45,NA "CA",2003,NA,NA,1,26,36,37,32,21,42,NA,NA,NA,3,21,28,25,15,9,36,NA "CA",2004,NA,NA,2,25,34,38,32,31,64,NA,NA,NA,0,34,55,34,19,22,48,NA "CA",2005,NA,NA,3,37,45,44,40,20,68,NA,NA,NA,6,28,40,27,24,13,37,NA "CA",2006,1,1,2,34,34,33,42,26,64,NA,0,4,4,39,30,25,16,6,52,NA "CA",2007,4,1,5,31,41,51,50,35,75,NA,0,2,2,32,33,33,11,13,51,NA "CA",2008,0,2,2,39,36,49,53,38,62,0,0,3,3,36,39,39,27,20,45,0 "CD",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CD",1995,NA,NA,373,1572,2382,1890,1184,634,289,NA,NA,NA,331,1223,1532,1232,863,427,137,NA "CD",1996,NA,NA,228,1040,1627,1492,998,548,285,NA,NA,NA,292,1153,1528,1142,728,377,149,NA "CD",1997,NA,NA,259,1401,1996,1599,996,614,276,NA,NA,NA,321,1376,1874,1271,723,386,150,NA "CD",1998,NA,NA,455,3684,5073,3578,2002,997,518,NA,NA,NA,651,4074,4536,2716,1295,722,272,NA "CD",1999,NA,NA,474,4061,5886,4191,2250,1279,626,NA,NA,NA,708,4472,4991,3117,1725,836,305,NA "CD",2000,NA,NA,485,4048,5833,4151,2549,1295,602,NA,NA,NA,718,4422,5146,3309,1724,855,351,NA "CD",2001,NA,NA,581,4651,6794,4817,2876,1384,724,NA,NA,NA,842,4922,5586,3704,2057,1042,470,NA "CD",2002,NA,NA,649,4965,7414,4994,3065,1388,791,NA,NA,NA,874,5378,6230,3939,2262,1055,476,NA "CD",2003,NA,NA,854,5885,8427,6193,3776,1836,1047,NA,NA,NA,1233,6630,7711,4826,2866,1457,592,NA "CD",2004,NA,NA,1195,7007,9467,7114,4442,2376,1229,NA,NA,NA,1679,7630,8540,5529,3413,1850,721,NA "CD",2005,NA,NA,1321,6675,9808,7577,5022,2637,1499,NA,NA,NA,1695,7570,8501,5832,3898,2054,951,NA "CD",2006,NA,NA,1122,6391,9486,7321,5011,2657,1504,NA,NA,NA,1517,7236,8522,5621,3762,2019,975,NA "CD",2007,NA,NA,1343,6485,9548,7925,5341,2801,1752,NA,NA,NA,1842,7130,8415,5939,4127,2352,1099,NA "CD",2008,NA,NA,1515,6497,9988,8552,5756,3131,1686,NA,NA,NA,1828,7304,8995,6393,4104,2516,1212,NA "CF",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",1995,NA,NA,38,162,356,206,120,40,18,NA,NA,NA,39,233,350,145,57,21,9,NA "CF",1996,NA,NA,46,192,385,234,94,57,15,NA,NA,NA,52,273,346,177,62,45,6,NA "CF",1997,NA,NA,54,211,403,282,144,65,26,NA,NA,NA,53,301,394,207,100,23,10,NA "CF",1998,NA,NA,28,205,482,328,157,76,46,NA,NA,NA,67,353,476,217,115,61,26,NA "CF",1999,NA,NA,28,224,529,367,123,67,65,NA,NA,NA,72,376,498,196,86,52,42,NA "CF",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",2001,NA,NA,15,127,279,171,78,45,16,NA,NA,NA,25,179,236,123,64,23,1,NA "CF",2002,NA,NA,76,264,462,414,154,82,22,NA,NA,NA,66,315,402,262,139,82,18,NA "CF",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",2004,NA,NA,12,58,694,575,241,30,14,NA,NA,NA,14,60,430,559,181,46,9,NA "CF",2005,NA,NA,29,40,1136,160,26,35,15,NA,NA,NA,30,32,420,145,30,40,15,NA "CF",2006,NA,NA,48,409,770,923,152,83,30,NA,NA,NA,52,538,613,647,126,42,16,NA "CF",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CF",2008,NA,NA,68,466,643,515,276,160,81,0,NA,NA,102,481,673,378,196,136,57,0 "CG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1995,NA,NA,16,265,409,221,73,44,15,NA,NA,NA,17,296,353,167,61,38,11,NA "CG",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",1999,NA,NA,17,272,407,229,99,39,27,NA,NA,NA,25,297,348,143,83,24,22,NA "CG",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",2001,NA,NA,31,557,756,437,174,85,65,NA,NA,NA,53,554,706,377,177,85,107,NA "CG",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",2004,NA,NA,9,602,887,451,251,78,32,NA,NA,NA,38,310,800,373,156,88,44,NA "CG",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CG",2006,NA,NA,32,371,656,392,174,69,51,NA,NA,NA,44,384,500,247,138,79,54,NA "CG",2007,NA,NA,28,351,635,482,233,78,63,NA,NA,NA,45,411,608,334,153,71,60,NA "CG",2008,NA,NA,31,417,606,469,195,68,49,NA,NA,NA,56,396,505,308,135,85,51,NA "CH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CH",1995,NA,NA,0,12,23,26,23,13,27,NA,NA,NA,1,13,20,9,1,2,15,NA "CH",1996,NA,NA,1,12,28,27,17,17,22,NA,NA,NA,0,6,18,4,4,4,12,NA "CH",1997,NA,NA,0,16,20,15,11,7,25,NA,NA,NA,0,14,14,6,2,2,12,NA "CH",1998,NA,NA,0,15,30,26,12,10,23,NA,NA,NA,1,11,15,6,4,1,11,NA "CH",1999,NA,NA,1,12,15,17,6,6,5,NA,NA,NA,0,5,16,7,0,2,6,NA "CH",2000,NA,NA,0,5,18,10,7,5,8,NA,NA,NA,1,9,12,8,2,1,6,NA "CH",2001,NA,NA,0,9,18,13,7,10,7,NA,NA,NA,0,3,9,3,3,1,7,NA "CH",2002,NA,NA,0,9,16,11,16,5,8,NA,NA,NA,0,11,13,7,4,1,6,NA "CH",2003,NA,NA,0,11,7,19,10,4,11,NA,NA,NA,1,10,10,4,0,3,3,NA "CH",2004,NA,NA,0,10,14,8,11,6,11,NA,NA,NA,0,6,11,7,6,4,5,NA "CH",2005,0,1,1,10,9,13,12,2,7,0,0,0,0,6,11,8,3,2,4,0 "CH",2006,0,1,1,11,15,11,8,7,12,0,0,1,1,10,16,11,5,1,2,0 "CH",2007,0,0,0,11,10,11,7,5,11,0,0,1,1,9,17,3,0,3,7,0 "CH",2008,0,0,0,8,13,5,4,3,4,0,0,1,1,3,13,6,2,1,1,0 "CI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",1995,NA,NA,41,989,2092,1344,759,283,130,NA,NA,NA,99,810,813,497,273,105,19,NA "CI",1996,NA,NA,118,903,1670,1107,535,262,178,NA,NA,NA,139,803,836,409,194,158,75,NA "CI",1997,NA,NA,87,1140,1850,1326,662,398,260,NA,NA,NA,118,955,1123,548,291,184,99,NA "CI",1998,NA,NA,72,1173,1747,1471,795,433,273,NA,NA,NA,104,955,1087,703,347,126,105,NA "CI",1999,NA,NA,98,1069,1794,1240,629,378,251,NA,NA,NA,132,1022,1137,644,260,186,112,NA "CI",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CI",2001,NA,NA,108,1205,1818,1378,686,393,302,NA,NA,NA,127,1111,1345,735,342,239,112,NA "CI",2002,NA,NA,102,1271,2194,1490,833,385,307,NA,NA,NA,135,1151,1620,827,358,210,142,NA "CI",2003,NA,NA,116,1232,2075,1517,818,416,366,NA,NA,NA,154,1193,1617,878,443,222,151,NA "CI",2004,NA,NA,114,1418,2323,1530,875,474,387,NA,NA,NA,160,1266,1734,916,472,273,194,NA "CI",2005,NA,NA,128,1346,2449,1606,888,422,385,NA,NA,NA,193,1280,1756,989,528,232,201,NA "CI",2006,NA,NA,171,1467,2476,1614,915,564,368,NA,NA,NA,191,1327,1776,1069,445,275,209,NA "CI",2007,NA,NA,173,1576,2705,1817,981,532,429,NA,NA,NA,225,1349,1973,1126,596,354,235,NA "CI",2008,NA,NA,261,1764,2944,1842,1121,649,482,NA,NA,NA,277,1477,2085,1171,641,326,254,NA "CK",1980,NA,NA,0,2,0,1,1,0,0,NA,NA,NA,0,3,0,0,1,0,0,NA "CK",1981,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,0,0,0,0,0,1,0,NA "CK",1982,NA,NA,0,0,0,1,2,3,1,NA,NA,NA,0,2,0,3,0,0,0,NA "CK",1983,NA,NA,0,2,1,0,0,1,1,NA,NA,NA,0,4,0,3,1,2,0,NA "CK",1984,NA,NA,0,0,1,0,1,0,1,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",1985,NA,NA,1,0,0,1,2,1,0,NA,NA,NA,0,1,1,0,0,1,0,NA "CK",1986,NA,NA,0,1,0,0,0,0,0,NA,NA,NA,1,0,0,0,0,0,0,NA "CK",1987,NA,NA,0,0,0,1,0,0,0,NA,NA,NA,1,0,0,0,0,0,0,NA "CK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CK",1989,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,1,0,0,0,0,0,0,NA "CK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CK",1991,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,1,0,0,0,0,0,NA "CK",1992,NA,NA,0,0,0,0,1,2,0,NA,NA,NA,0,0,0,1,0,1,1,NA "CK",1993,NA,NA,0,0,0,0,2,0,0,NA,NA,NA,0,0,1,0,0,1,0,NA "CK",1994,NA,NA,0,0,0,0,0,3,1,NA,NA,NA,1,0,0,0,0,0,0,NA "CK",1995,NA,NA,0,0,0,0,0,1,0,NA,NA,NA,0,0,0,0,1,0,0,NA "CK",1996,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,1,0,NA "CK",1997,NA,NA,0,0,0,0,0,1,0,NA,NA,NA,0,0,0,1,0,0,0,NA "CK",1998,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CK",2000,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",2001,NA,NA,0,0,0,0,0,1,1,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",2002,NA,NA,0,0,0,0,0,1,0,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",2003,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",2004,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",2005,NA,NA,0,1,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "CK",2006,0,0,0,0,0,0,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "CK",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CK",2008,NA,NA,NA,NA,NA,1,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1995,NA,NA,24,148,182,204,155,141,163,NA,NA,NA,24,100,120,108,75,73,107,NA "CL",1996,NA,NA,8,123,201,207,207,125,139,NA,NA,NA,11,88,117,72,63,47,72,NA "CL",1997,NA,NA,11,107,182,224,165,153,163,NA,NA,NA,11,92,121,80,66,60,88,NA "CL",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CL",1999,NA,NA,4,118,173,204,206,132,132,NA,NA,NA,9,87,109,97,52,76,98,NA "CL",2000,NA,NA,6,81,160,198,150,132,126,NA,NA,NA,10,66,96,70,54,58,83,NA "CL",2001,NA,NA,2,78,183,213,190,116,138,NA,NA,NA,9,69,85,76,58,55,83,NA "CL",2002,NA,NA,6,87,163,196,193,144,160,NA,NA,NA,7,64,91,82,76,54,89,NA "CL",2003,NA,NA,1,77,131,181,183,150,136,NA,NA,NA,8,59,106,81,42,41,80,NA "CL",2004,NA,NA,3,87,148,179,187,124,168,NA,NA,NA,5,58,74,76,57,57,74,NA "CL",2005,NA,NA,3,74,128,179,162,115,133,NA,NA,NA,4,55,78,60,56,36,93,NA "CL",2006,5,7,12,107,140,176,197,179,199,NA,0,7,7,70,91,74,95,64,122,NA "CL",2007,0,3,3,86,137,140,169,139,121,NA,0,8,8,59,75,63,49,39,78,NA "CL",2008,1,6,7,86,131,148,167,135,118,NA,2,1,3,52,86,49,37,30,65,NA "CM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CM",1995,NA,NA,20,208,569,323,287,204,164,NA,NA,NA,9,185,313,223,153,106,93,NA "CM",1996,NA,NA,34,151,735,291,178,38,17,NA,NA,NA,21,123,388,202,103,24,8,NA "CM",1997,NA,NA,36,321,1011,387,269,79,24,NA,NA,NA,25,277,522,341,179,63,14,NA "CM",1998,NA,NA,15,651,1006,787,262,87,35,NA,NA,NA,30,443,595,268,112,53,30,NA "CM",1999,NA,NA,49,602,1595,736,433,166,59,NA,NA,NA,47,506,783,505,235,95,21,NA "CM",2000,NA,NA,41,518,842,584,284,130,75,NA,NA,NA,63,368,530,293,139,60,33,NA "CM",2001,NA,NA,24,643,1000,732,322,154,86,NA,NA,NA,49,482,609,328,155,62,50,NA "CM",2002,NA,NA,66,818,1335,1117,619,258,125,NA,NA,NA,59,950,1053,545,236,140,44,NA "CM",2003,NA,NA,100,1176,2274,1516,788,330,160,NA,NA,NA,136,1273,1542,745,363,217,72,NA "CM",2004,NA,NA,127,1312,2147,1575,928,408,259,NA,NA,NA,181,1310,1449,756,412,214,140,NA "CM",2005,NA,NA,134,1472,2482,1766,1035,463,289,NA,NA,NA,226,1467,1788,1028,503,205,143,NA "CM",2006,NA,NA,112,1401,2550,1820,1080,437,300,NA,NA,NA,151,1358,1823,960,470,266,142,NA "CM",2007,NA,NA,121,1392,2613,1874,1011,480,307,NA,NA,NA,152,1443,1963,985,483,248,148,NA "CM",2008,0,0,108,1613,2861,2016,1135,526,281,0,0,0,173,1506,2041,1027,568,234,148,0 "CN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CN",1995,NA,NA,1102,12791,18306,15487,13105,13489,10130,NA,NA,NA,1169,10890,13250,8376,5679,4579,2841,NA "CN",1996,NA,NA,1409,16490,24057,19695,17024,16758,13697,NA,NA,NA,1624,13773,17218,10214,7020,5346,3945,NA "CN",1997,NA,NA,1456,18547,28247,23006,20330,19667,17041,NA,NA,NA,1534,15258,19547,11758,8259,6422,4823,NA "CN",1998,NA,NA,1481,19699,30093,25088,23483,21651,20501,NA,NA,NA,1558,15726,20203,12672,9399,7122,5728,NA "CN",1999,NA,NA,1247,18961,29328,25095,24239,21564,21367,NA,NA,NA,1431,15178,18846,12370,9838,7131,5663,NA "CN",2000,NA,NA,1131,19111,29399,25206,25593,21429,21771,NA,NA,NA,1420,14536,18496,12377,9899,7102,6296,NA "CN",2001,NA,NA,1213,19121,28520,25544,25759,20789,22799,NA,NA,NA,1405,14500,17446,12041,9963,7175,6491,NA "CN",2002,NA,NA,925,17933,25242,22645,23884,19564,22562,NA,NA,NA,1152,13250,15188,10505,8796,6586,6740,NA "CN",2003,NA,NA,1133,25125,32760,31604,32585,27243,32027,NA,NA,NA,1407,18811,19248,14783,12101,8988,9465,NA "CN",2004,NA,NA,1375,35465,43594,45408,46256,41846,50797,NA,NA,NA,1659,25951,25150,20613,16995,14038,15739,NA "CN",2005,NA,NA,1416,43005,49558,55400,54872,53822,69779,NA,NA,NA,1864,31180,27759,24728,19889,18203,21244,NA "CN",2006,NA,NA,1023,44528,48232,56733,54301,53746,68557,NA,NA,NA,1408,30904,26526,24564,18775,17782,21212,NA "CN",2007,NA,NA,878,44011,46374,56224,54960,56288,70376,NA,NA,NA,1235,29960,24914,23542,18129,17647,21339,NA "CN",2008,NA,NA,751,45596,44651,56182,55740,57492,69678,NA,NA,NA,964,29223,23484,22370,17565,17814,21086,NA "CO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",1999,NA,NA,270,1730,1473,1796,1500,350,1210,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CO",2000,NA,NA,246,763,1030,963,743,610,746,NA,NA,NA,194,587,758,523,381,304,510,NA "CO",2001,NA,NA,223,1037,703,722,869,646,653,NA,NA,NA,186,865,544,429,436,350,359,NA "CO",2002,NA,NA,209,614,696,688,593,472,662,NA,NA,NA,167,524,545,402,318,258,371,NA "CO",2003,NA,NA,237,684,816,844,853,642,761,NA,NA,NA,174,662,692,512,382,292,421,NA "CO",2004,NA,NA,208,732,824,743,725,564,737,NA,NA,NA,205,624,647,513,361,331,426,NA "CO",2005,NA,NA,178,623,685,666,687,510,695,NA,NA,NA,179,581,533,457,389,292,395,NA "CO",2006,NA,NA,219,709,713,737,785,573,766,NA,NA,NA,210,603,653,520,377,314,469,NA "CO",2007,NA,NA,144,618,704,694,712,574,786,NA,NA,NA,138,599,620,459,393,286,461,NA "CO",2008,NA,NA,136,666,736,666,749,610,797,0,NA,NA,133,580,608,441,384,284,406,0 "CR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CR",1995,NA,NA,1,17,38,24,19,23,22,NA,NA,NA,2,17,15,11,7,9,14,NA "CR",1996,NA,NA,0,11,11,19,15,19,15,NA,NA,NA,0,4,9,7,3,4,5,NA "CR",1997,NA,NA,37,30,82,69,52,35,45,NA,NA,NA,31,28,45,40,30,24,30,NA "CR",1998,NA,NA,30,53,78,67,53,43,36,NA,NA,NA,23,19,43,47,27,17,26,NA "CR",1999,NA,NA,4,28,63,89,70,51,73,NA,NA,NA,10,23,42,37,32,33,36,NA "CR",2000,NA,NA,14,31,53,62,39,28,49,NA,NA,NA,13,21,33,24,20,23,24,NA "CR",2001,NA,NA,2,26,53,72,50,29,36,NA,NA,NA,1,18,31,20,16,16,15,NA "CR",2002,NA,NA,3,26,45,44,43,19,38,NA,NA,NA,6,13,24,19,14,15,19,NA "CR",2003,NA,NA,3,33,47,32,39,28,33,NA,NA,NA,4,25,24,21,30,11,16,NA "CR",2004,NA,NA,1,49,62,45,36,29,43,NA,NA,NA,5,35,29,34,11,18,22,NA "CR",2005,NA,NA,1,43,38,53,34,20,34,NA,NA,NA,1,21,31,18,16,6,14,NA "CR",2006,0,1,1,27,36,29,34,25,24,NA,0,4,4,27,24,20,15,8,11,NA "CR",2007,0,2,4,44,57,28,32,17,31,NA,0,3,3,16,24,19,16,16,15,NA "CR",2008,NA,3,3,24,39,31,38,17,29,NA,NA,2,2,19,31,20,14,6,14,NA "CU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",1995,NA,NA,2,59,118,83,75,75,156,NA,NA,NA,1,17,52,29,39,48,80,NA "CU",1996,NA,NA,0,54,136,86,93,84,138,NA,NA,NA,1,29,44,20,45,42,63,NA "CU",1997,NA,NA,0,69,151,83,63,77,116,NA,NA,NA,2,16,49,33,32,28,46,NA "CU",1998,NA,NA,0,60,140,109,75,53,102,NA,NA,NA,1,17,48,23,30,31,55,NA "CU",1999,NA,NA,1,55,163,97,68,72,100,NA,NA,NA,2,15,37,27,20,28,35,NA "CU",2000,NA,NA,0,71,167,90,74,55,75,NA,NA,NA,2,9,22,26,22,23,39,NA "CU",2001,NA,NA,0,36,136,87,39,54,67,NA,NA,NA,1,24,17,22,17,20,39,NA "CU",2002,NA,NA,0,21,104,83,67,45,77,NA,NA,NA,3,15,28,22,21,20,34,NA "CU",2003,NA,NA,2,23,90,91,62,51,78,NA,NA,NA,0,11,14,20,23,13,29,NA "CU",2004,NA,NA,0,17,68,95,63,45,50,NA,NA,NA,0,16,20,15,16,20,29,NA "CU",2005,NA,NA,2,20,73,90,50,58,51,NA,NA,NA,2,14,17,26,13,22,29,NA "CU",2006,NA,NA,NA,22,73,93,50,47,50,NA,NA,NA,NA,8,18,22,12,14,23,NA "CU",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CU",2008,0,2,2,30,66,108,67,59,53,NA,1,2,3,11,14,22,18,11,34,NA "CV",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",1997,NA,NA,0,11,16,19,4,10,10,NA,NA,NA,2,10,10,8,3,10,9,NA "CV",1998,NA,NA,2,9,14,14,6,6,9,NA,NA,NA,2,12,4,5,3,5,10,NA "CV",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CV",2001,NA,NA,0,5,15,6,5,5,1,NA,NA,NA,2,7,9,7,1,2,3,NA "CV",2002,NA,NA,3,9,29,20,14,1,2,NA,NA,NA,2,11,11,12,3,4,4,NA "CV",2003,NA,NA,3,12,32,32,9,7,8,NA,NA,NA,1,6,7,13,7,4,11,NA "CV",2004,NA,NA,1,8,33,17,20,2,7,NA,NA,NA,2,17,34,11,7,6,4,NA "CV",2005,NA,NA,0,22,23,26,9,2,8,NA,NA,NA,2,9,16,4,5,3,6,NA "CV",2006,NA,2,2,15,22,18,8,6,4,NA,NA,2,2,14,16,5,6,4,9,NA "CV",2007,NA,NA,0,24,30,26,18,4,6,NA,NA,NA,0,18,17,5,1,3,6,NA "CV",2008,0,0,0,23,33,29,27,12,6,0,NA,NA,6,18,21,11,3,5,3,0 "CY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1995,NA,NA,0,1,1,0,1,1,2,NA,NA,NA,0,1,1,1,2,0,1,NA "CY",1996,NA,NA,0,0,0,0,0,1,0,NA,NA,NA,0,2,0,0,0,0,0,NA "CY",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",1998,NA,NA,0,0,1,0,0,0,1,NA,NA,NA,0,1,3,0,0,0,0,NA "CY",1999,NA,NA,5,1,6,2,2,10,0,NA,NA,NA,4,1,2,3,1,2,0,NA "CY",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CY",2002,NA,NA,0,2,1,1,1,0,2,NA,NA,NA,0,1,0,0,0,0,0,NA "CY",2003,NA,NA,0,1,4,3,0,0,1,NA,NA,NA,0,0,2,2,1,0,0,NA "CY",2004,NA,NA,0,3,3,0,1,1,1,NA,NA,NA,0,1,0,0,0,0,0,NA "CY",2005,0,0,0,3,1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0 "CY",2006,0,0,0,0,1,1,0,1,0,0,0,0,0,2,3,0,0,0,0,0 "CY",2007,0,0,0,2,1,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0 "CY",2008,0,0,0,1,0,0,1,0,0,0,0,0,0,1,2,1,0,0,0,0 "CZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "CZ",1995,NA,NA,2,10,22,83,88,53,90,NA,NA,NA,0,9,11,20,13,19,88,NA "CZ",1996,NA,NA,1,10,40,77,121,66,90,NA,NA,NA,1,10,17,11,21,20,89,NA "CZ",1997,NA,NA,0,5,25,71,94,64,83,NA,NA,NA,0,12,8,12,17,18,72,NA "CZ",1998,NA,NA,0,7,37,88,104,67,95,NA,NA,NA,1,6,17,12,18,11,82,NA "CZ",1999,NA,NA,2,13,27,62,98,45,75,NA,NA,NA,1,5,14,18,15,3,71,NA "CZ",2000,NA,NA,0,7,31,52,89,61,59,NA,NA,NA,0,15,13,9,10,7,57,NA "CZ",2001,NA,NA,0,18,39,47,85,43,50,NA,NA,NA,0,10,17,8,11,9,54,NA "CZ",2002,NA,NA,0,14,28,39,89,38,40,NA,NA,NA,0,6,10,8,8,6,43,NA "CZ",2003,NA,NA,0,11,28,42,67,48,50,NA,NA,NA,0,9,15,15,12,7,34,NA "CZ",2004,NA,NA,0,10,28,36,71,30,35,NA,NA,NA,0,11,17,9,13,13,29,NA "CZ",2005,0,0,0,8,24,57,55,45,46,0,0,0,0,3,14,16,7,5,28,0 "CZ",2006,0,0,0,6,19,39,56,38,25,0,0,0,0,4,12,12,10,6,30,0 "CZ",2007,0,0,0,14,26,35,63,39,29,0,0,0,0,6,8,5,9,5,28,0 "CZ",2008,0,0,0,7,29,39,44,36,32,0,0,0,0,4,14,8,5,10,23,0 "DE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",1995,NA,NA,14,179,453,539,460,442,625,NA,NA,NA,17,115,251,167,89,104,397,NA "DE",1996,NA,NA,20,181,377,520,413,405,607,NA,NA,NA,19,150,214,180,97,108,389,NA "DE",1997,NA,NA,11,166,375,459,384,424,509,NA,NA,NA,16,109,204,154,93,99,343,NA "DE",1998,NA,NA,9,179,333,448,358,349,538,NA,NA,NA,11,121,166,141,93,80,298,NA "DE",1999,NA,NA,13,145,308,419,362,335,449,NA,NA,NA,15,118,177,98,85,99,295,NA "DE",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DE",2001,NA,NA,3,3,89,136,106,94,119,NA,NA,NA,1,36,59,48,42,26,79,NA "DE",2002,NA,NA,3,34,75,102,88,81,101,NA,NA,NA,1,32,61,50,14,16,64,NA "DE",2003,NA,NA,2,68,107,177,163,103,155,NA,NA,NA,10,61,96,86,43,22,102,NA "DE",2004,NA,NA,5,63,130,182,161,110,198,NA,NA,NA,6,75,110,97,42,32,116,NA "DE",2005,2,4,6,59,113,171,167,92,167,0,3,1,4,51,104,73,43,37,103,0 "DE",2006,0,2,2,78,138,169,189,103,199,0,2,5,7,66,109,77,39,24,102,0 "DE",2007,0,2,2,116,248,314,344,184,362,0,0,4,4,120,176,152,116,46,178,0 "DE",2008,0,2,2,40,95,114,142,96,148,0,1,5,6,35,68,61,41,33,71,0 "DJ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DJ",1996,NA,NA,30,421,429,139,77,52,27,NA,NA,NA,31,247,212,67,38,21,5,NA "DJ",1997,NA,NA,52,428,442,167,115,66,23,NA,NA,NA,51,202,225,75,38,17,4,NA "DJ",1998,NA,NA,23,348,396,191,81,57,23,NA,NA,NA,28,208,197,76,43,17,9,NA "DJ",1999,NA,NA,25,348,371,159,87,67,22,NA,NA,NA,20,158,168,84,38,20,3,NA "DJ",2000,NA,NA,17,302,347,139,67,60,42,NA,NA,NA,12,147,156,47,31,17,10,NA "DJ",2001,NA,NA,17,267,331,125,65,51,23,NA,NA,NA,17,156,134,59,44,15,8,NA "DJ",2002,NA,NA,20,256,320,124,58,55,25,NA,NA,NA,18,142,136,48,28,19,4,NA "DJ",2003,NA,NA,10,222,288,132,76,42,24,NA,NA,NA,19,127,123,55,38,28,8,NA "DJ",2004,NA,NA,19,217,225,142,68,38,28,NA,NA,NA,16,111,115,49,23,25,10,NA "DJ",2005,NA,NA,18,220,252,119,62,47,29,NA,NA,NA,23,123,117,66,23,13,8,NA "DJ",2006,NA,NA,14,225,246,165,63,33,20,NA,NA,NA,24,117,129,59,35,18,5,NA "DJ",2007,4,10,14,241,264,142,83,44,23,NA,2,6,8,129,131,62,35,14,18,NA "DJ",2008,NA,NA,17,232,275,180,93,56,46,NA,NA,NA,22,138,159,79,53,15,10,NA "DK",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DK",1995,NA,NA,0,7,16,28,18,9,11,NA,NA,NA,2,7,13,8,4,3,2,NA "DK",1996,NA,NA,0,4,16,13,13,8,6,NA,NA,NA,0,5,9,8,4,3,8,NA "DK",1997,NA,NA,1,11,19,23,16,6,6,NA,NA,NA,1,6,8,2,5,2,8,NA "DK",1998,NA,NA,0,7,20,21,18,7,9,NA,NA,NA,1,6,16,8,7,6,6,NA "DK",1999,NA,NA,4,9,29,23,21,8,9,NA,NA,NA,1,11,18,11,7,8,11,NA "DK",2000,NA,NA,5,10,20,24,16,11,14,NA,NA,NA,5,16,15,14,6,7,8,NA "DK",2001,NA,NA,1,10,15,20,15,4,9,NA,NA,NA,5,5,12,13,7,5,3,NA "DK",2002,NA,NA,2,11,8,25,14,6,9,NA,NA,NA,1,14,17,11,10,2,5,NA "DK",2003,NA,NA,3,11,20,23,22,12,9,NA,NA,NA,0,6,13,12,6,2,4,NA "DK",2004,NA,NA,1,6,12,17,27,15,12,NA,NA,NA,2,10,16,10,9,7,2,NA "DK",2005,0,0,0,12,12,18,23,9,7,0,0,2,2,11,5,13,9,3,5,0 "DK",2006,0,0,0,8,13,15,27,10,8,0,0,1,1,6,12,9,5,5,4,0 "DK",2007,0,0,0,6,12,20,29,16,6,0,1,0,1,8,12,8,4,5,8,0 "DK",2008,0,0,0,8,15,9,24,10,8,0,0,2,2,5,7,5,8,4,1,0 "DM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",1996,NA,NA,0,0,1,2,1,1,0,NA,NA,NA,0,0,1,0,1,0,0,NA "DM",1997,NA,NA,0,0,0,0,1,1,1,NA,NA,NA,0,0,0,0,1,1,0,NA "DM",1998,NA,NA,0,0,0,0,1,0,0,NA,NA,NA,0,2,0,1,0,1,0,NA "DM",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",2002,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA "DM",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DM",2006,0,0,0,0,1,1,0,1,1,NA,0,0,0,1,0,1,1,1,0,NA "DM",2007,0,0,0,0,0,1,0,1,0,NA,0,0,0,0,0,0,0,1,0,NA "DM",2008,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0 "DO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",1996,NA,NA,17,231,262,128,79,45,42,NA,NA,NA,21,178,147,61,44,23,22,NA "DO",1997,NA,NA,76,450,471,246,145,111,81,NA,NA,NA,53,314,329,171,102,77,56,NA "DO",1998,NA,NA,62,340,416,184,130,114,50,NA,NA,NA,60,265,247,141,79,73,33,NA "DO",1999,NA,NA,90,507,485,356,238,166,183,NA,NA,NA,99,363,359,226,160,121,136,NA "DO",2000,NA,NA,73,410,481,344,173,125,113,NA,NA,NA,65,317,325,212,115,79,75,NA "DO",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DO",2002,NA,NA,39,295,417,270,145,86,71,NA,NA,NA,35,251,241,137,81,49,62,NA "DO",2003,NA,NA,52,364,518,331,194,116,112,NA,NA,NA,48,301,288,211,116,82,73,NA "DO",2004,NA,NA,45,391,502,363,180,122,104,NA,NA,NA,39,301,288,177,104,60,44,NA "DO",2005,NA,NA,43,399,483,386,228,123,105,NA,NA,NA,57,339,332,209,119,72,54,NA "DO",2006,NA,NA,25,342,480,340,207,111,92,NA,NA,NA,38,287,320,189,106,63,58,NA "DO",2007,NA,NA,23,290,403,362,209,108,85,NA,NA,NA,29,249,242,174,103,53,43,NA "DO",2008,2,14,16,322,398,337,198,122,105,0,4,30,34,288,272,163,96,55,52,0 "DZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1997,NA,NA,659,1422,1982,639,357,312,396,NA,NA,NA,92,1102,702,405,242,236,356,NA "DZ",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "DZ",1999,NA,NA,40,1193,1344,556,706,263,315,NA,NA,NA,92,884,621,281,221,243,329,NA "DZ",2000,NA,NA,59,927,1516,610,491,234,299,NA,NA,NA,36,1005,1293,746,314,208,312,NA "DZ",2001,NA,NA,41,1345,1614,708,401,283,390,NA,NA,NA,79,1057,782,352,287,280,334,NA "DZ",2002,NA,NA,39,1364,1580,630,406,273,280,NA,NA,NA,71,1840,730,334,224,217,258,NA "DZ",2003,NA,NA,40,1316,1633,706,429,231,328,NA,NA,NA,74,1017,702,326,242,241,356,NA "DZ",2004,NA,NA,63,1326,1694,758,434,271,373,NA,NA,NA,92,1011,798,320,253,227,359,NA "DZ",2005,NA,NA,53,1309,1841,919,473,314,426,NA,NA,NA,102,1044,820,389,270,229,465,NA "DZ",2006,NA,NA,41,1173,1573,692,409,251,360,NA,NA,NA,80,971,679,339,223,197,408,NA "DZ",2007,NA,NA,95,1388,1749,813,494,296,407,NA,NA,NA,109,1031,811,335,273,247,391,NA "DZ",2008,NA,NA,99,1505,1786,794,447,198,463,NA,NA,NA,150,1263,827,346,256,226,286,NA "EC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",1998,NA,NA,169,402,286,58,NA,NA,NA,NA,NA,NA,44,290,175,99,NA,NA,NA,NA "EC",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",2001,NA,NA,39,673,832,269,202,251,116,NA,NA,NA,37,591,584,267,180,208,190,NA "EC",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EC",2003,NA,NA,18,310,266,194,125,75,96,NA,NA,NA,24,217,140,94,56,44,40,NA "EC",2004,NA,NA,84,732,537,563,265,315,153,NA,NA,NA,108,522,342,268,170,161,120,NA "EC",2005,NA,NA,48,446,468,308,237,150,159,NA,NA,NA,48,329,305,199,139,85,127,NA "EC",2006,NA,NA,32,479,496,340,259,181,183,NA,NA,NA,46,321,315,183,143,92,112,NA "EC",2007,NA,NA,42,555,486,367,282,178,227,NA,NA,NA,57,365,335,198,133,100,123,NA "EC",2008,NA,NA,32,507,518,372,278,187,202,NA,NA,NA,56,334,331,185,126,107,145,NA "EE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EE",1996,NA,NA,1,7,34,53,39,28,19,NA,NA,NA,0,10,14,16,5,2,12,NA "EE",1997,NA,NA,0,4,23,59,53,29,17,NA,NA,NA,0,8,16,17,14,6,12,NA "EE",1998,NA,NA,0,15,49,60,64,34,22,NA,NA,NA,0,7,7,15,9,7,10,NA "EE",1999,NA,NA,0,14,35,72,55,19,17,NA,NA,NA,0,8,9,20,16,2,7,NA "EE",2000,NA,NA,0,6,31,53,56,35,15,NA,NA,NA,0,9,11,14,11,4,10,NA "EE",2001,NA,NA,0,10,25,43,37,24,14,NA,NA,NA,0,6,11,17,11,6,8,NA "EE",2002,NA,NA,0,9,20,47,45,19,7,NA,NA,NA,0,7,11,16,9,5,8,NA "EE",2003,NA,NA,0,7,28,38,35,24,18,NA,NA,NA,0,7,4,11,12,2,15,NA "EE",2004,NA,NA,0,6,24,42,54,14,11,NA,NA,NA,0,4,12,10,13,6,7,NA "EE",2005,0,0,0,9,25,19,40,12,7,0,0,0,0,6,11,8,11,6,8,0 "EE",2006,0,0,0,4,19,24,40,12,7,0,0,0,0,3,9,10,9,4,6,0 "EE",2007,0,0,0,6,26,32,37,21,12,0,0,0,0,2,5,5,8,7,6,0 "EE",2008,0,0,0,3,14,26,34,12,13,0,0,0,0,2,7,6,8,4,15,0 "EG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "EG",1995,NA,NA,223,542,665,460,408,463,160,NA,NA,NA,134,288,367,274,256,160,75,NA "EG",1996,NA,NA,58,714,1056,703,485,308,154,NA,NA,NA,64,52,420,259,229,89,44,NA "EG",1997,NA,NA,50,737,1033,767,465,291,142,NA,NA,NA,64,525,388,264,200,114,34,NA "EG",1998,NA,NA,45,761,943,761,475,286,174,NA,NA,NA,60,489,405,291,204,139,44,NA "EG",1999,NA,NA,31,708,889,691,458,288,170,NA,NA,NA,57,485,347,248,193,112,36,NA "EG",2000,NA,NA,21,641,827,667,476,307,158,NA,NA,NA,55,457,343,257,211,112,48,NA "EG",2001,NA,NA,34,586,879,614,453,268,159,NA,NA,NA,57,438,396,265,207,109,49,NA "EG",2002,NA,NA,39,662,774,682,576,303,171,NA,NA,NA,77,424,365,245,254,145,60,NA "EG",2003,NA,NA,42,586,814,675,631,404,195,NA,NA,NA,57,463,338,268,282,175,71,NA "EG",2004,NA,NA,14,563,763,588,502,502,204,NA,NA,NA,44,491,317,233,233,111,54,NA "EG",2005,NA,NA,25,524,606,421,414,243,123,NA,NA,NA,48,431,298,205,218,132,42,NA "EG",2006,19,35,54,542,728,563,587,340,136,NA,8,55,64,470,367,338,279,155,87,NA "EG",2007,NA,NA,35,588,853,629,643,359,214,NA,NA,NA,25,500,325,245,225,173,72,NA "EG",2008,0,13,13,581,640,807,791,431,242,8,0,7,7,382,412,308,195,169,113,3 "ER",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ER",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ER",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ER",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ER",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ER",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ER",1997,NA,NA,0,2,12,21,12,6,4,NA,NA,NA,0,3,10,20,10,4,5,NA "ER",1998,NA,NA,4,36,30,19,15,8,10,NA,NA,NA,3,43,29,11,9,6,5,NA "ER",1999,NA,NA,3,55,75,49,51,30,17,NA,NA,NA,3,65,94,34,30,17,7,NA "ER",2000,NA,NA,9,70,75,57,32,25,20,NA,NA,NA,10,100,87,71,21,12,8,NA "ER",2001,NA,NA,5,79,95,77,40,42,21,NA,NA,NA,9,96,76,66,50,31,15,NA "ER",2002,NA,NA,16,85,88,53,41,24,23,NA,NA,NA,15,75,85,52,39,30,20,NA "ER",2003,NA,NA,17,90,85,55,46,44,36,NA,NA,NA,27,120,149,100,60,36,22,NA "ER",2004,NA,NA,14,67,61,45,45,39,29,NA,NA,NA,13,95,118,67,43,23,20,NA "ER",2005,NA,NA,9,68,73,50,45,51,39,NA,NA,NA,8,67,127,72,39,21,18,NA "ER",2006,NA,NA,6,50,55,44,52,42,36,NA,NA,NA,17,109,123,64,45,19,18,NA "ER",2007,4,17,21,56,85,73,62,53,44,NA,0,2,2,70,89,56,47,21,15,NA "ER",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1995,NA,NA,22,132,337,242,150,112,228,NA,NA,NA,23,90,129,64,39,34,98,NA "ES",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",1998,NA,NA,25,186,361,294,195,114,205,NA,NA,NA,3,149,167,61,27,25,104,NA "ES",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ES",2001,NA,NA,13,160,355,351,215,134,232,NA,NA,NA,15,140,237,116,37,21,83,NA "ES",2002,NA,NA,22,189,392,405,300,192,337,NA,NA,NA,17,194,265,131,56,29,117,NA "ES",2003,NA,NA,7,153,334,305,219,132,222,NA,NA,NA,6,138,218,113,51,29,87,NA "ES",2004,NA,NA,14,140,301,312,229,142,227,NA,NA,NA,9,158,202,125,48,22,82,NA "ES",2005,6,7,13,166,394,367,230,140,230,2,6,4,10,142,252,151,63,24,108,2 "ES",2006,12,6,18,142,332,311,232,105,175,2,8,9,17,122,264,137,48,19,77,1 "ES",2007,4,6,10,184,375,379,257,128,191,2,8,4,12,164,291,136,63,23,93,2 "ES",2008,9,9,18,179,355,349,268,157,200,0,3,10,13,168,294,173,68,16,73,1 "ET",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ET",1995,NA,NA,247,1221,1017,541,276,142,51,NA,NA,NA,283,908,781,382,152,64,15,NA "ET",1996,NA,NA,302,1739,1609,854,427,201,71,NA,NA,NA,369,1564,1147,576,246,88,32,NA "ET",1997,NA,NA,579,2810,2520,1365,736,401,193,NA,NA,NA,687,2469,2173,1039,481,192,108,NA "ET",1998,NA,NA,715,2643,3187,1610,839,429,171,NA,NA,NA,832,3016,2434,1220,519,194,55,NA "ET",1999,NA,NA,692,3916,3673,1925,1045,471,230,NA,NA,NA,798,3310,2949,1539,713,225,69,NA "ET",2000,NA,NA,915,5095,5187,3082,1495,610,397,NA,NA,NA,1037,4699,4424,2105,976,366,122,NA "ET",2001,NA,NA,913,5730,5594,3233,1581,742,354,NA,NA,NA,1107,5109,4830,2372,1014,338,111,NA "ET",2002,NA,NA,1251,6764,5669,3128,1544,821,372,NA,NA,NA,1614,5607,5692,2685,935,323,136,NA "ET",2003,NA,NA,1110,6923,6648,3737,2022,976,483,NA,NA,NA,1387,5936,5908,2780,1239,412,137,NA "ET",2004,NA,NA,1160,7167,7002,4060,1988,911,456,NA,NA,NA,1367,6422,6091,2984,1284,414,124,NA "ET",2005,NA,NA,1109,6726,6181,3454,1985,1027,475,NA,NA,NA,1326,5885,5663,2730,1296,513,155,NA "ET",2006,NA,NA,978,6137,5950,3567,2016,1066,521,NA,NA,NA,1178,5238,5326,2704,1324,510,159,NA "ET",2007,NA,NA,1055,6522,6114,3545,2038,1051,559,NA,NA,NA,1229,5426,5507,2850,1429,502,213,NA "ET",2008,NA,NA,978,6512,6794,4067,2290,1176,685,NA,NA,NA,1167,5490,5893,3251,1553,616,322,NA "FI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FI",1995,NA,NA,1,1,10,25,28,24,61,NA,NA,NA,1,1,6,7,4,10,65,NA "FI",1996,NA,NA,0,2,5,24,26,23,77,NA,NA,NA,0,4,5,3,7,6,58,NA "FI",1997,NA,NA,0,1,5,22,24,26,53,NA,NA,NA,0,2,6,2,5,5,35,NA "FI",1998,NA,NA,0,4,4,9,15,21,63,NA,NA,NA,0,3,4,9,4,12,40,NA "FI",1999,NA,NA,0,NA,4,13,26,20,53,NA,NA,NA,0,2,6,NA,11,5,39,NA "FI",2000,NA,NA,0,3,8,22,19,28,53,NA,NA,NA,0,1,5,3,4,6,49,NA "FI",2001,NA,NA,0,1,9,13,17,13,43,NA,NA,NA,0,3,4,5,8,10,22,NA "FI",2002,NA,NA,0,0,5,8,17,20,36,NA,NA,NA,0,4,3,0,3,6,26,NA "FI",2003,NA,NA,0,2,3,8,19,17,29,NA,NA,NA,0,2,10,3,6,5,31,NA "FI",2004,NA,NA,0,1,5,7,17,13,33,NA,NA,NA,0,1,0,3,4,3,15,NA "FI",2005,0,1,1,5,4,3,14,11,25,0,0,0,0,3,4,1,0,6,20,0 "FI",2006,0,0,0,5,6,5,9,6,20,0,0,0,0,2,4,3,4,1,19,0 "FI",2007,0,0,0,4,5,5,10,7,24,0,0,0,0,6,4,2,5,0,13,0 "FI",2008,0,0,0,3,5,8,13,11,35,0,0,0,0,4,3,2,4,2,14,0 "FJ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FJ",1994,NA,NA,2,8,6,2,3,11,3,NA,NA,NA,0,4,6,3,6,7,1,NA "FJ",1995,NA,NA,0,8,10,9,4,2,3,NA,NA,NA,1,10,9,2,3,4,3,NA "FJ",1996,NA,NA,1,8,8,9,9,3,2,NA,NA,NA,3,6,8,2,6,2,2,NA "FJ",1997,NA,NA,1,4,8,6,8,6,2,NA,NA,NA,0,6,9,1,5,7,3,NA "FJ",1998,NA,NA,0,7,11,7,8,4,2,NA,NA,NA,2,10,10,4,4,3,2,NA "FJ",1999,NA,NA,1,13,7,5,8,3,3,NA,NA,NA,0,5,7,5,2,5,1,NA "FJ",2000,NA,NA,0,8,6,13,5,4,2,NA,NA,NA,0,7,5,7,1,4,0,NA "FJ",2001,NA,NA,0,6,8,11,7,4,2,NA,NA,NA,0,7,5,7,1,2,2,NA "FJ",2002,NA,NA,1,13,11,7,4,7,2,NA,NA,NA,2,8,4,6,3,4,2,NA "FJ",2003,NA,NA,2,8,9,6,11,7,6,NA,NA,NA,1,4,7,4,4,8,1,NA "FJ",2004,NA,NA,0,8,6,8,6,7,2,NA,NA,NA,0,8,6,3,5,2,1,NA "FJ",2005,NA,NA,7,9,18,18,14,16,6,NA,NA,NA,7,7,9,6,4,6,5,NA "FJ",2006,0,0,0,8,11,4,7,5,4,NA,0,1,1,12,5,6,4,6,0,NA "FJ",2007,NA,NA,1,7,7,7,4,1,4,NA,NA,NA,7,11,4,6,5,1,2,NA "FJ",2008,NA,NA,NA,10,10,4,9,4,4,0,NA,NA,NA,13,6,5,6,3,4,0 "FM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",1995,NA,NA,0,1,0,3,1,0,0,NA,NA,NA,0,0,1,0,0,0,1,NA "FM",1996,NA,NA,0,1,0,0,1,2,0,NA,NA,NA,0,1,1,1,3,0,0,NA "FM",1997,NA,NA,0,0,0,0,2,0,0,NA,NA,NA,1,1,1,2,2,0,2,NA "FM",1998,NA,NA,4,5,3,4,1,0,5,NA,NA,NA,2,1,0,1,2,0,0,NA "FM",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",2000,NA,NA,0,2,0,1,0,0,1,NA,NA,NA,4,3,1,1,0,1,1,NA "FM",2001,NA,NA,0,2,0,0,2,1,0,NA,NA,NA,1,0,1,0,0,1,0,NA "FM",2002,NA,NA,2,0,1,1,1,1,0,NA,NA,NA,3,5,1,1,2,0,2,NA "FM",2003,NA,NA,0,3,2,2,0,2,1,NA,NA,NA,4,4,4,1,1,2,1,NA "FM",2004,NA,NA,0,4,0,2,0,2,1,NA,NA,NA,3,4,4,1,1,3,1,NA "FM",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FM",2006,7,7,14,21,3,6,8,6,1,NA,0,5,5,23,5,7,4,6,4,NA "FM",2007,NA,NA,1,8,5,4,0,1,0,NA,NA,NA,5,11,6,2,2,2,0,NA "FM",2008,1,0,1,9,3,1,3,1,0,0,1,0,1,10,2,5,1,0,0,0 "FR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1995,NA,NA,30,156,431,502,414,297,496,NA,NA,NA,36,138,226,176,90,92,365,NA "FR",1996,NA,NA,36,124,335,413,351,248,475,NA,NA,NA,22,124,195,131,79,82,376,NA "FR",1997,NA,NA,24,113,288,362,271,194,343,NA,NA,NA,17,117,166,115,80,57,274,NA "FR",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "FR",1999,NA,NA,13,147,267,310,276,157,318,NA,NA,NA,25,110,145,120,80,60,284,NA "FR",2000,NA,NA,10,136,248,247,211,125,244,NA,NA,NA,18,108,127,89,46,43,155,NA "FR",2001,NA,NA,10,124,230,260,205,119,211,NA,NA,NA,17,131,132,102,63,40,183,NA "FR",2002,NA,NA,24,138,265,223,219,119,180,NA,NA,NA,13,106,127,90,56,33,161,NA "FR",2003,NA,NA,18,129,249,223,190,127,210,NA,NA,NA,16,114,129,79,44,32,159,NA "FR",2004,NA,NA,13,109,222,220,200,138,216,NA,NA,NA,11,96,116,82,53,34,171,NA "FR",2005,7,5,12,127,212,222,196,134,205,0,5,11,16,104,134,82,56,38,180,0 "FR",2006,8,9,17,137,214,238,209,153,278,0,4,11,15,112,158,91,67,44,170,0 "FR",2007,8,9,17,120,225,196,219,156,273,0,6,14,20,127,167,91,56,61,188,0 "FR",2008,5,5,10,73,136,161,134,110,175,1,1,7,8,57,96,71,50,38,101,0 "GA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1995,NA,NA,3,45,74,80,54,30,15,NA,NA,NA,9,47,54,28,25,19,3,NA "GA",1996,NA,NA,0,28,44,40,22,11,2,NA,NA,NA,5,33,26,19,11,4,4,NA "GA",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",1998,NA,NA,14,93,159,129,76,43,32,NA,NA,NA,15,97,85,67,32,30,14,NA "GA",1999,NA,NA,14,98,158,129,76,43,32,NA,NA,NA,15,97,110,67,32,30,14,NA "GA",2001,NA,NA,21,137,205,147,73,60,46,NA,NA,NA,27,127,139,73,34,21,21,NA "GA",2002,NA,NA,10,137,173,148,63,27,40,NA,NA,NA,18,125,140,71,32,21,28,NA "GA",2003,NA,NA,14,165,225,149,103,48,22,NA,NA,NA,16,138,144,107,51,33,18,NA "GA",2004,NA,NA,17,197,289,143,83,47,50,NA,NA,NA,15,173,141,80,37,24,27,NA "GA",2005,NA,NA,13,123,199,140,70,38,25,NA,NA,NA,19,128,123,88,29,29,18,NA "GA",2006,NA,NA,20,157,207,148,89,40,23,NA,NA,NA,19,160,123,79,39,20,21,NA "GA",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GA",2008,1,13,14,209,297,196,104,45,39,NA,1,28,29,209,158,93,59,32,17,NA "GB",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GB",1997,NA,NA,2,68,87,90,84,60,107,NA,NA,NA,8,67,64,43,34,24,51,NA "GB",1998,NA,NA,11,103,164,141,108,105,225,NA,NA,NA,9,105,103,71,44,39,114,NA "GB",1999,NA,NA,8,68,93,68,53,51,126,NA,NA,NA,6,55,80,60,29,30,69,NA "GB",2000,NA,NA,8,86,130,96,87,75,138,NA,NA,NA,9,95,114,60,31,31,67,NA "GB",2001,NA,NA,10,99,135,105,96,81,117,NA,NA,NA,15,74,104,57,54,38,105,NA "GB",2002,NA,NA,6,94,142,132,98,90,153,NA,NA,NA,6,82,131,66,44,33,93,NA "GB",2003,NA,NA,13,101,182,128,81,59,92,NA,NA,NA,14,108,148,88,47,17,55,NA "GB",2004,NA,NA,10,118,203,148,103,85,94,NA,NA,NA,13,126,176,85,47,33,65,NA "GB",2005,4,5,9,135,200,166,95,95,124,0,0,14,14,115,163,80,39,28,83,1 "GB",2006,3,6,9,173,244,213,148,88,191,0,2,20,22,168,192,112,60,42,97,0 "GB",2007,2,11,13,183,286,223,169,97,202,1,1,19,20,145,222,91,58,45,138,2 "GB",2008,1,4,5,125,188,155,111,61,99,0,4,12,16,134,181,90,27,28,62,0 "GD",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1997,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,0,1,0,0,0,0,0,NA "GD",1998,NA,NA,0,1,0,1,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",1999,NA,NA,0,0,1,0,0,1,0,NA,NA,NA,0,0,0,0,0,0,1,NA "GD",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",2003,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA "GD",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA "GD",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GD",2006,0,0,0,0,1,0,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "GD",2007,NA,NA,NA,NA,NA,NA,NA,1,1,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA "GD",2008,NA,NA,NA,1,NA,1,2,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GE",1995,NA,NA,2,20,30,25,40,18,12,NA,NA,NA,2,8,17,17,18,7,5,NA "GE",1996,NA,NA,4,27,82,93,76,38,16,NA,NA,NA,1,13,28,36,23,27,11,NA "GE",1997,NA,NA,0,75,97,91,67,58,16,NA,NA,NA,0,38,46,40,36,19,12,NA "GE",1998,NA,NA,4,64,91,99,58,52,19,NA,NA,NA,4,41,52,25,14,17,7,NA "GE",1999,NA,NA,5,135,176,151,77,55,23,NA,NA,NA,3,27,40,26,10,10,8,NA "GE",2000,NA,NA,4,76,111,113,63,45,28,NA,NA,NA,1,49,37,33,17,10,5,NA "GE",2001,NA,NA,4,142,233,199,117,46,46,NA,NA,NA,2,63,63,37,22,18,22,NA "GE",2002,NA,NA,1,155,197,181,119,54,42,NA,NA,NA,5,54,68,39,31,20,18,NA "GE",2003,NA,NA,1,112,220,185,111,65,53,NA,NA,NA,1,65,59,56,19,23,17,NA "GE",2004,NA,NA,3,157,292,226,177,80,66,NA,NA,NA,3,87,81,52,32,26,29,NA "GE",2005,0,0,0,226,272,268,207,76,60,NA,0,4,4,109,105,58,46,17,47,NA "GE",2006,0,3,3,315,392,300,241,86,72,0,0,5,5,115,110,71,60,26,34,1 "GE",2007,6,1,7,277,388,308,230,96,75,1,2,4,6,153,140,67,54,17,46,0 "GE",2008,39,122,161,710,974,906,739,427,347,0,25,83,108,396,374,252,171,109,160,0 "GH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GH",1995,NA,NA,42,223,397,398,302,190,112,NA,NA,NA,40,199,272,205,122,88,48,NA "GH",1996,NA,NA,30,216,345,368,255,165,157,NA,NA,NA,32,177,260,200,110,64,43,NA "GH",1997,NA,NA,77,406,941,781,623,367,294,NA,NA,NA,90,363,651,418,276,188,121,NA "GH",1998,NA,NA,83,553,1009,913,775,509,487,NA,NA,NA,85,483,758,493,366,248,243,NA "GH",1999,NA,NA,64,586,1132,1008,767,389,389,NA,NA,NA,80,491,753,492,302,192,180,NA "GH",2000,NA,NA,73,550,1266,1115,811,495,426,NA,NA,NA,74,456,791,566,338,179,176,NA "GH",2001,NA,NA,84,587,1223,1144,857,471,460,NA,NA,NA,128,515,814,623,370,209,227,NA "GH",2002,NA,NA,80,535,1245,1282,883,507,429,NA,NA,NA,98,489,806,592,325,223,238,NA "GH",2003,NA,NA,79,579,1265,1234,924,509,441,NA,NA,NA,83,487,744,586,380,200,203,NA "GH",2004,NA,NA,54,532,1246,1250,854,472,413,NA,NA,NA,69,454,701,518,303,202,191,NA "GH",2005,NA,NA,49,592,1201,1311,944,462,414,NA,NA,NA,68,450,693,527,366,207,221,NA "GH",2006,NA,NA,33,557,1273,1388,956,529,443,NA,NA,NA,70,494,711,515,381,207,229,NA "GH",2007,NA,NA,66,596,1164,1239,861,477,506,NA,NA,NA,75,453,667,564,371,183,207,NA "GH",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GM",1995,NA,NA,3,68,181,88,72,29,24,NA,NA,NA,4,39,61,44,25,12,8,NA "GM",1996,NA,NA,29,42,148,100,66,46,48,NA,NA,NA,20,50,64,46,46,30,22,NA "GM",1997,NA,NA,2,83,219,126,61,63,37,NA,NA,NA,5,55,76,45,20,20,8,NA "GM",1998,NA,NA,6,99,193,158,79,61,35,NA,NA,NA,7,60,95,53,25,18,14,NA "GM",1999,NA,NA,6,99,180,124,86,65,39,NA,NA,NA,10,58,82,54,30,16,13,NA "GM",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GM",2002,NA,NA,2,135,240,160,100,60,37,NA,NA,NA,5,71,112,42,40,21,10,NA "GM",2003,NA,NA,3,162,236,149,83,52,31,NA,NA,NA,8,81,85,62,39,27,17,NA "GM",2004,NA,NA,5,145,260,151,103,46,23,NA,NA,NA,7,55,81,59,38,21,18,NA "GM",2005,NA,NA,13,133,292,206,62,53,44,NA,NA,NA,2,84,87,64,38,22,27,NA "GM",2006,13,0,13,126,284,170,112,58,56,NA,5,0,5,88,126,71,49,25,26,NA "GM",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GM",2008,1,6,7,151,307,167,125,87,34,0,1,8,9,94,133,90,43,45,8,0 "GN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GN",1995,NA,NA,18,244,538,357,189,98,61,NA,NA,NA,28,202,255,153,64,37,19,NA "GN",1996,NA,NA,29,319,631,416,214,133,104,NA,NA,NA,30,223,338,213,111,52,31,NA "GN",1997,NA,NA,25,326,653,483,220,147,100,NA,NA,NA,38,246,383,189,91,48,32,NA "GN",1998,NA,NA,22,409,763,494,271,168,117,NA,NA,NA,37,303,365,202,115,71,25,NA "GN",1999,NA,NA,30,434,736,519,294,173,104,NA,NA,NA,44,345,395,259,110,78,41,NA "GN",2000,NA,NA,39,551,860,570,282,203,103,NA,NA,NA,66,314,446,245,114,82,45,NA "GN",2001,NA,NA,24,506,876,612,325,185,154,NA,NA,NA,59,419,433,249,127,77,46,NA "GN",2002,NA,NA,24,413,958,634,336,139,149,NA,NA,NA,42,399,439,259,109,77,50,NA "GN",2003,NA,NA,34,617,1052,671,368,172,134,NA,NA,NA,53,353,451,307,137,106,40,NA "GN",2004,NA,NA,38,728,1091,726,389,199,135,NA,NA,NA,62,470,521,334,159,100,63,NA "GN",2005,NA,NA,51,749,1165,778,463,195,130,NA,NA,NA,65,594,583,354,203,94,55,NA "GN",2006,NA,NA,31,834,1168,916,512,274,162,NA,NA,NA,85,586,581,396,187,118,53,NA "GN",2007,NA,NA,46,901,1315,936,503,240,204,NA,NA,NA,76,631,613,367,207,106,79,NA "GN",2008,NA,NA,56,970,1419,985,561,264,198,NA,NA,NA,64,610,686,377,190,93,88,NA "GQ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1995,NA,NA,8,15,45,37,15,11,7,NA,NA,NA,2,18,28,20,4,7,1,NA "GQ",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",1997,NA,NA,5,32,40,36,25,8,4,NA,NA,NA,3,23,20,14,10,3,3,NA "GQ",1998,NA,NA,6,30,46,39,29,16,11,NA,NA,NA,3,37,31,20,7,5,4,NA "GQ",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",2004,NA,NA,5,50,63,54,41,17,15,NA,NA,NA,9,45,48,30,15,10,4,NA "GQ",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GQ",2008,NA,NA,8,68,95,85,44,17,11,0,NA,NA,10,57,66,35,23,13,9,0 "GR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GR",1997,NA,NA,0,16,30,34,42,39,47,NA,NA,NA,0,14,19,8,3,9,26,NA "GR",1998,NA,NA,15,15,31,31,22,31,47,NA,NA,NA,11,20,12,13,8,5,26,NA "GR",1999,NA,NA,3,11,11,17,18,18,27,NA,NA,NA,1,5,8,8,2,3,10,NA "GR",2000,NA,NA,1,10,22,32,24,19,46,NA,NA,NA,0,2,9,10,5,6,25,NA "GR",2001,NA,NA,0,10,23,29,20,17,37,NA,NA,NA,0,7,11,7,4,7,27,NA "GR",2002,NA,NA,0,1,13,27,33,30,10,NA,NA,NA,0,0,3,17,11,5,2,NA "GR",2003,NA,NA,2,20,28,25,23,25,36,NA,NA,NA,0,7,9,7,2,5,18,NA "GR",2004,NA,NA,1,9,14,22,18,13,34,NA,NA,NA,0,3,7,10,3,3,14,NA "GR",2005,0,1,1,14,25,22,14,12,23,5,0,0,0,13,18,8,7,2,17,0 "GR",2006,0,0,0,11,32,22,24,22,27,3,0,0,0,13,12,8,5,6,24,1 "GR",2007,0,1,1,21,22,34,28,15,54,1,0,0,0,13,19,11,8,3,24,2 "GR",2008,0,0,0,5,14,12,4,6,9,0,0,0,0,5,9,2,4,3,7,0 "GT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",1995,NA,NA,51,235,280,236,165,142,139,NA,NA,NA,51,224,255,221,146,129,94,NA "GT",1996,NA,NA,75,230,230,218,152,132,142,NA,NA,NA,48,214,250,212,172,134,99,NA "GT",1997,NA,NA,45,246,217,229,161,155,150,NA,NA,NA,33,228,225,183,120,109,117,NA "GT",1998,NA,NA,60,206,248,234,163,148,152,NA,NA,NA,45,203,216,199,160,118,103,NA "GT",1999,NA,NA,34,216,248,235,171,141,158,NA,NA,NA,24,229,230,194,174,121,89,NA "GT",2000,NA,NA,36,220,236,216,177,112,140,NA,NA,NA,41,199,167,175,135,87,111,NA "GT",2001,NA,NA,27,171,201,169,137,98,97,NA,NA,NA,33,180,173,118,101,74,90,NA "GT",2002,NA,NA,27,217,219,171,158,117,146,NA,NA,NA,42,192,171,147,116,68,74,NA "GT",2003,NA,NA,29,175,200,169,156,125,128,NA,NA,NA,24,186,179,157,104,88,75,NA "GT",2004,NA,NA,43,282,291,209,210,144,129,NA,NA,NA,31,278,201,227,144,72,78,NA "GT",2005,NA,NA,39,251,258,185,187,127,115,NA,NA,NA,38,339,245,277,176,88,95,NA "GT",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GT",2007,18,115,74,169,207,226,203,159,155,NA,28,55,183,163,246,145,153,143,122,NA "GT",2008,0,19,19,220,257,193,163,124,167,0,0,22,22,199,189,162,154,100,101,0 "GU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GU",2000,NA,NA,2,1,6,6,9,6,9,NA,NA,NA,0,3,1,2,5,2,2,NA "GU",2001,NA,NA,0,1,4,10,9,3,6,NA,NA,NA,0,2,3,3,4,2,1,NA "GU",2002,NA,NA,3,3,5,5,6,12,4,NA,NA,NA,5,1,6,3,3,2,7,NA "GU",2003,NA,NA,0,2,1,3,4,7,5,NA,NA,NA,1,3,1,4,2,1,5,NA "GU",2004,NA,NA,0,0,1,2,6,2,3,NA,NA,NA,0,0,1,2,3,1,1,NA "GU",2005,NA,NA,0,2,4,4,2,2,4,NA,NA,NA,0,3,1,1,2,0,2,NA "GU",2006,NA,NA,0,1,1,2,3,2,6,NA,NA,NA,0,0,0,1,1,2,2,NA "GU",2007,0,0,0,0,0,2,0,0,0,NA,0,0,0,0,0,0,1,1,1,NA "GU",2008,0,0,0,0,1,7,8,3,4,0,0,0,0,1,2,0,1,1,3,0 "GW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1996,NA,NA,9,110,159,113,99,60,36,NA,NA,NA,7,49,80,94,62,31,13,NA "GW",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",2000,NA,NA,2,52,92,80,64,39,19,NA,NA,NA,4,30,46,47,24,15,12,NA "GW",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",2002,NA,NA,7,101,146,128,70,52,34,NA,NA,NA,9,80,108,66,49,37,12,NA "GW",2003,NA,NA,9,101,153,118,108,63,27,NA,NA,NA,7,97,82,78,58,38,24,NA "GW",2004,NA,NA,16,86,175,147,130,84,51,NA,NA,NA,11,87,115,103,98,54,29,NA "GW",2005,NA,NA,14,116,167,153,130,72,42,NA,NA,NA,13,78,110,92,82,44,19,NA "GW",2006,NA,NA,8,86,178,143,90,74,24,NA,NA,NA,7,82,116,90,81,36,15,NA "GW",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GW",2008,NA,NA,8,119,194,191,109,79,30,NA,NA,NA,12,85,129,123,92,41,11,NA "GY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",1995,NA,NA,7,8,5,6,9,6,7,NA,NA,NA,3,5,7,6,5,2,4,NA "GY",1996,NA,NA,4,8,14,4,5,4,7,NA,NA,NA,4,8,4,4,5,0,0,NA "GY",1997,NA,NA,1,15,19,12,2,5,8,NA,NA,NA,3,9,8,8,4,7,4,NA "GY",1998,NA,NA,9,29,56,42,36,2,12,NA,NA,NA,13,32,38,26,4,8,11,NA "GY",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "GY",2000,NA,NA,4,20,19,14,7,6,9,NA,NA,NA,1,11,8,7,5,5,3,NA "GY",2001,NA,NA,1,15,47,44,12,2,1,NA,NA,NA,0,6,16,16,9,3,2,NA "GY",2002,NA,NA,20,49,90,94,51,19,23,NA,NA,NA,26,32,36,34,19,15,18,NA "GY",2003,NA,NA,10,56,111,114,58,27,13,NA,NA,NA,12,35,61,56,27,10,5,NA "GY",2004,NA,NA,9,45,113,97,87,NA,4,NA,NA,NA,15,35,38,29,23,NA,15,NA "GY",2005,NA,NA,12,48,130,116,81,41,20,NA,NA,NA,14,41,62,41,30,11,9,NA "GY",2006,NA,NA,6,37,61,59,40,15,5,NA,NA,NA,1,15,21,20,14,3,1,NA "GY",2007,NA,NA,2,15,43,44,41,12,8,NA,NA,NA,1,20,19,17,5,3,3,NA "GY",2008,2,5,7,29,51,71,47,22,11,0,0,4,4,20,23,13,12,3,7,0 "HK",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1997,NA,NA,5,90,122,174,198,271,593,NA,NA,NA,12,85,114,83,49,64,176,NA "HK",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HK",1999,NA,NA,3,88,121,162,173,233,432,NA,NA,NA,8,85,109,72,50,43,188,NA "HK",2000,NA,NA,4,78,102,160,211,236,578,NA,NA,NA,5,65,115,86,44,45,211,NA "HK",2001,NA,NA,6,79,99,162,196,201,519,NA,NA,NA,13,88,119,83,58,34,200,NA "HK",2002,NA,NA,2,99,105,163,207,218,543,NA,NA,NA,8,97,115,90,57,35,153,NA "HK",2003,NA,NA,8,104,91,140,195,180,472,NA,NA,NA,10,88,136,102,65,43,160,NA "HK",2004,NA,NA,3,59,94,128,226,175,477,NA,NA,NA,6,97,112,87,56,34,140,NA "HK",2005,0,3,3,76,84,108,200,168,453,NA,0,3,3,67,81,92,57,34,135,NA "HK",2006,0,3,3,75,84,135,174,161,439,NA,1,8,9,59,97,73,54,42,132,NA "HK",2007,1,4,5,63,80,110,177,175,425,NA,0,1,1,59,94,74,64,37,137,NA "HK",2008,0,0,0,59,79,95,166,208,414,0,0,8,8,65,84,65,45,40,131,0 "HN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HN",1995,NA,NA,42,280,540,204,130,236,58,NA,NA,NA,54,208,292,134,76,136,48,NA "HN",1996,NA,NA,51,247,389,142,108,190,21,NA,NA,NA,43,167,245,106,69,149,17,NA "HN",1997,NA,NA,26,214,321,111,78,140,28,NA,NA,NA,38,166,174,80,61,116,26,NA "HN",1998,NA,NA,147,277,256,211,205,181,50,NA,NA,NA,103,206,192,158,152,135,38,NA "HN",1999,NA,NA,150,288,268,219,220,190,52,NA,NA,NA,100,214,201,164,160,140,40,NA "HN",2000,NA,NA,30,123,371,246,277,214,43,NA,NA,NA,25,21,269,258,270,160,38,NA "HN",2001,NA,NA,12,47,509,344,337,257,27,NA,NA,NA,13,25,347,352,339,196,34,NA "HN",2002,NA,NA,76,29,519,353,338,257,24,NA,NA,NA,65,23,351,339,354,193,35,NA "HN",2003,NA,NA,52,20,344,235,227,161,17,NA,NA,NA,42,15,232,225,236,127,23,NA "HN",2004,NA,NA,54,20,379,259,247,189,18,NA,NA,NA,40,13,218,211,220,121,23,NA "HN",2005,NA,NA,13,238,280,215,152,134,152,NA,NA,NA,27,219,222,125,107,81,104,NA "HN",2006,5,16,21,213,297,213,139,96,147,NA,4,24,28,206,234,123,85,87,129,NA "HN",2007,5,16,21,204,293,194,158,123,180,NA,0,29,29,185,175,110,106,84,112,NA "HN",2008,1,10,11,254,263,202,140,103,174,0,0,26,26,152,170,114,90,82,116,0 "HR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1995,NA,NA,6,38,97,210,132,178,141,NA,NA,NA,10,50,57,57,38,60,130,NA "HR",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",1997,NA,NA,12,65,88,180,124,118,117,NA,NA,NA,13,43,43,54,28,52,136,NA "HR",1998,NA,NA,14,48,81,177,176,106,129,NA,NA,NA,19,44,64,54,38,48,131,NA "HR",1999,NA,NA,1,29,45,83,93,46,45,NA,NA,NA,2,14,18,15,15,16,53,NA "HR",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",2001,NA,NA,0,32,64,186,126,88,64,NA,NA,NA,2,32,36,54,34,28,92,NA "HR",2002,NA,NA,1,18,40,75,77,32,43,NA,NA,NA,0,18,18,20,19,16,54,NA "HR",2003,NA,NA,0,15,27,68,80,42,60,NA,NA,NA,1,14,19,18,10,15,69,NA "HR",2004,NA,NA,1,18,32,68,81,39,53,NA,NA,NA,3,18,17,11,12,7,56,NA "HR",2005,0,1,1,24,27,48,72,47,34,0,0,1,1,12,18,15,11,6,56,0 "HR",2006,0,0,0,20,23,58,69,30,48,0,1,1,2,16,26,16,22,7,59,0 "HR",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HR",2008,0,0,0,15,25,34,63,32,47,0,0,1,1,11,16,13,15,12,44,0 "HT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HT",1996,NA,NA,148,358,438,289,160,87,97,NA,NA,NA,224,417,492,303,176,62,100,NA "HT",1997,NA,NA,156,683,817,453,260,150,162,NA,NA,NA,149,760,878,515,250,119,97,NA "HT",1998,NA,NA,188,804,971,656,331,177,142,NA,NA,NA,208,827,958,620,300,141,119,NA "HT",1999,NA,NA,286,812,1059,672,348,186,145,NA,NA,NA,285,919,918,614,312,162,110,NA "HT",2000,NA,NA,67,836,898,613,350,147,118,NA,NA,NA,96,914,857,513,275,132,71,NA "HT",2001,NA,NA,72,752,785,587,319,169,112,NA,NA,NA,113,882,843,498,273,109,93,NA "HT",2002,NA,NA,79,903,904,572,377,184,148,NA,NA,NA,118,980,851,550,303,120,99,NA "HT",2003,NA,NA,89,1002,981,625,406,208,147,NA,NA,NA,122,1114,1064,606,378,165,108,NA "HT",2004,NA,NA,94,918,964,606,376,207,176,NA,NA,NA,137,1146,1045,688,386,176,125,NA "HT",2005,NA,NA,69,1045,1035,701,451,222,156,NA,NA,NA,116,1097,1099,633,414,170,132,NA "HT",2006,NA,NA,93,1110,1132,672,455,201,174,NA,NA,NA,137,1113,1039,638,387,184,126,NA "HT",2007,26,78,104,1166,1199,760,471,219,192,NA,27,120,147,1261,1107,632,344,182,131,NA "HT",2008,8,82,90,1137,1337,696,491,242,175,0,19,135,154,1272,1204,677,378,179,139,0 "HU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "HU",1996,NA,NA,3,28,139,151,209,140,105,NA,NA,NA,2,30,42,51,63,27,76,NA "HU",1997,NA,NA,0,8,51,163,164,90,69,NA,NA,NA,1,9,25,35,24,19,44,NA "HU",1998,NA,NA,0,14,64,149,163,62,59,NA,NA,NA,0,13,27,34,25,17,40,NA "HU",1999,NA,NA,2,16,48,155,183,74,47,NA,NA,NA,4,17,19,37,19,7,32,NA "HU",2000,NA,NA,0,8,24,85,104,58,27,NA,NA,NA,1,7,17,19,22,10,30,NA "HU",2001,NA,NA,1,11,42,97,133,73,42,NA,NA,NA,0,10,17,31,27,13,37,NA "HU",2002,NA,NA,1,10,41,102,145,61,39,NA,NA,NA,1,9,27,36,26,14,38,NA "HU",2003,NA,NA,0,6,30,89,140,70,38,NA,NA,NA,0,16,26,27,30,11,33,NA "HU",2004,NA,NA,2,7,38,99,145,64,63,NA,NA,NA,2,6,23,25,29,14,40,NA "HU",2005,0,0,0,6,24,67,117,67,39,0,0,1,1,5,13,11,22,15,33,0 "HU",2006,0,2,2,10,31,71,98,54,33,0,0,3,3,17,16,19,28,11,29,0 "HU",2007,0,0,0,7,31,48,103,50,35,0,1,2,3,12,22,18,17,6,29,0 "HU",2008,0,0,0,12,23,47,86,72,24,0,0,0,0,11,13,15,12,5,25,1 "ID",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",1995,NA,NA,6,203,297,306,302,228,109,NA,NA,NA,16,160,244,282,192,90,33,NA "ID",1996,NA,NA,28,781,1349,1443,1305,1037,510,NA,NA,NA,54,860,1175,1091,915,586,247,NA "ID",1997,NA,NA,46,1320,2139,2221,2122,1461,753,NA,NA,NA,65,1305,1671,1751,1365,788,357,NA "ID",1998,NA,NA,78,2732,3873,4054,3486,2654,1517,NA,NA,NA,108,2674,3412,3130,2335,1610,617,NA "ID",1999,NA,NA,106,3741,5277,4999,4401,3267,1697,NA,NA,NA,140,3595,12859,3624,2812,1909,745,NA "ID",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ID",2001,NA,NA,298,5400,7279,6241,5538,4076,1914,NA,NA,NA,354,5213,6040,4849,3537,2381,845,NA "ID",2002,NA,NA,569,7826,10248,8760,7668,5332,2891,NA,NA,NA,650,7366,8794,6773,4943,3118,1292,NA "ID",2003,NA,NA,532,9570,12647,10925,9558,6720,3615,NA,NA,NA,608,8734,10127,7889,6085,3907,1649,NA "ID",2004,NA,NA,697,12546,17137,14881,14772,9669,5197,NA,NA,NA,803,11509,13597,10953,9586,5422,2212,NA "ID",2005,NA,NA,846,15215,20906,18401,17847,13509,6390,NA,NA,NA,946,13916,16393,13022,10927,7539,2783,NA "ID",2006,NA,NA,899,16285,22752,20332,20059,15869,7348,NA,NA,NA,985,14377,17628,14421,12376,8786,3203,NA "ID",2007,213,636,849,14835,21297,18606,18283,14176,6762,NA,148,772,920,13371,16055,13211,11391,7965,2896,NA "ID",2008,161,710,871,15339,22325,19224,18545,14907,6831,0,120,895,1015,13987,16292,13513,11899,8485,3143,0 "IE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IE",1998,NA,NA,1,11,8,21,8,8,19,NA,NA,NA,0,5,11,1,1,4,13,NA "IE",1999,NA,NA,0,7,15,10,12,7,19,NA,NA,NA,0,9,9,3,8,3,13,NA "IE",2000,NA,NA,0,10,7,7,6,4,12,NA,NA,NA,0,13,8,13,6,7,15,NA "IE",2001,NA,NA,0,6,12,14,8,7,7,NA,NA,NA,0,4,6,3,1,1,5,NA "IE",2002,NA,NA,0,7,18,13,14,12,6,NA,NA,NA,0,4,3,5,2,0,4,NA "IE",2003,NA,NA,0,10,11,13,14,7,11,NA,NA,NA,0,4,7,6,4,1,10,NA "IE",2004,NA,NA,1,4,17,10,12,7,10,NA,NA,NA,0,10,9,2,2,3,6,NA "IE",2005,0,1,1,6,10,21,10,7,6,0,0,0,0,9,10,3,3,0,8,0 "IE",2006,0,0,0,8,18,17,11,16,13,1,0,0,0,11,20,8,4,3,3,0 "IE",2007,0,0,0,26,49,32,28,26,26,0,0,0,0,14,28,22,14,2,4,0 "IE",2008,1,1,2,9,18,6,21,10,13,0,0,0,0,12,16,8,3,3,2,0 "IL",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IL",1996,NA,NA,1,5,18,21,15,11,33,NA,NA,NA,2,8,4,2,4,5,18,NA "IL",1997,NA,NA,5,9,27,20,17,19,43,NA,NA,NA,2,16,10,18,7,3,27,NA "IL",1998,NA,NA,1,20,29,35,19,16,30,NA,NA,NA,1,9,10,7,9,9,26,NA "IL",1999,NA,NA,2,13,22,22,16,10,27,NA,NA,NA,3,4,15,7,2,5,22,NA "IL",2000,NA,NA,0,16,28,17,24,10,31,NA,NA,NA,2,11,15,7,3,7,25,NA "IL",2001,NA,NA,1,7,26,17,17,10,42,NA,NA,NA,2,6,14,8,2,2,18,NA "IL",2002,NA,NA,2,7,18,13,12,9,23,NA,NA,NA,3,19,12,15,7,8,16,NA "IL",2003,NA,NA,2,9,12,22,10,6,25,NA,NA,NA,1,13,13,13,5,1,18,NA "IL",2004,NA,NA,2,2,7,13,10,3,16,NA,NA,NA,1,4,12,8,2,0,11,NA "IL",2005,0,0,0,5,10,12,12,5,14,0,1,0,1,3,9,8,6,1,9,0 "IL",2006,0,0,0,3,12,14,4,6,10,0,0,0,0,1,5,4,4,2,7,0 "IL",2007,0,1,1,9,20,23,13,10,17,0,0,1,1,4,17,5,3,6,14,0 "IL",2008,0,0,0,14,25,18,14,15,25,0,1,1,2,4,11,14,8,4,19,0 "IN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IN",1995,NA,NA,16,334,391,287,216,123,68,NA,NA,NA,32,179,169,80,49,30,11,NA "IN",1996,NA,NA,47,966,1143,934,666,424,213,NA,NA,NA,79,618,571,281,167,103,42,NA "IN",1997,NA,NA,50,1257,1351,1056,753,499,245,NA,NA,NA,125,861,799,369,187,102,54,NA "IN",1998,NA,NA,84,1773,2013,1851,1389,885,419,NA,NA,NA,190,1375,1121,670,349,200,102,NA "IN",1999,NA,NA,327,7058,8856,7900,6172,3864,1982,NA,NA,NA,785,5497,4848,2773,1504,898,436,NA "IN",2000,NA,NA,1588,20963,31090,30829,24230,15308,8534,NA,NA,NA,2250,14495,17287,11768,7516,4594,2697,NA "IN",2001,NA,NA,1063,22483,30007,29649,23961,14879,7779,NA,NA,NA,2125,15973,16743,10103,5633,3353,1526,NA "IN",2002,NA,NA,2551,39923,54719,55829,44532,28199,14960,NA,NA,NA,4200,28573,31946,21378,13233,7636,3814,NA "IN",2003,NA,NA,2411,47251,61758,63587,52865,33739,18018,NA,NA,NA,4745,34511,36317,23320,14055,8322,3985,NA "IN",2004,NA,NA,3018,57208,72132,74450,62173,40769,22388,NA,NA,NA,5860,41017,42808,27000,16121,9705,5016,NA "IN",2005,NA,NA,3185,62620,74678,76870,64843,43038,24726,NA,NA,NA,6292,45136,45629,28577,17042,10513,5408,NA "IN",2006,NA,NA,3566,68346,79037,82939,71621,49320,28716,NA,NA,NA,6963,47702,47420,31128,18870,11752,6417,NA "IN",2007,NA,NA,4305,73947,83850,88045,76408,53414,31922,NA,NA,NA,7575,50289,49519,32407,20316,13195,7395,NA "IN",2008,NA,NA,4648,77121,83798,90498,78815,56928,36079,NA,NA,NA,8319,51485,49887,33664,21486,14407,8357,NA "IQ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1995,NA,NA,1125,862,1409,1085,863,900,271,NA,NA,NA,725,304,1208,915,800,886,200,NA "IQ",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IQ",1997,NA,NA,416,791,708,541,832,664,208,NA,NA,NA,384,738,665,499,722,641,192,NA "IQ",1998,NA,NA,453,879,781,583,913,735,242,NA,NA,NA,426,806,740,542,806,712,232,NA "IQ",1999,NA,NA,519,1434,1246,1081,704,632,376,NA,NA,NA,509,1208,978,824,571,527,202,NA "IQ",2000,NA,NA,21,627,317,297,205,135,101,NA,NA,NA,37,338,241,136,134,103,87,NA "IQ",2001,NA,NA,10,722,737,275,260,200,142,NA,NA,NA,26,362,295,147,171,126,86,NA "IQ",2002,NA,NA,47,706,923,308,284,205,158,NA,NA,NA,45,338,288,172,176,129,116,NA "IQ",2003,NA,NA,30,659,876,355,293,168,143,NA,NA,NA,43,258,241,154,160,143,34,NA "IQ",2004,NA,NA,28,615,770,288,244,183,125,NA,NA,NA,57,334,243,139,162,113,80,NA "IQ",2005,NA,NA,13,424,644,261,245,189,148,NA,NA,NA,44,305,260,151,197,135,80,NA "IQ",2006,0,14,14,409,593,278,230,147,107,NA,0,38,38,338,264,133,154,111,70,NA "IQ",2007,0,20,20,319,531,276,223,188,126,NA,0,34,34,289,228,154,134,130,74,NA "IQ",2008,2,16,18,348,525,317,273,224,147,0,1,53,54,377,281,125,175,161,125,0 "IR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IR",1995,NA,NA,118,751,754,636,494,737,921,NA,NA,NA,234,1039,890,664,613,685,788,NA "IR",1996,NA,NA,63,390,449,431,274,450,577,NA,NA,NA,113,599,412,347,323,452,534,NA "IR",1997,NA,NA,54,391,470,420,304,395,608,NA,NA,NA,92,518,393,361,342,341,582,NA "IR",1998,NA,NA,35,426,492,400,245,363,579,NA,NA,NA,87,561,403,307,290,431,522,NA "IR",1999,NA,NA,27,370,460,383,260,335,591,NA,NA,NA,51,551,360,277,279,396,637,NA "IR",2000,NA,NA,29,438,467,387,295,344,642,NA,NA,NA,77,593,410,322,320,407,647,NA "IR",2001,NA,NA,37,469,529,371,309,299,649,NA,NA,NA,104,621,401,278,327,442,693,NA "IR",2002,NA,NA,29,457,502,375,322,302,668,NA,NA,NA,77,558,332,275,298,439,732,NA "IR",2003,NA,NA,32,413,528,396,282,294,673,NA,NA,NA,76,442,282,254,300,440,776,NA "IR",2004,NA,NA,16,360,542,357,305,298,640,NA,NA,NA,65,419,301,213,293,378,710,NA "IR",2005,NA,NA,16,352,531,338,281,260,630,NA,NA,NA,45,394,205,186,260,382,701,NA "IR",2006,4,8,12,357,495,365,318,249,686,NA,3,45,48,430,236,185,292,336,793,NA "IR",2007,3,7,10,311,511,330,285,261,680,NA,2,40,42,394,236,173,268,387,813,NA "IR",2008,0,11,11,292,466,330,322,267,706,0,2,40,42,386,254,137,263,367,879,0 "IS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IS",1995,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,0,0,0,0,0,0,1,NA "IS",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,1,0,0,0,0,0,NA "IS",1997,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,0,1,0,0,0,1,2,NA "IS",1998,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,1,NA "IS",1999,NA,NA,0,NA,NA,1,NA,NA,NA,NA,NA,NA,0,NA,1,NA,NA,NA,NA,NA "IS",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,NA,1,NA,NA,NA,NA,NA "IS",2001,NA,NA,0,1,NA,NA,NA,NA,1,NA,NA,NA,0,NA,NA,1,NA,NA,NA,NA "IS",2002,NA,NA,0,1,0,0,0,0,0,NA,NA,NA,0,0,1,0,0,0,0,NA "IS",2003,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,0,0,0,0,0,0,0,NA "IS",2004,NA,NA,0,0,0,0,1,1,0,NA,NA,NA,0,0,0,0,0,0,0,NA "IS",2005,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0 "IS",2006,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,1,0 "IS",2007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0 "IS",2008,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 "IT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "IT",1995,NA,NA,9,59,202,157,94,124,289,NA,NA,NA,7,52,93,57,40,51,168,NA "IT",1996,NA,NA,12,72,196,168,125,155,319,NA,NA,NA,2,53,116,60,33,56,172,NA "IT",1997,NA,NA,14,93,228,244,168,187,381,NA,NA,NA,5,74,129,90,48,68,201,NA "IT",1998,NA,NA,15,128,327,248,189,226,429,NA,NA,NA,10,105,150,110,58,75,283,NA "IT",1999,NA,NA,7,78,155,137,114,104,247,NA,NA,NA,8,49,63,63,35,32,141,NA "IT",2000,NA,NA,12,63,96,75,58,54,112,NA,NA,NA,6,38,58,33,13,19,39,NA "IT",2001,NA,NA,4,43,130,98,63,50,99,NA,NA,NA,4,37,77,46,24,14,54,NA "IT",2002,NA,NA,6,51,139,127,74,68,134,NA,NA,NA,6,51,94,55,18,28,85,NA "IT",2003,NA,NA,19,79,219,168,80,61,146,NA,NA,NA,6,63,121,77,24,13,91,NA "IT",2004,NA,NA,34,52,130,115,64,43,123,NA,NA,NA,16,48,73,39,21,19,56,NA "IT",2005,7,1,8,93,191,137,101,61,115,24,0,3,3,80,145,56,25,19,70,9 "IT",2006,6,1,7,113,201,197,105,75,152,19,3,6,9,88,165,82,48,16,88,10 "IT",2007,1,2,3,75,170,113,87,48,106,11,0,7,7,74,94,58,31,19,76,6 "IT",2008,1,12,13,78,148,137,72,42,104,5,3,7,10,65,106,56,24,21,56,1 "JM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JM",1995,NA,NA,2,9,14,9,11,8,9,NA,NA,NA,2,7,6,5,5,2,2,NA "JM",1996,NA,NA,1,9,10,12,12,8,3,NA,NA,NA,1,5,3,5,2,3,1,NA "JM",1997,NA,NA,1,2,9,16,12,8,1,NA,NA,NA,0,5,6,4,3,1,3,NA "JM",1998,NA,NA,0,3,19,9,10,7,7,NA,NA,NA,1,8,3,8,1,4,2,NA "JM",1999,NA,NA,2,10,16,6,6,15,6,NA,NA,NA,2,5,9,3,4,5,3,NA "JM",2000,NA,NA,0,6,13,13,15,6,5,NA,NA,NA,1,8,8,7,2,5,1,NA "JM",2001,NA,NA,3,10,9,21,5,1,1,NA,NA,NA,2,2,7,6,3,2,3,NA "JM",2002,NA,NA,0,9,11,8,7,7,4,NA,NA,NA,1,3,3,3,1,3,0,NA "JM",2003,NA,NA,1,11,9,14,12,4,6,NA,NA,NA,2,7,8,2,3,0,2,NA "JM",2004,NA,NA,0,9,7,4,13,8,10,NA,NA,NA,0,4,6,4,1,2,1,NA "JM",2005,NA,NA,0,4,6,6,10,6,7,NA,NA,NA,0,1,5,4,0,1,3,NA "JM",2006,0,0,0,9,10,9,6,6,9,NA,0,0,0,2,5,3,1,0,1,NA "JM",2007,0,0,NA,12,10,7,17,7,3,NA,0,2,2,5,2,6,2,2,3,NA "JM",2008,2,1,3,2,10,10,11,11,5,2,0,1,1,8,3,3,1,1,6,1 "JO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JO",1995,NA,NA,0,19,37,17,20,26,11,NA,NA,NA,1,15,4,10,14,12,7,NA "JO",1996,NA,NA,2,22,30,17,13,21,9,NA,NA,NA,1,8,11,8,16,8,4,NA "JO",1997,NA,NA,5,14,18,11,10,19,22,NA,NA,NA,3,8,6,4,4,5,7,NA "JO",1998,NA,NA,0,22,26,7,12,10,6,NA,NA,NA,0,7,6,3,3,7,1,NA "JO",1999,NA,NA,0,16,19,16,10,8,2,NA,NA,NA,0,8,7,2,2,7,5,NA "JO",2000,NA,NA,0,8,16,13,9,14,2,NA,NA,NA,0,8,9,1,2,2,5,NA "JO",2001,NA,NA,2,7,22,10,10,8,7,NA,NA,NA,0,8,6,1,0,9,4,NA "JO",2002,NA,NA,0,8,9,11,12,11,5,NA,NA,NA,0,9,4,3,2,12,5,NA "JO",2003,NA,NA,0,19,20,17,8,13,0,NA,NA,NA,1,6,7,2,3,12,0,NA "JO",2004,NA,NA,0,8,12,14,6,17,0,NA,NA,NA,0,10,4,3,5,12,0,NA "JO",2005,NA,NA,0,8,17,9,4,6,5,NA,NA,NA,1,6,6,6,5,8,5,NA "JO",2006,0,0,0,9,23,16,7,4,10,NA,0,0,0,8,11,3,5,2,6,NA "JO",2007,0,0,0,7,20,14,9,7,5,NA,0,0,0,9,12,6,1,12,7,NA "JO",2008,0,0,0,13,10,3,5,13,5,0,0,0,0,20,15,6,4,7,3,0 "JP",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "JP",1995,NA,NA,15,342,627,995,1847,2059,4089,NA,NA,NA,14,258,476,298,476,637,2234,NA "JP",1996,NA,NA,16,309,621,843,1756,1878,3639,NA,NA,NA,7,224,409,262,364,565,1974,NA "JP",1997,NA,NA,8,304,625,798,1793,1908,4055,NA,NA,NA,11,248,455,237,405,547,2177,NA "JP",1998,NA,NA,2,306,597,724,1571,1660,3545,NA,NA,NA,6,243,418,233,329,417,1884,NA "JP",1999,NA,NA,6,290,623,706,1605,1768,4117,NA,NA,NA,7,236,459,253,292,419,2128,NA "JP",2000,NA,NA,2,246,572,676,1494,1509,3816,NA,NA,NA,5,222,464,213,292,384,1958,NA "JP",2001,NA,NA,3,220,576,632,1319,1513,3840,NA,NA,NA,5,175,437,228,250,330,1880,NA "JP",2002,NA,NA,2,191,549,579,1192,1334,3747,NA,NA,NA,3,192,395,259,248,308,1808,NA "JP",2003,NA,NA,1,210,521,550,1063,1388,3731,NA,NA,NA,2,203,395,246,254,313,1966,NA "JP",2004,NA,NA,2,193,462,599,934,1363,3759,NA,NA,NA,6,182,364,230,222,294,1861,NA "JP",2005,NA,NA,9,197,488,605,868,1418,3867,NA,NA,NA,5,187,428,249,224,309,2077,NA "JP",2006,NA,3,3,175,436,529,743,1388,3728,NA,3,2,5,179,361,280,213,256,1863,NA "JP",2007,1,0,1,142,372,512,668,1174,3678,NA,0,3,3,134,318,231,156,212,1832,NA "JP",2008,0,2,2,117,339,456,599,1063,3482,0,0,1,1,115,293,230,173,253,1872,0 "KE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KE",1995,NA,NA,154,2072,3073,1675,920,485,296,NA,NA,NA,187,1802,1759,741,411,242,117,NA "KE",1996,NA,NA,151,2492,3820,2097,993,498,311,NA,NA,NA,252,2290,2327,926,462,245,114,NA "KE",1997,NA,NA,53,2881,4374,2333,1100,482,284,NA,NA,NA,242,2573,2604,1086,499,242,103,NA "KE",1998,NA,NA,210,3372,5477,2983,1378,626,382,NA,NA,NA,318,3315,3469,1378,656,324,141,NA "KE",1999,NA,NA,237,3835,6078,3349,1545,645,405,NA,NA,NA,373,3850,3997,1596,760,348,179,NA "KE",2000,NA,NA,264,3739,6653,3548,1630,630,414,NA,NA,NA,416,3916,4363,1874,831,347,148,NA "KE",2001,NA,NA,299,4083,7070,3903,1771,723,443,NA,NA,NA,464,4116,4822,2063,935,394,221,NA "KE",2002,NA,NA,299,4445,7708,4306,2023,807,433,NA,NA,NA,392,4542,5465,2267,996,445,190,NA "KE",2003,NA,NA,341,4918,8515,4560,2167,928,567,NA,NA,NA,487,5003,6023,2618,1171,551,309,NA "KE",2004,NA,NA,391,5388,9016,5142,2404,973,576,NA,NA,NA,519,5458,6326,2850,1236,558,312,NA "KE",2005,NA,NA,359,4790,8832,5069,2521,1031,590,NA,NA,NA,577,5144,6521,2781,1266,593,315,NA "KE",2006,NA,NA,387,4708,8229,4975,2467,1037,645,NA,NA,NA,583,4953,6052,2792,1343,604,379,NA "KE",2007,23,451,474,4752,8132,4959,2361,1084,601,NA,24,575,599,4594,5979,2774,1180,542,329,NA "KE",2008,40,411,451,4709,8128,4924,2302,1025,583,0,40,546,586,4355,5475,2431,1065,481,296,0 "KG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KG",1995,NA,NA,3,109,171,165,65,38,30,NA,NA,NA,1,70,94,34,18,15,19,NA "KG",1996,NA,NA,4,148,210,156,86,38,40,NA,NA,NA,8,90,93,55,18,26,31,NA "KG",1997,NA,NA,1,212,381,349,143,90,38,NA,NA,NA,4,115,133,64,22,29,37,NA "KG",1998,NA,NA,4,105,176,141,75,43,21,NA,NA,NA,3,68,89,54,20,22,9,NA "KG",1999,NA,NA,5,216,388,244,142,73,49,NA,NA,NA,8,137,199,75,40,31,35,NA "KG",2000,NA,NA,4,128,227,205,115,52,46,NA,NA,NA,6,128,146,100,41,30,29,NA "KG",2001,NA,NA,0,176,287,217,159,54,44,NA,NA,NA,0,133,183,105,45,30,48,NA "KG",2002,NA,NA,0,202,268,233,137,61,45,NA,NA,NA,0,153,179,116,44,39,67,NA "KG",2003,NA,NA,0,189,298,241,145,63,70,NA,NA,NA,0,178,227,109,61,29,42,NA "KG",2004,NA,NA,3,221,277,265,164,58,69,NA,NA,NA,11,196,228,104,59,34,72,NA "KG",2005,0,1,1,247,303,269,194,66,84,0,0,15,15,215,236,141,70,33,98,0 "KG",2006,NA,3,3,245,298,245,179,75,75,NA,NA,13,13,228,203,107,75,32,65,NA "KG",2007,NA,3,3,243,274,186,186,62,63,NA,NA,11,11,216,213,114,67,47,61,NA "KG",2008,NA,1,1,261,275,190,155,70,53,NA,NA,13,13,209,217,104,61,41,62,NA "KH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1995,NA,NA,161,453,1244,1147,1253,1257,707,NA,NA,NA,123,388,1133,1435,1426,1180,578,NA "KH",1996,NA,NA,148,32,1272,1363,1348,1226,726,NA,NA,NA,124,27,1087,1430,1534,1201,547,NA "KH",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KH",1998,NA,NA,36,446,1330,1477,1521,1293,924,NA,NA,NA,23,367,1184,1531,1667,1359,691,NA "KH",1999,NA,NA,41,525,1389,1734,1645,1578,1089,NA,NA,NA,51,445,1229,1861,1857,1448,852,NA "KH",2000,NA,NA,26,519,1323,1618,1456,1373,1058,NA,NA,NA,38,457,1157,1649,1798,1459,892,NA "KH",2001,NA,NA,29,600,1302,1601,1406,1403,1037,NA,NA,NA,25,455,1033,1526,1687,1428,829,NA "KH",2002,NA,NA,54,791,1449,1956,1799,1624,1432,NA,NA,NA,54,600,1114,1737,1898,1650,1100,NA "KH",2003,NA,NA,37,805,1514,2183,1848,1729,1487,NA,NA,NA,46,691,1287,1975,2208,1857,1256,NA "KH",2004,NA,NA,36,850,1466,2261,1942,1759,1538,NA,NA,NA,28,658,1276,1882,2176,1836,1270,NA "KH",2005,NA,NA,49,894,1600,2349,2043,1964,1811,NA,NA,NA,45,790,1413,2089,2323,2058,1573,NA "KH",2006,NA,NA,50,791,1486,2205,1902,1689,1665,NA,NA,NA,44,749,1330,1839,2072,1915,1557,NA "KH",2007,NA,NA,50,883,1526,2190,2102,1761,1644,NA,NA,NA,64,749,1351,1698,2105,1839,1459,NA "KH",2008,NA,NA,49,920,1570,2040,2117,1746,1683,NA,NA,NA,72,808,1403,1809,2093,1943,1607,NA "KI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KI",1996,NA,NA,0,4,1,2,2,2,2,NA,NA,NA,2,3,3,4,2,1,1,NA "KI",1997,NA,NA,1,2,0,0,5,1,1,NA,NA,NA,2,0,0,2,0,2,1,NA "KI",1998,NA,NA,1,6,10,2,3,2,1,NA,NA,NA,2,7,5,3,5,1,1,NA "KI",1999,NA,NA,2,6,4,2,4,4,3,NA,NA,NA,1,9,9,6,2,3,4,NA "KI",2000,NA,NA,2,9,3,3,3,8,2,NA,NA,NA,2,5,6,3,4,1,3,NA "KI",2001,NA,NA,4,10,7,3,3,5,3,NA,NA,NA,4,7,7,3,3,4,1,NA "KI",2002,NA,NA,5,11,1,7,7,7,NA,NA,NA,NA,5,15,8,8,3,4,1,NA "KI",2003,NA,NA,5,13,5,9,6,6,0,NA,NA,NA,5,20,4,12,7,3,4,NA "KI",2004,NA,NA,8,17,10,12,10,9,3,NA,NA,NA,7,31,9,12,7,6,1,NA "KI",2005,NA,NA,3,15,15,12,17,4,1,NA,NA,NA,5,22,12,7,7,3,1,NA "KI",2006,NA,NA,3,18,18,16,18,3,7,NA,NA,NA,5,15,5,5,1,8,3,NA "KI",2007,0,2,2,15,7,10,6,10,3,NA,0,8,8,13,6,8,9,4,2,NA "KI",2008,0,2,2,30,9,15,10,2,5,0,0,4,4,33,9,12,9,3,4,0 "KM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1995,NA,NA,0,18,13,9,7,8,4,NA,NA,NA,1,13,9,8,6,5,2,NA "KM",1996,NA,NA,1,19,16,12,4,8,8,NA,NA,NA,1,7,12,6,4,10,3,NA "KM",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",1998,NA,NA,0,15,10,13,11,6,0,NA,NA,NA,0,7,9,5,8,4,4,NA "KM",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",2000,NA,NA,0,18,7,14,9,3,4,NA,NA,NA,1,9,6,12,1,2,1,NA "KM",2001,NA,NA,0,15,11,10,11,3,5,NA,NA,NA,2,10,11,8,4,2,0,NA "KM",2002,NA,NA,0,10,9,8,4,3,3,NA,NA,NA,0,11,6,7,6,2,3,NA "KM",2003,NA,NA,1,7,12,5,1,3,3,NA,NA,NA,0,5,7,1,1,1,1,NA "KM",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",2005,NA,NA,0,12,9,6,4,2,4,NA,NA,NA,2,10,7,4,8,3,8,NA "KM",2006,1,0,0,12,9,7,4,4,1,NA,1,0,0,5,5,9,6,4,1,NA "KM",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KM",2008,0,2,2,11,11,4,9,5,5,0,0,2,2,6,11,1,6,2,2,0 "KN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1996,NA,NA,0,0,1,1,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1998,NA,NA,0,0,0,2,1,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,1,NA "KN",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA "KN",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",2006,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KN",2007,NA,NA,NA,1,1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA "KN",2008,0,0,0,0,0,0,3,0,0,0,0,0,0,0,1,0,1,0,0,0 "KP",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KP",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KP",1997,NA,NA,5,375,430,640,620,430,240,NA,NA,NA,2,205,295,210,205,175,148,NA "KP",1998,NA,NA,0,21,36,34,36,31,25,NA,NA,NA,0,11,24,24,25,20,15,NA "KP",1999,NA,NA,14,294,438,401,294,151,30,NA,NA,NA,10,162,235,327,237,68,12,NA "KP",2000,NA,NA,293,928,1508,2927,2519,1167,651,NA,NA,NA,167,683,1121,2004,1524,591,357,NA "KP",2001,NA,NA,207,1081,1593,2276,2208,1149,606,NA,NA,NA,123,690,1132,1354,1120,553,336,NA "KP",2002,NA,NA,199,1444,2282,2584,2618,1235,745,NA,NA,NA,140,1049,1720,1642,1505,892,521,NA "KP",2003,NA,NA,86,1154,2279,2678,2469,1412,634,NA,NA,NA,93,823,1623,1607,1395,769,370,NA "KP",2004,NA,NA,175,1284,2559,2991,2858,1464,460,NA,NA,NA,118,887,1577,1640,1473,724,269,NA "KP",2005,NA,NA,167,1409,2422,2688,2040,1185,485,NA,NA,NA,166,1127,1756,1890,1381,764,336,NA "KP",2006,NA,NA,157,1498,2393,3219,2301,1479,591,NA,NA,NA,87,725,1373,2051,1373,791,397,NA "KP",2007,NA,NA,353,1947,2748,3717,2831,2093,674,NA,NA,NA,406,1233,1682,2672,1723,1056,440,NA "KP",2008,11,430,441,2341,3320,4263,3988,2704,948,0,7,472,479,1259,1792,2428,2282,1177,604,0 "KR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KR",1995,NA,NA,27,1131,1613,1425,1207,1307,1225,NA,NA,NA,46,908,863,431,296,408,867,NA "KR",1996,NA,NA,31,1150,1587,1457,1118,1216,1116,NA,NA,NA,32,950,827,460,297,340,839,NA "KR",1997,NA,NA,24,935,1276,1221,982,1069,1099,NA,NA,NA,31,790,685,445,234,359,807,NA "KR",1998,NA,NA,19,977,1334,1329,999,1074,1119,NA,NA,NA,37,765,708,455,238,393,912,NA "KR",1999,NA,NA,27,884,1205,1180,871,962,1136,NA,NA,NA,40,704,653,402,256,306,933,NA "KR",2000,NA,NA,19,821,1085,988,853,731,901,NA,NA,NA,25,546,544,393,220,295,795,NA "KR",2001,NA,NA,23,942,1415,1419,1293,1103,1361,NA,NA,NA,45,839,890,489,326,390,1270,NA "KR",2002,NA,NA,20,806,1333,1374,1265,1029,1390,NA,NA,NA,19,759,854,456,334,377,1329,NA "KR",2003,NA,NA,22,732,1208,1265,1207,992,1472,NA,NA,NA,32,681,793,501,365,381,1325,NA "KR",2004,NA,NA,18,709,1276,1364,1248,1017,1595,NA,NA,NA,26,659,847,496,340,360,1516,NA "KR",2005,NA,NA,22,687,1171,1326,1336,1005,1669,NA,NA,NA,27,590,842,491,370,373,1729,NA "KR",2006,0,19,19,652,1109,1223,1406,955,1698,NA,3,24,27,579,859,507,403,371,1705,NA "KR",2007,3,48,16,589,953,1144,1308,906,1684,NA,1,64,34,570,807,466,387,347,1716,NA "KR",2008,3,18,21,492,865,1093,1400,958,1848,0,1,31,32,483,722,483,402,360,1889,0 "KW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KW",1995,NA,NA,0,15,51,32,17,9,0,NA,NA,NA,0,8,24,9,4,4,2,NA "KW",1996,NA,NA,0,11,45,16,30,4,1,NA,NA,NA,1,12,17,8,3,3,2,NA "KW",1997,NA,NA,1,23,38,37,22,6,7,NA,NA,NA,1,17,26,11,7,1,4,NA "KW",1998,NA,NA,0,14,42,42,20,11,5,NA,NA,NA,0,13,14,9,5,5,5,NA "KW",1999,NA,NA,0,18,49,26,11,10,4,NA,NA,NA,2,9,23,5,6,4,2,NA "KW",2000,NA,NA,0,10,44,32,21,11,5,NA,NA,NA,1,11,24,12,5,3,1,NA "KW",2001,NA,NA,0,13,37,29,19,1,6,NA,NA,NA,1,13,30,14,4,5,2,NA "KW",2002,NA,NA,0,14,47,32,26,9,3,NA,NA,NA,0,15,37,11,7,3,2,NA "KW",2003,NA,NA,1,14,39,33,26,11,5,NA,NA,NA,1,16,31,18,2,3,1,NA "KW",2004,NA,NA,0,20,63,38,22,9,7,NA,NA,NA,0,14,44,12,7,5,7,NA "KW",2005,NA,NA,0,12,45,29,26,8,3,NA,NA,NA,0,13,31,11,3,1,5,NA "KW",2006,NA,NA,1,19,72,40,37,14,3,NA,NA,NA,0,17,41,23,5,6,6,NA "KW",2007,0,1,1,16,69,25,29,8,5,NA,0,0,0,26,53,18,13,7,4,NA "KW",2008,0,0,0,18,90,56,34,11,9,0,0,2,2,33,47,27,7,5,6,0 "KY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",1998,NA,NA,0,0,0,0,0,0,1,NA,NA,NA,0,0,1,0,0,0,0,NA "KY",1999,NA,NA,0,0,0,1,0,0,0,NA,NA,NA,0,1,0,0,0,0,0,NA "KY",2000,NA,NA,0,0,3,1,0,1,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",2001,NA,NA,0,0,1,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",2003,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "KY",2004,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,1,0,0,0,NA "KY",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KY",2006,0,0,0,0,0,0,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "KY",2007,0,0,0,0,0,0,0,1,0,NA,0,0,0,0,0,0,0,0,0,NA "KY",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",1997,NA,NA,22,68,827,725,475,485,211,NA,NA,NA,47,78,673,423,141,142,115,NA "KZ",1998,NA,NA,34,795,1009,817,628,515,78,NA,NA,NA,62,625,713,457,204,174,69,NA "KZ",1999,NA,NA,34,778,1217,1026,560,368,165,NA,NA,NA,60,822,872,452,226,171,136,NA "KZ",2000,NA,NA,36,1057,1409,1379,923,439,218,NA,NA,NA,84,999,1079,599,275,202,204,NA "KZ",2001,NA,NA,38,1038,1477,1485,1011,429,211,NA,NA,NA,88,1040,1062,570,263,194,173,NA "KZ",2002,NA,NA,33,1067,1565,1490,1042,435,212,NA,NA,NA,68,1035,1086,669,348,194,208,NA "KZ",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "KZ",2004,NA,NA,24,989,1291,1183,899,336,196,NA,NA,NA,62,844,912,517,307,178,189,NA "KZ",2005,0,31,31,917,1142,983,795,274,175,0,1,45,46,751,767,436,286,121,187,0 "KZ",2006,NA,NA,11,888,981,848,744,287,169,NA,NA,NA,30,741,636,370,234,116,150,NA "KZ",2007,3,11,14,881,976,859,714,279,150,0,0,38,38,782,605,367,249,124,157,0 "KZ",2008,0,14,14,897,968,811,752,306,160,0,1,43,44,710,659,320,230,137,185,0 "LA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LA",1995,NA,NA,6,56,71,68,78,90,55,NA,NA,NA,3,49,49,69,54,52,26,NA "LA",1996,NA,NA,1,42,80,97,131,127,84,NA,NA,NA,4,31,62,80,64,59,24,NA "LA",1997,NA,NA,2,61,91,151,158,156,124,NA,NA,NA,2,60,83,102,102,88,54,NA "LA",1998,NA,NA,4,77,152,150,177,211,152,NA,NA,NA,6,59,121,122,108,90,65,NA "LA",1999,NA,NA,5,91,175,183,213,193,191,NA,NA,NA,9,60,115,142,141,98,90,NA "LA",2000,NA,NA,7,92,128,166,201,177,176,NA,NA,NA,10,59,95,131,122,91,71,NA "LA",2001,NA,NA,10,81,137,176,219,186,164,NA,NA,NA,6,51,99,121,138,104,71,NA "LA",2002,NA,NA,4,86,159,220,223,227,185,NA,NA,NA,2,72,141,151,152,117,90,NA "LA",2003,NA,NA,6,91,180,239,226,207,196,NA,NA,NA,7,77,107,162,156,114,98,NA "LA",2004,NA,NA,14,120,181,231,318,259,268,NA,NA,NA,12,72,137,157,172,164,121,NA "LA",2005,NA,NA,13,136,223,296,373,300,352,NA,NA,NA,7,101,186,205,244,192,178,NA "LA",2006,NA,NA,12,145,245,340,406,345,354,NA,NA,NA,13,109,196,221,228,222,205,NA "LA",2007,NA,NA,11,150,258,307,418,361,350,NA,NA,NA,7,126,175,215,293,206,207,NA "LA",2008,NA,NA,6,159,262,329,380,409,373,NA,NA,NA,10,101,165,209,264,220,192,NA "LB",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LB",1995,NA,NA,3,26,32,30,16,16,10,NA,NA,NA,1,16,18,13,8,5,3,NA "LB",1996,NA,NA,4,28,41,18,12,9,19,NA,NA,NA,4,24,13,11,5,6,4,NA "LB",1997,NA,NA,1,18,33,22,19,17,17,NA,NA,NA,3,30,20,6,7,8,3,NA "LB",1998,NA,NA,1,27,33,22,19,17,17,NA,NA,NA,3,23,20,6,7,8,3,NA "LB",1999,NA,NA,3,27,44,35,17,17,11,NA,NA,NA,1,33,26,17,6,9,3,NA "LB",2000,NA,NA,5,16,28,20,15,17,14,NA,NA,NA,4,31,26,9,7,4,6,NA "LB",2001,NA,NA,0,22,20,18,16,8,8,NA,NA,NA,3,25,28,7,6,4,5,NA "LB",2002,NA,NA,1,19,25,14,10,7,9,NA,NA,NA,2,17,21,8,9,3,3,NA "LB",2003,NA,NA,0,19,26,22,6,5,7,NA,NA,NA,3,14,12,9,5,2,4,NA "LB",2004,NA,NA,1,11,25,18,18,8,6,NA,NA,NA,0,18,21,10,5,1,4,NA "LB",2005,NA,NA,0,12,19,15,10,12,8,NA,NA,NA,1,25,14,8,3,3,1,NA "LB",2006,0,0,0,11,12,18,14,10,8,NA,0,1,1,16,12,5,2,2,1,NA "LB",2007,0,0,0,12,19,13,12,11,5,NA,0,1,1,17,30,13,5,3,2,NA "LB",2008,0,1,1,9,14,12,17,14,6,0,0,2,2,24,32,15,7,3,2,0 "LC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",1997,NA,NA,0,0,1,2,0,1,1,NA,NA,NA,1,1,3,0,0,0,1,NA "LC",1998,NA,NA,0,2,1,1,0,0,1,NA,NA,NA,0,3,2,0,0,1,1,NA "LC",1999,NA,NA,NA,1,NA,NA,3,3,NA,NA,NA,NA,NA,1,1,NA,NA,NA,NA,NA "LC",2000,NA,NA,0,0,0,1,0,1,2,NA,NA,NA,0,1,0,1,0,1,0,NA "LC",2001,NA,NA,0,1,1,0,1,3,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LC",2002,NA,NA,NA,NA,1,1,1,2,1,NA,NA,NA,NA,NA,NA,NA,1,1,NA,NA "LC",2003,NA,NA,0,0,0,1,2,2,2,NA,NA,NA,0,1,1,0,3,2,1,NA "LC",2004,NA,NA,0,0,0,1,2,2,2,NA,NA,NA,0,2,3,0,0,0,3,NA "LC",2005,NA,NA,0,0,0,0,2,1,2,NA,NA,NA,1,1,0,1,1,0,2,NA "LC",2006,NA,NA,NA,NA,NA,NA,3,5,5,NA,NA,NA,NA,NA,NA,NA,NA,1,1,NA "LC",2007,NA,NA,NA,NA,3,3,2,4,3,NA,NA,1,NA,NA,NA,NA,1,NA,1,NA "LC",2008,0,0,0,2,0,2,2,2,1,0,0,1,1,0,1,3,2,1,2,0 "LK",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LK",1995,NA,NA,10,163,361,519,521,365,261,NA,NA,NA,15,207,206,142,122,81,56,NA "LK",1996,NA,NA,10,163,327,491,523,355,253,NA,NA,NA,18,197,168,147,133,111,62,NA "LK",1997,NA,NA,11,215,390,596,623,396,271,NA,NA,NA,23,245,217,173,176,89,81,NA "LK",1998,NA,NA,7,237,430,628,663,445,304,NA,NA,NA,22,228,235,169,173,119,87,NA "LK",1999,NA,NA,8,255,406,621,646,440,325,NA,NA,NA,10,264,231,168,148,126,101,NA "LK",2000,NA,NA,25,266,459,695,793,484,360,NA,NA,NA,23,312,264,176,202,144,113,NA "LK",2001,NA,NA,6,284,446,713,779,528,336,NA,NA,NA,18,296,247,194,174,156,131,NA "LK",2002,NA,NA,11,287,411,682,788,551,366,NA,NA,NA,19,320,248,205,151,151,107,NA "LK",2003,NA,NA,12,311,467,694,791,495,389,NA,NA,NA,14,305,218,186,187,132,120,NA "LK",2004,NA,NA,6,358,472,664,800,521,371,NA,NA,NA,18,263,237,192,176,122,102,NA "LK",2005,NA,NA,9,341,520,724,918,657,424,NA,NA,NA,19,295,261,189,200,154,130,NA "LK",2006,NA,NA,8,342,496,600,816,563,402,NA,NA,NA,13,301,248,178,189,157,129,NA "LK",2007,NA,NA,10,288,477,664,802,649,412,NA,NA,NA,16,279,228,183,182,176,111,NA "LK",2008,NA,NA,11,283,488,717,810,649,415,NA,NA,NA,26,298,288,183,173,172,133,NA "LR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1996,NA,NA,38,69,105,84,42,33,9,NA,NA,NA,44,72,78,51,24,12,7,NA "LR",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",1998,NA,NA,18,150,229,158,72,34,11,NA,NA,NA,18,164,160,98,45,17,16,NA "LR",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",2000,NA,NA,12,133,196,127,52,17,26,NA,NA,NA,21,140,149,88,28,16,16,NA "LR",2001,NA,NA,16,111,174,132,63,17,11,NA,NA,NA,18,108,143,77,35,17,12,NA "LR",2002,NA,NA,20,252,315,295,143,60,44,NA,NA,NA,26,256,250,150,86,41,26,NA "LR",2003,NA,NA,5,180,215,204,99,49,23,NA,NA,NA,12,148,180,109,43,30,22,NA "LR",2004,NA,NA,32,333,427,285,198,71,51,NA,NA,NA,39,268,397,183,123,41,42,NA "LR",2005,NA,NA,26,240,352,333,155,74,65,NA,NA,NA,37,232,297,171,108,52,25,NA "LR",2006,NA,NA,59,324,442,371,250,125,97,NA,NA,NA,55,292,371,242,125,85,68,NA "LR",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LR",2008,3,104,107,129,412,532,308,169,98,0,1,55,56,115,237,367,298,170,44,0 "LS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",1995,NA,NA,9,108,214,256,189,96,88,NA,NA,NA,14,106,125,71,49,17,19,NA "LS",1996,NA,NA,12,123,272,367,223,149,87,NA,NA,NA,7,164,189,94,44,29,28,NA "LS",1997,NA,NA,11,180,392,463,307,173,69,NA,NA,NA,29,216,272,152,71,40,23,NA "LS",1998,NA,NA,6,190,407,488,372,190,87,NA,NA,NA,10,200,283,125,65,30,23,NA "LS",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",2000,NA,NA,8,165,458,517,395,198,76,NA,NA,NA,11,222,336,195,83,36,29,NA "LS",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LS",2002,NA,NA,10,218,547,535,347,211,80,NA,NA,NA,14,304,447,207,125,41,17,NA "LS",2003,NA,NA,10,219,614,592,466,219,83,NA,NA,NA,32,328,567,313,219,59,33,NA "LS",2004,NA,NA,29,286,728,696,448,206,78,NA,NA,NA,22,459,691,364,161,68,36,NA "LS",2005,NA,NA,32,395,695,397,148,82,37,NA,NA,NA,19,226,721,616,494,297,121,NA "LS",2006,NA,NA,33,228,628,550,440,218,49,NA,NA,NA,50,370,642,430,171,90,125,NA "LS",2007,1,5,6,32,135,73,87,52,28,NA,0,4,4,78,121,106,40,13,13,NA "LS",2008,0,21,21,223,615,542,380,242,138,0,1,23,24,343,700,358,146,76,54,0 "LT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LT",1995,NA,NA,4,46,132,225,176,90,77,NA,NA,NA,5,6,53,45,32,16,42,NA "LT",1996,NA,NA,2,60,133,224,206,133,82,NA,NA,NA,6,37,62,73,40,29,44,NA "LT",1997,NA,NA,2,53,136,227,213,146,98,NA,NA,NA,5,40,77,73,38,25,67,NA "LT",1998,NA,NA,0,38,77,165,163,81,57,NA,NA,NA,0,27,25,65,22,21,46,NA "LT",1999,NA,NA,0,42,90,153,22,91,67,NA,NA,NA,0,32,48,55,25,20,40,NA "LT",2000,NA,NA,1,38,97,145,155,74,68,NA,NA,NA,0,20,37,39,32,22,48,NA "LT",2001,NA,NA,0,35,112,197,155,88,76,NA,NA,NA,1,33,59,57,35,28,59,NA "LT",2002,NA,NA,1,24,95,176,142,88,59,NA,NA,NA,0,30,59,45,32,18,52,NA "LT",2003,NA,NA,1,35,116,175,174,107,60,NA,NA,NA,0,35,49,37,38,20,50,NA "LT",2004,NA,NA,0,39,100,161,173,92,71,NA,NA,NA,1,21,48,47,47,24,32,NA "LT",2005,0,0,0,42,118,186,187,108,67,0,0,1,1,25,41,57,49,23,54,0 "LT",2006,0,0,0,38,120,207,211,107,74,0,0,0,0,25,48,56,52,38,53,0 "LT",2007,0,0,0,31,77,165,235,109,76,0,0,0,0,34,41,48,50,22,37,0 "LT",2008,0,0,0,39,110,162,182,104,71,0,0,1,1,20,51,46,36,18,44,0 "LU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",1996,NA,NA,0,5,3,4,2,3,2,NA,NA,NA,1,3,2,0,1,0,3,NA "LU",1997,NA,NA,1,2,2,7,3,2,3,NA,NA,NA,1,3,0,1,0,1,5,NA "LU",1998,NA,NA,0,3,6,7,4,2,0,NA,NA,NA,1,0,1,2,2,0,2,NA "LU",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LU",2001,NA,NA,0,0,1,0,0,0,2,NA,NA,NA,0,2,2,1,1,1,2,NA "LU",2002,NA,NA,0,0,1,3,3,2,1,NA,NA,NA,0,0,2,1,1,1,2,NA "LU",2003,NA,NA,0,2,10,7,1,2,2,NA,NA,NA,0,2,1,1,0,0,0,NA "LU",2004,NA,NA,0,1,0,4,3,1,1,NA,NA,NA,0,0,5,5,0,0,0,NA "LU",2005,0,0,0,0,2,2,1,1,2,0,0,0,0,0,2,1,1,1,0,0 "LU",2006,0,0,0,0,3,2,3,2,3,0,0,0,0,2,3,2,0,1,1,0 "LU",2007,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 "LU",2008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 "LV",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LV",1995,NA,NA,0,20,44,71,70,40,30,NA,NA,NA,0,22,49,55,47,27,29,NA "LV",1996,NA,NA,0,28,69,130,89,67,42,NA,NA,NA,0,32,39,31,22,10,16,NA "LV",1997,NA,NA,0,47,109,145,106,61,29,NA,NA,NA,1,27,22,37,20,16,14,NA "LV",1998,NA,NA,0,58,105,129,121,68,35,NA,NA,NA,1,24,45,26,23,15,18,NA "LV",1999,NA,NA,1,48,87,110,103,57,30,NA,NA,NA,2,28,24,40,29,11,18,NA "LV",2000,NA,NA,0,53,106,124,111,64,34,NA,NA,NA,2,25,41,27,28,7,15,NA "LV",2001,NA,NA,0,48,109,138,101,64,32,NA,NA,NA,2,24,33,41,31,18,20,NA "LV",2002,NA,NA,0,32,98,123,121,64,26,NA,NA,NA,0,37,42,37,23,11,22,NA "LV",2003,NA,NA,0,36,74,141,106,59,32,NA,NA,NA,0,31,42,42,35,17,26,NA "LV",2004,NA,NA,0,30,74,119,109,53,38,NA,NA,NA,2,29,32,36,29,12,19,NA "LV",2005,0,1,1,22,71,104,117,55,34,0,0,0,0,17,31,31,23,18,12,0 "LV",2006,0,2,2,27,78,82,105,51,26,0,0,0,0,17,27,33,28,9,13,0 "LV",2007,NA,NA,NA,33,65,93,102,49,19,NA,NA,1,1,18,27,32,18,12,9,NA "LV",2008,0,0,0,28,54,71,71,47,27,0,0,0,0,11,23,26,21,9,12,0 "LY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1995,NA,NA,2,112,212,78,46,22,21,NA,NA,NA,5,34,31,19,20,13,11,NA "LY",1996,NA,NA,4,93,142,82,31,28,19,NA,NA,NA,4,30,35,17,10,9,11,NA "LY",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",1999,NA,NA,2,110,257,115,53,36,33,NA,NA,NA,6,43,59,25,15,14,27,NA "LY",2000,NA,NA,5,101,239,86,36,29,32,NA,NA,NA,6,43,35,24,24,16,22,NA "LY",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "LY",2003,NA,NA,0,108,266,142,32,25,19,NA,NA,NA,4,43,28,30,25,21,21,NA "LY",2004,NA,NA,5,113,310,173,53,24,20,NA,NA,NA,1,44,50,20,23,13,23,NA "LY",2005,NA,NA,2,114,293,168,52,19,35,NA,NA,NA,8,36,36,35,21,21,20,NA "LY",2006,0,0,1,98,247,150,49,23,23,NA,0,0,8,55,34,24,10,12,11,NA "LY",2007,NA,NA,2,61,143,78,26,12,10,NA,NA,NA,4,23,17,12,8,7,11,NA "LY",2008,1,1,2,116,298,162,85,24,19,0,0,6,6,56,35,22,20,9,17,0 "MA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MA",1995,NA,NA,142,2508,2872,1737,819,573,553,NA,NA,NA,191,1708,1288,703,461,317,299,NA "MA",1996,NA,NA,118,2618,2844,1721,772,602,583,NA,NA,NA,217,1697,1300,677,437,400,292,NA "MA",1997,NA,NA,119,2328,2891,1659,761,591,557,NA,NA,NA,238,1799,1331,745,416,424,275,NA "MA",1998,NA,NA,116,2308,2573,1744,843,560,527,NA,NA,NA,182,1600,1150,679,412,402,330,NA "MA",1999,NA,NA,78,2296,2696,1641,815,559,562,NA,NA,NA,156,1654,1143,691,446,351,332,NA "MA",2000,NA,NA,99,2061,2423,1705,855,485,595,NA,NA,NA,170,1530,1121,672,398,406,352,NA "MA",2001,NA,NA,85,2200,2256,1731,929,561,606,NA,NA,NA,156,1477,1046,596,402,399,360,NA "MA",2002,NA,NA,79,2190,2341,1647,941,525,577,NA,NA,NA,144,1483,1088,713,443,357,386,NA "MA",2003,NA,NA,91,2225,2347,1667,1004,525,550,NA,NA,NA,168,1455,1029,633,431,366,351,NA "MA",2004,NA,NA,68,2081,2397,1676,1114,533,539,NA,NA,NA,149,1196,981,517,373,331,325,NA "MA",2005,NA,NA,79,2222,2515,1583,1057,580,591,NA,NA,NA,167,1330,943,546,403,343,398,NA "MA",2006,4,69,73,2104,2373,1498,1036,527,551,NA,6,149,155,1273,1025,597,426,335,307,NA "MA",2007,4,70,74,2098,2370,1545,1165,545,529,NA,6,117,123,1177,837,444,354,306,370,NA "MA",2008,5,46,51,1992,2372,1514,1179,633,589,0,4,120,124,1081,803,479,360,290,358,0 "MC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",1999,NA,NA,0,0,0,0,1,0,0,NA,NA,NA,0,0,0,0,0,0,1,NA "MC",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MC",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MD",1995,NA,NA,0,55,115,166,95,65,15,NA,NA,NA,2,42,38,31,19,10,12,NA "MD",1996,NA,NA,0,26,33,55,34,9,5,NA,NA,NA,2,10,14,18,4,3,6,NA "MD",1997,NA,NA,0,51,65,86,47,35,13,NA,NA,NA,0,24,32,16,14,6,8,NA "MD",1998,NA,NA,2,72,67,116,56,36,16,NA,NA,NA,2,34,20,34,10,5,7,NA "MD",1999,NA,NA,1,89,123,144,84,29,14,NA,NA,NA,3,31,32,27,19,7,6,NA "MD",2000,NA,NA,2,52,31,36,13,13,6,NA,NA,NA,1,16,32,45,23,14,6,NA "MD",2001,NA,NA,1,152,197,230,158,62,32,NA,NA,NA,6,58,61,46,33,14,10,NA "MD",2002,NA,NA,5,159,220,237,181,49,33,NA,NA,NA,11,71,76,41,32,23,8,NA "MD",2003,NA,NA,1,152,201,252,206,62,25,NA,NA,NA,1,101,71,64,40,16,22,NA "MD",2004,NA,NA,8,210,277,284,267,89,42,NA,NA,NA,11,91,97,57,53,28,22,NA "MD",2005,0,2,2,211,337,345,313,106,31,0,0,3,3,97,92,57,61,23,18,0 "MD",2006,NA,NA,2,175,302,349,312,106,32,0,NA,NA,7,91,108,72,67,25,31,0 "MD",2007,0,0,0,181,281,343,314,107,35,0,0,2,2,97,85,57,58,25,25,0 "MD",2008,0,1,1,167,271,314,317,105,32,0,2,2,4,85,81,57,52,22,25,0 "ME",2005,0,0,0,3,5,7,15,4,8,0,0,0,0,0,7,3,4,0,8,0 "ME",2006,0,0,0,0,7,7,12,9,3,0,0,0,NA,3,4,4,4,3,2,0 "ME",2007,0,0,0,0,6,3,10,1,3,1,0,0,0,3,3,4,3,3,1,0 "ME",2008,0,0,0,2,7,10,5,5,1,0,0,0,0,4,5,5,10,4,7,0 "MG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1995,NA,NA,79,791,1289,1173,630,423,242,NA,NA,NA,100,799,1108,744,340,230,78,NA "MG",1996,NA,NA,68,888,1325,1271,673,484,285,NA,NA,NA,106,808,1031,744,393,197,79,NA "MG",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",1998,NA,NA,70,827,1545,1420,829,485,282,NA,NA,NA,108,852,1193,824,430,253,117,NA "MG",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MG",2001,NA,NA,103,1033,1588,1625,1094,613,404,NA,NA,NA,190,1010,1349,1094,546,289,154,NA "MG",2002,NA,NA,94,1023,1594,1563,1174,609,398,NA,NA,NA,163,983,1372,1000,598,234,135,NA "MG",2003,NA,NA,123,1249,1830,1839,1413,723,438,NA,NA,NA,216,1164,1578,1240,743,326,191,NA "MG",2004,NA,NA,118,1025,1593,1482,1026,495,300,NA,NA,NA,130,950,1130,841,513,220,95,NA "MG",2005,NA,NA,98,1159,1867,1732,1349,582,333,NA,NA,NA,150,1012,1451,1047,614,248,129,NA "MG",2006,NA,NA,117,1500,2391,2220,1714,766,458,NA,NA,NA,208,1458,1944,1444,874,353,166,NA "MG",2007,94,102,196,1473,2353,2097,1671,823,438,NA,16,207,223,1456,1810,1354,880,378,192,NA "MG",2008,21,121,142,1499,2294,2113,1669,836,465,0,19,232,251,1433,1846,1352,911,383,171,0 "MH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MH",1996,NA,NA,7,8,3,3,5,3,0,NA,NA,NA,12,7,3,3,2,3,2,NA "MH",1998,NA,NA,0,2,0,1,1,1,0,NA,NA,NA,0,1,3,1,0,1,0,NA "MH",1999,NA,NA,5,10,3,4,1,6,0,NA,NA,NA,2,10,7,2,2,2,0,NA "MH",2000,NA,NA,3,5,4,1,3,5,3,NA,NA,NA,7,7,3,0,2,2,0,NA "MH",2001,NA,NA,3,8,4,2,4,2,0,NA,NA,NA,5,6,4,7,8,2,1,NA "MH",2002,NA,NA,0,1,2,1,3,2,2,NA,NA,NA,0,2,0,0,3,1,1,NA "MH",2003,NA,NA,6,4,2,7,7,2,2,NA,NA,NA,4,9,2,4,6,1,4,NA "MH",2004,NA,NA,2,5,4,3,3,2,NA,NA,NA,NA,1,7,5,3,3,0,1,NA "MH",2005,NA,NA,2,4,4,5,6,1,1,NA,NA,NA,1,9,2,4,3,4,2,NA "MH",2006,NA,NA,NA,4,3,4,6,3,2,NA,NA,NA,2,2,3,3,7,4,2,NA "MH",2007,0,0,0,1,1,2,5,1,0,NA,0,0,1,3,3,2,3,3,0,NA "MH",2008,0,1,1,1,1,2,3,0,0,0,0,2,2,3,2,4,5,1,0,0 "MK",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MK",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MK",1995,NA,NA,2,15,42,45,33,29,24,NA,NA,NA,2,32,30,20,11,17,17,NA "MK",1996,NA,NA,5,17,20,35,16,25,22,NA,NA,NA,3,15,25,17,9,19,12,NA "MK",1997,NA,NA,1,8,21,25,24,21,21,NA,NA,NA,1,14,19,13,6,7,11,NA "MK",1998,NA,NA,3,14,19,56,18,21,13,NA,NA,NA,5,16,18,8,8,6,4,NA "MK",1999,NA,NA,1,11,10,19,27,15,5,NA,NA,NA,1,7,9,5,1,10,1,NA "MK",2000,NA,NA,5,8,14,20,19,20,14,NA,NA,NA,1,15,14,17,5,5,10,NA "MK",2001,NA,NA,1,10,17,17,15,21,16,NA,NA,NA,1,17,18,14,7,3,7,NA "MK",2002,NA,NA,2,20,17,28,31,22,7,NA,NA,NA,3,18,24,12,4,6,6,NA "MK",2003,NA,NA,1,20,23,35,28,17,17,NA,NA,NA,0,16,16,9,9,1,8,NA "MK",2004,NA,NA,2,12,18,19,33,21,15,NA,NA,NA,0,15,20,19,6,3,17,NA "MK",2005,0,2,2,14,20,23,20,18,13,1,1,1,2,17,13,10,7,5,13,0 "MK",2006,0,0,0,15,15,25,37,18,7,0,0,3,3,16,9,9,6,7,11,0 "MK",2007,0,1,1,12,22,27,46,21,19,0,0,4,4,11,12,9,4,4,8,0 "MK",2008,0,1,1,18,21,13,25,15,15,0,0,2,2,24,15,14,8,7,10,0 "ML",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",1995,NA,NA,27,72,357,294,181,138,102,NA,NA,NA,31,132,184,128,107,61,52,NA "ML",1996,NA,NA,19,182,408,364,226,157,136,NA,NA,NA,21,153,197,128,95,51,36,NA "ML",1997,NA,NA,16,226,559,493,357,255,164,NA,NA,NA,15,178,264,167,111,60,34,NA "ML",1998,NA,NA,13,193,501,428,308,205,130,NA,NA,NA,11,173,237,164,88,79,30,NA "ML",1999,NA,NA,19,235,475,429,315,216,129,NA,NA,NA,21,180,226,171,120,96,58,NA "ML",2000,NA,NA,23,206,430,396,297,235,144,NA,NA,NA,14,174,232,152,106,75,43,NA "ML",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ML",2002,NA,NA,20,209,547,447,430,151,72,NA,NA,NA,39,141,250,166,190,71,24,NA "ML",2003,NA,NA,32,348,619,438,330,201,115,NA,NA,NA,29,172,278,212,123,73,45,NA "ML",2004,NA,NA,28,302,584,473,316,219,147,NA,NA,NA,29,191,284,183,151,105,57,NA "ML",2005,NA,NA,26,350,628,539,365,263,193,NA,NA,NA,33,208,348,245,152,101,72,NA "ML",2006,NA,NA,28,361,679,550,436,272,216,NA,NA,NA,30,250,371,249,168,116,76,NA "ML",2007,NA,NA,29,369,696,570,422,291,213,NA,NA,NA,30,263,385,258,160,113,95,NA "ML",2008,2,20,22,453,809,640,503,314,250,0,3,34,37,332,516,320,245,172,121,0 "MM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MM",1995,NA,NA,42,713,1423,1401,977,677,298,NA,NA,NA,58,535,729,729,450,343,154,NA "MM",1996,NA,NA,58,767,1511,1535,1110,798,400,NA,NA,NA,55,577,938,817,558,408,184,NA "MM",1997,NA,NA,56,676,1452,1405,1061,753,441,NA,NA,NA,54,535,883,715,492,308,183,NA "MM",1998,NA,NA,64,798,1491,1584,1187,763,438,NA,NA,NA,73,650,997,856,577,382,229,NA "MM",1999,NA,NA,37,936,1800,1805,1366,833,540,NA,NA,NA,58,737,1076,919,647,420,284,NA "MM",2000,NA,NA,88,1459,2636,2781,2161,1235,836,NA,NA,NA,72,1040,1592,1397,987,592,378,NA "MM",2001,NA,NA,69,1800,3253,3353,2624,1443,931,NA,NA,NA,98,1306,1918,1568,1186,650,487,NA "MM",2002,NA,NA,64,2125,3986,4016,3022,1671,1067,NA,NA,NA,109,1563,2044,1758,1348,845,544,NA "MM",2003,NA,NA,107,2536,4408,4427,3269,1974,1296,NA,NA,NA,154,1781,2442,2003,1491,943,617,NA "MM",2004,NA,NA,96,2777,5025,4966,4081,2271,1567,NA,NA,NA,120,2020,2622,2228,1800,1122,713,NA "MM",2005,NA,NA,132,3401,5877,5888,4585,2557,1764,NA,NA,NA,147,2376,3047,2563,2101,1218,885,NA "MM",2006,NA,NA,113,3572,6328,6536,5143,2988,2033,NA,NA,NA,171,2453,3338,2820,2282,1448,1016,NA "MM",2007,NA,NA,127,3591,6569,6826,5507,3152,2155,NA,NA,NA,159,2719,3500,2998,2486,1601,1198,NA "MM",2008,NA,NA,118,3416,6311,6396,5327,3312,2235,0,NA,NA,180,2526,3474,2850,2357,1644,1102,0 "MN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MN",1994,NA,NA,1,23,40,25,19,6,1,NA,NA,NA,10,27,24,13,8,2,1,NA "MN",1995,NA,NA,37,99,111,68,19,13,15,NA,NA,NA,30,70,78,33,15,9,25,NA "MN",1996,NA,NA,8,103,150,91,42,24,19,NA,NA,NA,17,98,114,45,27,19,12,NA "MN",1997,NA,NA,6,173,298,204,72,32,17,NA,NA,NA,12,109,134,71,21,13,9,NA "MN",1998,NA,NA,17,213,251,158,65,32,22,NA,NA,NA,32,162,221,115,32,21,15,NA "MN",1999,NA,NA,12,213,314,178,63,34,26,NA,NA,NA,25,205,252,113,43,18,17,NA "MN",2000,NA,NA,6,181,260,171,68,38,23,NA,NA,NA,32,200,213,113,41,26,17,NA "MN",2001,NA,NA,13,236,269,179,86,45,36,NA,NA,NA,25,253,260,125,48,28,29,NA "MN",2002,NA,NA,9,242,272,184,94,57,47,NA,NA,NA,16,263,253,133,55,22,23,NA "MN",2003,NA,NA,10,206,217,171,93,55,39,NA,NA,NA,19,254,233,148,45,32,19,NA "MN",2004,NA,NA,6,287,256,229,112,54,43,NA,NA,NA,18,283,249,162,62,24,23,NA "MN",2005,NA,NA,7,271,253,232,147,52,36,NA,NA,NA,15,320,270,145,63,32,25,NA "MN",2006,NA,NA,7,317,335,241,157,64,41,NA,NA,NA,16,372,265,180,81,24,29,NA "MN",2007,NA,NA,4,280,270,232,158,48,34,NA,NA,NA,23,273,250,139,80,36,29,NA "MN",2008,NA,NA,7,289,260,235,151,59,36,0,NA,NA,18,283,229,127,86,32,26,0 "MO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",1995,NA,NA,0,7,19,20,13,12,16,NA,NA,NA,0,9,18,12,4,5,6,NA "MO",1996,NA,NA,1,16,29,34,20,16,26,NA,NA,NA,0,10,21,14,3,3,11,NA "MO",1997,NA,NA,1,15,38,47,37,34,55,NA,NA,NA,4,10,16,21,5,6,15,NA "MO",1998,NA,NA,0,11,26,42,23,28,56,NA,NA,NA,1,9,13,22,6,3,21,NA "MO",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MO",2000,NA,NA,0,10,8,25,22,9,17,NA,NA,NA,0,10,4,6,6,3,13,NA "MO",2001,NA,NA,0,9,17,26,25,11,23,NA,NA,NA,1,5,7,11,10,1,11,NA "MO",2002,NA,NA,1,13,8,21,20,17,21,NA,NA,NA,1,7,10,7,9,1,11,NA "MO",2003,NA,NA,0,9,9,16,27,9,27,NA,NA,NA,0,7,7,11,7,4,5,NA "MO",2004,NA,NA,0,8,7,18,31,12,14,NA,NA,NA,0,5,7,12,3,2,9,NA "MO",2005,NA,NA,3,6,9,21,23,17,22,NA,NA,NA,0,5,9,7,8,1,5,NA "MO",2006,NA,NA,0,15,6,17,32,19,19,NA,NA,NA,1,7,8,9,4,3,4,NA "MO",2007,0,0,0,14,12,14,30,16,13,NA,0,0,2,10,4,6,8,3,6,NA "MO",2008,0,1,1,18,12,10,29,19,13,0,0,2,2,7,6,5,6,6,5,0 "MP",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1995,NA,NA,1,1,3,5,10,3,3,NA,NA,NA,0,0,2,6,4,1,1,NA "MP",1996,NA,NA,0,2,8,5,3,1,1,NA,NA,NA,1,1,1,0,1,1,1,NA "MP",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",1998,NA,NA,0,0,6,3,5,2,2,NA,NA,NA,0,3,4,1,0,0,0,NA "MP",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MP",2000,NA,NA,1,4,8,9,9,3,2,NA,NA,NA,0,10,17,7,3,1,1,NA "MP",2001,NA,NA,0,1,3,0,4,2,0,NA,NA,NA,0,5,4,0,0,0,0,NA "MP",2002,NA,NA,1,2,3,7,10,5,2,NA,NA,NA,0,9,10,3,1,0,0,NA "MP",2003,NA,NA,0,2,2,2,1,0,2,NA,NA,NA,1,3,0,2,1,0,0,NA "MP",2004,NA,NA,0,0,2,2,4,1,0,NA,NA,NA,0,1,2,1,1,0,0,NA "MP",2005,NA,NA,0,0,1,3,4,1,2,NA,NA,NA,0,0,0,1,1,1,1,NA "MP",2006,NA,NA,0,0,2,3,1,0,0,NA,NA,NA,0,2,2,3,1,0,1,NA "MP",2007,0,0,0,0,0,3,4,0,2,NA,0,0,0,0,2,1,1,1,2,NA "MP",2008,0,0,0,1,0,1,5,0,3,0,0,0,0,0,0,2,0,1,0,0 "MR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1997,NA,NA,188,165,321,341,613,232,185,NA,NA,NA,125,131,319,230,484,384,70,NA "MR",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",1999,NA,NA,15,290,450,262,177,113,92,NA,NA,NA,7,157,97,110,76,43,20,NA "MR",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",2004,NA,NA,15,204,343,235,154,129,108,NA,NA,NA,14,102,114,114,58,44,28,NA "MR",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MR",2006,NA,NA,12,197,294,203,150,106,96,NA,NA,NA,16,109,114,86,49,29,25,NA "MR",2007,NA,NA,14,206,355,261,144,139,83,NA,NA,NA,21,103,152,92,64,38,42,NA "MR",2008,NA,NA,10,199,292,249,172,107,90,NA,NA,NA,16,127,111,97,44,51,40,NA "MS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",2003,NA,NA,0,0,1,0,0,0,1,NA,NA,NA,0,0,0,0,0,0,0,NA "MS",2004,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "MS",2005,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MS",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA "MS",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",1995,NA,NA,0,0,0,1,0,0,0,NA,NA,NA,0,0,1,0,0,1,2,NA "MT",1996,NA,NA,0,0,0,0,1,2,1,NA,NA,NA,0,0,0,1,0,0,0,NA "MT",1997,NA,NA,0,1,0,0,0,0,1,NA,NA,NA,0,0,0,0,0,0,1,NA "MT",1998,NA,NA,0,1,0,0,1,0,3,NA,NA,NA,0,1,0,0,0,0,0,NA "MT",1999,NA,NA,0,0,1,0,0,5,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",2000,NA,NA,0,1,0,1,1,0,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MT",2001,NA,NA,0,NA,NA,NA,1,NA,1,NA,NA,NA,0,NA,NA,1,NA,NA,NA,NA "MT",2002,NA,NA,0,1,0,1,0,1,0,NA,NA,NA,0,0,1,0,0,0,1,NA "MT",2003,NA,NA,0,0,1,0,1,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "MT",2004,NA,NA,0,0,0,0,1,0,0,NA,NA,NA,0,0,0,0,1,0,0,NA "MT",2005,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0 "MT",2006,0,0,0,1,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0 "MT",2007,0,0,0,0,2,0,0,1,3,0,0,0,0,2,0,0,0,0,0,0 "MT",2008,0,0,0,3,6,2,0,0,0,0,0,0,0,1,1,0,0,0,2,0 "MU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1995,NA,NA,2,17,13,22,27,13,8,NA,NA,NA,2,4,12,10,8,4,4,NA "MU",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",1998,NA,NA,1,12,10,21,19,10,19,NA,NA,NA,0,9,5,4,3,3,6,NA "MU",1999,NA,NA,0,7,20,15,13,12,12,NA,NA,NA,0,13,7,7,8,2,3,NA "MU",2000,NA,NA,2,6,9,18,19,14,8,NA,NA,NA,1,5,8,8,6,7,4,NA "MU",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MU",2002,NA,NA,1,12,6,21,12,7,4,NA,NA,NA,1,3,8,7,1,2,1,NA "MU",2003,NA,NA,0,9,12,10,17,11,9,NA,NA,NA,1,6,8,4,4,3,5,NA "MU",2004,NA,NA,1,13,13,24,20,4,5,NA,NA,NA,0,6,8,10,4,4,5,NA "MU",2005,NA,NA,NA,10,15,21,20,10,6,NA,NA,NA,NA,4,5,5,11,2,1,NA "MU",2006,NA,NA,0,4,9,22,10,12,6,NA,NA,NA,1,3,7,3,4,1,3,NA "MU",2007,0,0,0,9,9,12,15,9,6,NA,0,0,0,4,7,3,5,4,3,NA "MU",2008,0,0,0,11,15,14,15,7,8,0,0,0,0,2,3,2,5,2,1,0 "MV",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MV",1995,NA,NA,1,28,11,10,8,10,6,NA,NA,NA,1,13,8,4,6,6,2,NA "MV",1996,NA,NA,0,24,9,3,5,14,8,NA,NA,NA,1,12,9,5,6,5,5,NA "MV",1997,NA,NA,1,13,6,2,13,9,8,NA,NA,NA,3,15,8,9,4,3,0,NA "MV",1998,NA,NA,1,19,18,8,4,6,2,NA,NA,NA,1,13,5,1,6,4,0,NA "MV",1999,NA,NA,0,14,8,9,7,7,8,NA,NA,NA,3,10,6,3,6,6,1,NA "MV",2000,NA,NA,0,9,10,2,5,5,3,NA,NA,NA,0,11,4,5,4,5,2,NA "MV",2001,NA,NA,1,12,5,3,5,7,1,NA,NA,NA,1,10,3,2,6,1,2,NA "MV",2002,NA,NA,0,11,9,0,1,5,8,NA,NA,NA,1,8,5,4,5,1,2,NA "MV",2003,NA,NA,1,14,7,4,9,9,4,NA,NA,NA,0,8,5,1,5,1,0,NA "MV",2004,NA,NA,0,13,11,3,8,5,6,NA,NA,NA,0,8,3,2,1,2,4,NA "MV",2005,NA,NA,0,9,8,5,6,6,5,NA,NA,NA,1,10,7,1,2,2,4,NA "MV",2006,0,0,0,8,9,3,4,3,6,NA,0,NA,0,6,3,4,3,2,2,NA "MV",2007,0,0,0,14,4,6,5,6,5,NA,0,1,1,5,2,5,5,0,1,NA "MV",2008,0,0,0,9,11,3,5,6,3,NA,0,0,0,7,1,3,0,3,2,NA "MW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",1995,NA,NA,25,493,1195,833,519,215,89,NA,NA,NA,65,802,1028,573,294,108,45,NA "MW",1996,NA,NA,27,562,1388,937,529,224,110,NA,NA,NA,92,887,1187,715,347,133,37,NA "MW",1997,NA,NA,47,578,1418,995,521,254,101,NA,NA,NA,84,1009,1307,767,347,123,36,NA "MW",1998,NA,NA,46,677,1581,1158,643,281,151,NA,NA,NA,85,1131,1585,867,437,148,63,NA "MW",1999,NA,NA,43,588,1475,1083,588,239,126,NA,NA,NA,80,1052,1487,777,376,154,62,NA "MW",2000,NA,NA,50,653,1476,1113,585,245,114,NA,NA,NA,66,1038,1481,831,401,148,64,NA "MW",2001,NA,NA,37,704,1486,1025,591,230,129,NA,NA,NA,74,1070,1520,862,384,139,58,NA "MW",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MW",2003,NA,NA,43,596,1374,936,489,209,128,NA,NA,NA,76,963,1531,790,374,155,52,NA "MW",2004,NA,NA,47,647,1505,1081,508,264,124,NA,NA,NA,78,1009,1694,910,412,191,96,NA "MW",2005,NA,NA,58,622,1653,1031,549,279,157,NA,NA,NA,84,913,1598,859,386,180,74,NA "MW",2006,NA,NA,42,584,1647,1054,491,256,182,NA,NA,NA,80,848,1545,813,348,183,93,NA "MW",2007,0,61,61,614,1454,954,473,233,158,NA,0,109,109,768,1497,715,342,146,84,NA "MW",2008,1,55,56,570,1562,982,502,280,176,NA,1,111,166,707,1327,727,365,172,89,NA "MX",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1996,NA,NA,198,936,1021,940,721,708,469,NA,NA,NA,243,685,681,627,482,472,312,NA "MX",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX",1998,NA,NA,229,1031,1330,1200,1241,813,892,NA,NA,NA,268,856,829,874,742,583,585,NA "MX",1999,NA,NA,143,1013,1141,1093,1022,880,1128,NA,NA,NA,151,773,795,641,665,592,710,NA "MX",2000,NA,NA,214,1079,1387,1162,1235,972,1126,NA,NA,NA,176,663,828,698,832,595,709,NA "MX",2001,NA,NA,130,1448,1639,1683,1606,1229,1566,NA,NA,NA,146,1131,993,845,952,787,948,NA "MX",2002,NA,NA,154,1090,1292,1301,1146,986,1144,NA,NA,NA,149,769,754,716,700,621,733,NA "MX",2003,NA,NA,187,1207,1461,1417,1313,1005,1352,NA,NA,NA,184,850,826,734,813,743,841,NA "MX",2004,NA,NA,86,1053,1276,1181,1201,958,1209,NA,NA,NA,102,760,649,693,695,626,725,NA "MX",2005,NA,NA,100,1095,1376,1314,1238,1042,1288,NA,NA,NA,125,771,733,710,784,637,784,NA "MX",2006,68,61,129,986,1320,1333,1275,1012,1215,NA,44,109,153,696,774,662,794,722,803,NA "MX",2007,61,84,145,981,1286,1286,1266,942,1226,NA,41,99,140,645,742,694,748,642,788,NA "MX",2008,62,62,124,966,1292,1314,1267,1004,1213,0,30,96,126,752,826,710,774,699,836,0 "MY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MY",1995,NA,NA,59,640,879,775,788,374,1072,NA,NA,NA,58,446,448,345,316,149,339,NA "MY",1996,NA,NA,45,720,1026,894,838,671,868,NA,NA,NA,77,457,463,371,327,242,270,NA "MY",1997,NA,NA,44,701,1036,961,816,380,1123,NA,NA,NA,51,535,485,383,338,141,343,NA "MY",1998,NA,NA,31,670,1090,1050,872,426,1282,NA,NA,NA,45,519,526,398,330,157,406,NA "MY",1999,NA,NA,27,692,1147,1152,977,902,880,NA,NA,NA,32,513,558,422,351,286,268,NA "MY",2000,NA,NA,32,694,1138,1177,908,814,891,NA,NA,NA,41,464,564,424,367,356,286,NA "MY",2001,NA,NA,48,713,1198,1221,1011,934,738,NA,NA,NA,36,510,506,445,374,353,222,NA "MY",2002,NA,NA,22,562,1106,1182,997,758,844,NA,NA,NA,30,421,524,415,485,319,293,NA "MY",2003,NA,NA,216,1211,2010,2073,1798,1438,1601,NA,NA,NA,196,969,1044,857,669,584,626,NA "MY",2004,NA,NA,191,1195,2105,2189,1890,1440,1535,NA,NA,NA,227,925,1014,852,694,605,532,NA "MY",2005,NA,NA,244,1179,2218,2277,1980,1427,1507,NA,NA,NA,208,1044,1061,947,816,586,572,NA "MY",2006,148,NA,15,507,855,734,678,443,496,NA,NA,NA,3,30,300,403,321,257,161,NA "MY",2007,79,137,216,1291,2224,2082,1839,1394,1395,NA,59,167,226,1098,1101,849,782,585,514,NA "MY",2008,61,160,221,1436,2445,2318,2169,1599,1543,2,66,174,240,1161,1283,906,878,648,657,0 "MZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1995,NA,NA,187,1136,1475,1338,1022,664,320,NA,NA,NA,226,994,1314,1016,551,234,89,NA "MZ",1996,NA,NA,141,1163,1507,1367,980,639,275,NA,NA,NA,205,1060,1357,938,533,239,74,NA "MZ",1997,NA,NA,163,1194,1608,1439,1076,666,313,NA,NA,NA,187,1147,1381,1002,606,265,78,NA "MZ",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MZ",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA NA,1995,NA,NA,0,68,235,113,55,21,6,NA,NA,NA,5,49,78,50,16,1,0,NA NA,1996,NA,NA,16,205,613,472,230,137,101,NA,NA,NA,17,249,330,245,87,72,51,NA NA,1997,NA,NA,18,232,791,479,296,161,93,NA,NA,NA,23,249,401,275,104,56,47,NA NA,1998,NA,NA,21,270,816,541,267,148,111,NA,NA,NA,34,300,536,310,117,62,65,NA NA,1999,NA,NA,20,247,908,613,260,135,110,NA,NA,NA,25,339,540,336,114,77,36,NA NA,2000,NA,NA,18,269,874,665,300,147,81,NA,NA,NA,16,352,654,348,161,76,52,NA NA,2001,NA,NA,20,322,993,732,318,150,116,NA,NA,NA,32,394,729,404,168,91,66,NA NA,2002,NA,NA,19,301,1033,750,326,146,96,NA,NA,NA,42,357,795,484,182,91,67,NA NA,2003,NA,NA,31,364,1109,838,419,196,108,NA,NA,NA,47,451,927,571,216,108,102,NA NA,2004,NA,NA,31,319,1092,866,371,159,131,NA,NA,NA,30,400,819,554,203,106,74,NA NA,2005,NA,NA,98,355,1027,874,365,146,120,NA,NA,NA,105,399,809,525,213,95,91,NA NA,2006,NA,NA,86,347,1052,799,386,174,146,NA,NA,NA,74,485,875,521,239,92,80,NA NA,2007,NA,NA,57,370,1018,786,346,149,120,NA,NA,NA,69,417,826,513,242,102,76,NA NA,2008,NA,NA,30,387,1033,757,346,149,132,0,NA,NA,73,466,702,437,226,110,80,0 "NC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1995,NA,NA,3,2,3,4,2,2,3,NA,NA,NA,2,1,1,3,3,0,1,NA "NC",1996,NA,NA,1,3,1,3,5,8,3,NA,NA,NA,0,2,2,1,2,1,1,NA "NC",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NC",1999,NA,NA,0,0,6,1,2,1,7,NA,NA,NA,0,0,4,1,0,2,3,NA "NC",2000,NA,NA,1,1,3,4,2,3,4,NA,NA,NA,1,8,1,1,3,2,4,NA "NC",2001,NA,NA,0,1,8,1,5,6,6,NA,NA,NA,1,1,2,1,0,0,3,NA "NC",2002,NA,NA,0,2,2,1,1,1,3,NA,NA,NA,0,4,2,2,3,0,0,NA "NC",2003,NA,NA,0,1,1,1,1,1,3,NA,NA,NA,0,0,2,2,0,0,3,NA "NC",2004,NA,NA,0,2,1,3,2,1,2,NA,NA,NA,0,2,1,0,0,1,0,NA "NC",2005,NA,NA,0,2,1,0,0,3,0,NA,NA,NA,0,1,2,1,2,0,4,NA "NC",2006,NA,NA,0,0,3,1,1,NA,1,NA,NA,NA,0,1,0,0,0,0,2,NA "NC",2007,NA,NA,0,1,1,2,1,3,2,NA,NA,NA,0,0,0,1,0,0,1,NA "NC",2008,0,0,0,1,1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0 "NE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",1997,NA,NA,4,148,395,215,92,58,25,NA,NA,NA,7,70,112,67,58,14,8,NA "NE",1998,NA,NA,4,218,511,399,234,159,61,NA,NA,NA,14,92,160,126,86,46,15,NA "NE",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",2000,NA,NA,29,270,174,441,252,151,78,NA,NA,NA,31,123,206,168,151,63,9,NA "NE",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",2003,NA,NA,41,485,1051,779,512,299,169,NA,NA,NA,30,201,356,279,177,83,42,NA "NE",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NE",2005,NA,NA,35,557,1204,819,497,350,198,NA,NA,NA,34,214,388,330,223,131,70,NA "NE",2006,NA,NA,25,537,1265,909,487,359,217,NA,NA,NA,37,270,427,306,207,149,84,NA "NE",2007,NA,NA,40,571,1380,958,577,405,249,NA,NA,NA,57,287,412,323,248,157,109,NA "NE",2008,5,30,35,659,1453,852,562,429,333,NA,4,53,57,259,414,307,237,146,110,NA "NG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",1995,NA,NA,450,845,921,937,557,611,515,NA,NA,NA,404,842,795,770,724,654,451,NA "NG",1996,NA,NA,234,2097,2557,1791,853,486,309,NA,NA,NA,411,1954,2175,1253,871,458,215,NA "NG",1997,NA,NA,116,1518,2095,1177,734,436,338,NA,NA,NA,156,1556,1517,753,458,261,120,NA "NG",1998,NA,NA,125,1798,2543,1282,889,451,369,NA,NA,NA,169,1856,1808,881,560,298,132,NA "NG",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NG",2000,NA,NA,157,2173,3164,1836,1091,566,463,NA,NA,NA,239,2934,2434,1110,676,344,231,NA "NG",2001,NA,NA,164,2196,3281,2076,1283,654,488,NA,NA,NA,272,2619,2510,1201,715,387,251,NA "NG",2002,NA,NA,163,2274,3719,2283,1352,696,534,NA,NA,NA,242,2633,2884,1368,787,420,241,NA "NG",2003,NA,NA,267,3263,5388,3590,2106,1139,719,NA,NA,NA,356,3394,3956,1973,1159,536,327,NA "NG",2004,NA,NA,408,3679,6252,4262,2614,1310,1267,NA,NA,NA,469,3768,4463,2220,1495,981,567,NA "NG",2005,NA,NA,325,3824,6758,4544,2863,1464,950,NA,NA,NA,482,3996,4884,2448,1350,745,415,NA "NG",2006,NA,NA,247,4488,8145,5517,3330,1431,897,NA,NA,NA,385,4029,5430,2516,1894,1049,545,NA "NG",2007,NA,NA,503,4251,8541,5776,3767,1853,1341,NA,NA,NA,685,4522,5944,3088,1926,1194,625,NA "NG",2008,NA,NA,579,4518,8910,6210,3821,1987,1267,0,NA,NA,745,4431,6391,3351,2057,1099,660,0 "NI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NI",1995,NA,NA,23,178,172,175,126,96,92,NA,NA,NA,24,176,215,98,83,64,46,NA "NI",1996,NA,NA,27,231,200,191,120,94,94,NA,NA,NA,33,200,199,137,77,63,56,NA "NI",1997,NA,NA,18,211,210,163,115,90,83,NA,NA,NA,37,212,223,117,77,61,53,NA "NI",1998,NA,NA,24,221,193,155,106,94,110,NA,NA,NA,34,202,215,114,64,61,55,NA "NI",1999,NA,NA,26,217,212,167,125,75,85,NA,NA,NA,27,194,168,108,73,42,45,NA "NI",2000,NA,NA,18,194,174,147,108,64,90,NA,NA,NA,34,188,173,98,76,46,61,NA "NI",2001,NA,NA,24,213,203,139,93,75,95,NA,NA,NA,32,188,173,92,67,52,64,NA "NI",2002,NA,NA,22,168,180,140,101,73,74,NA,NA,NA,26,149,135,91,72,45,44,NA "NI",2003,NA,NA,14,179,210,135,103,68,65,NA,NA,NA,42,174,150,91,71,54,48,NA "NI",2004,NA,NA,24,161,179,105,104,87,72,NA,NA,NA,23,159,154,90,75,44,50,NA "NI",2005,NA,NA,17,163,159,116,106,61,79,NA,NA,NA,23,135,122,103,61,54,47,NA "NI",2006,0,0,15,162,151,129,98,90,72,NA,0,0,25,168,144,90,65,38,38,NA "NI",2007,0,0,16,172,194,144,130,77,91,NA,0,0,27,158,168,100,76,45,55,NA "NI",2008,NA,NA,20,174,190,130,108,90,67,0,NA,NA,38,165,164,93,54,54,55,0 "NL",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NL",1995,NA,NA,22,79,119,75,28,9,10,NA,NA,NA,24,56,50,13,10,8,7,NA "NL",1996,NA,NA,8,48,65,46,26,21,34,NA,NA,NA,1,24,40,14,5,6,20,NA "NL",1997,NA,NA,3,33,65,47,32,12,31,NA,NA,NA,4,17,31,10,12,4,11,NA "NL",1998,NA,NA,2,31,40,41,21,11,26,NA,NA,NA,2,19,25,17,4,6,9,NA "NL",1999,NA,NA,5,44,67,32,24,12,19,NA,NA,NA,5,26,39,16,2,1,16,NA "NL",2000,NA,NA,0,34,63,41,25,10,21,NA,NA,NA,4,29,22,16,9,5,10,NA "NL",2001,NA,NA,1,51,51,33,29,12,24,NA,NA,NA,1,26,32,19,9,5,10,NA "NL",2002,NA,NA,1,40,54,39,33,7,20,NA,NA,NA,5,27,32,12,13,4,9,NA "NL",2003,NA,NA,2,35,50,38,17,15,15,NA,NA,NA,0,16,30,12,10,3,5,NA "NL",2004,NA,NA,6,36,54,37,26,22,31,NA,NA,NA,4,20,33,15,4,4,12,NA "NL",2005,0,0,0,23,42,23,26,14,19,0,0,3,3,14,19,11,9,1,4,0 "NL",2006,0,0,0,25,23,31,23,17,19,0,0,3,3,15,17,12,5,3,10,0 "NL",2007,1,0,1,10,22,28,21,15,15,0,0,1,1,12,22,17,6,5,12,0 "NL",2008,0,0,0,16,24,26,19,18,19,0,0,2,2,13,19,14,6,6,7,0 "NO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NO",1995,NA,NA,0,4,8,6,3,5,12,NA,NA,NA,0,4,7,2,0,3,8,NA "NO",1996,NA,NA,3,8,7,14,6,2,24,NA,NA,NA,1,4,10,5,2,0,17,NA "NO",1997,NA,NA,3,6,10,7,6,2,27,NA,NA,NA,0,3,4,8,4,2,18,NA "NO",1998,NA,NA,0,1,4,3,1,2,17,NA,NA,NA,0,8,2,3,1,2,5,NA "NO",1999,NA,NA,0,2,5,3,2,1,1,NA,NA,NA,0,3,2,2,0,0,0,NA "NO",2000,NA,NA,0,1,9,3,6,2,4,NA,NA,NA,1,3,1,NA,NA,2,5,NA "NO",2001,NA,NA,0,6,8,8,4,1,8,NA,NA,NA,1,6,9,1,1,2,4,NA "NO",2002,NA,NA,0,4,4,4,2,0,4,NA,NA,NA,0,3,5,1,2,0,2,NA "NO",2003,NA,NA,0,3,3,4,4,2,2,NA,NA,NA,0,4,9,4,2,0,1,NA "NO",2004,NA,NA,1,5,6,6,1,1,2,NA,NA,NA,0,3,8,4,2,1,6,NA "NO",2005,0,0,0,9,4,6,4,4,3,0,0,0,0,4,7,2,1,0,3,0 "NO",2006,0,0,0,5,10,5,3,3,1,0,0,1,1,5,5,2,2,1,3,0 "NO",2007,NA,NA,NA,4,12,2,3,1,2,NA,NA,1,1,4,2,5,1,NA,1,NA "NO",2008,0,1,1,10,8,7,2,4,3,0,0,0,0,1,6,4,0,1,6,0 "NP",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1996,NA,NA,91,1451,1285,1221,1035,738,407,NA,NA,NA,155,853,734,534,288,190,110,NA "NP",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NP",1998,NA,NA,133,1621,1522,1500,1292,884,480,NA,NA,NA,173,1112,838,621,407,219,170,NA "NP",1999,NA,NA,150,1872,1800,1703,1545,1161,799,NA,NA,NA,185,1239,1133,754,553,316,200,NA "NP",2000,NA,NA,170,1904,1763,1713,1491,1294,772,NA,NA,NA,176,1267,1078,833,575,419,228,NA "NP",2001,NA,NA,155,1957,1709,1743,1491,1300,775,NA,NA,NA,171,1295,1060,838,573,375,222,NA "NP",2002,NA,NA,129,1980,1707,1686,1579,1465,758,NA,NA,NA,202,1203,1041,796,544,426,198,NA "NP",2003,NA,NA,122,2039,1658,1619,1769,1639,735,NA,NA,NA,189,1283,1107,873,609,486,220,NA "NP",2004,NA,NA,121,1991,1749,1652,1710,1739,763,NA,NA,NA,188,1282,1138,849,677,540,215,NA "NP",2005,NA,NA,148,1946,1685,1722,1806,1759,820,NA,NA,NA,195,1208,1111,797,658,532,230,NA "NP",2006,0,0,125,1914,1651,1640,1688,1695,808,NA,0,0,179,1164,1001,788,613,519,243,NA "NP",2007,0,0,150,2025,1591,1636,1720,1715,919,NA,0,0,175,1149,1027,793,619,578,258,NA "NP",2008,NA,NA,81,150,1409,1558,1706,1515,792,1416,NA,NA,107,832,820,704,630,523,226,631 "NR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",1999,NA,NA,0,0,0,0,1,1,0,NA,NA,NA,0,0,1,3,0,0,0,NA "NR",2000,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,1,NA,NA "NR",2001,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA "NR",2002,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA "NR",2003,NA,NA,0,0,0,0,1,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "NR",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NR",2006,0,0,0,1,0,0,0,0,0,NA,0,0,0,0,0,1,0,0,0,NA "NR",2007,0,0,1,1,0,1,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "NR",2008,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 "NU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",1999,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,1,NA,NA,NA,NA,NA,NA "NU",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NU",2004,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "NU",2005,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "NU",2006,0,0,0,0,0,0,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "NU",2007,0,0,0,0,0,0,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "NU",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "NZ",1995,NA,NA,0,4,3,3,5,7,7,NA,NA,NA,1,2,3,4,2,2,4,NA "NZ",1996,NA,NA,2,4,3,9,10,3,12,NA,NA,NA,2,6,9,3,6,3,13,NA "NZ",1997,NA,NA,0,3,6,3,4,4,7,NA,NA,NA,0,4,6,5,2,5,7,NA "NZ",1998,NA,NA,1,8,10,8,7,7,4,NA,NA,NA,0,11,6,8,2,4,5,NA "NZ",1999,NA,NA,1,10,8,4,3,8,15,NA,NA,NA,1,6,7,2,3,0,1,NA "NZ",2000,NA,NA,0,6,5,6,8,10,7,NA,NA,NA,1,6,6,5,0,4,10,NA "NZ",2001,NA,NA,1,7,2,7,4,2,12,NA,NA,NA,3,9,14,3,1,3,5,NA "NZ",2002,NA,NA,0,10,14,5,6,4,10,NA,NA,NA,1,15,8,4,3,5,3,NA "NZ",2003,NA,NA,5,9,10,6,6,8,9,NA,NA,NA,7,18,8,1,10,4,5,NA "NZ",2004,NA,NA,3,10,13,10,6,5,16,NA,NA,NA,0,10,15,4,4,1,13,NA "NZ",2005,NA,NA,4,6,10,6,6,5,10,NA,NA,NA,1,11,9,6,6,1,2,NA "NZ",2006,0,5,5,14,5,8,4,3,7,NA,0,1,1,12,12,12,3,6,4,NA "NZ",2007,0,0,0,11,1,7,4,4,8,NA,1,0,1,14,7,8,6,6,4,NA "NZ",2008,0,0,0,9,4,9,5,10,18,0,1,0,1,8,13,9,3,3,9,0 "OM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "OM",1995,NA,NA,1,7,12,7,7,10,11,NA,NA,NA,2,18,13,5,5,6,3,NA "OM",1996,NA,NA,0,15,14,8,11,8,11,NA,NA,NA,3,18,4,3,5,1,7,NA "OM",1997,NA,NA,0,18,16,14,10,11,10,NA,NA,NA,2,14,7,4,5,4,5,NA "OM",1998,NA,NA,0,18,9,8,14,9,12,NA,NA,NA,3,14,6,6,5,3,2,NA "OM",1999,NA,NA,2,10,11,23,15,7,10,NA,NA,NA,3,16,4,6,1,4,8,NA "OM",2000,NA,NA,1,8,9,11,12,9,11,NA,NA,NA,2,17,5,7,5,11,6,NA "OM",2001,NA,NA,1,10,8,12,6,8,8,NA,NA,NA,4,17,8,5,9,5,8,NA "OM",2002,NA,NA,7,22,18,20,16,26,20,NA,NA,NA,16,41,15,12,13,7,7,NA "OM",2003,NA,NA,5,28,32,31,29,13,15,NA,NA,NA,10,26,18,12,13,11,7,NA "OM",2004,NA,NA,1,15,12,23,30,12,14,NA,NA,NA,0,0,9,1,0,0,0,NA "OM",2005,NA,NA,1,21,11,24,15,19,5,NA,NA,NA,2,13,5,3,4,5,3,NA "OM",2006,0,6,6,18,19,18,18,12,2,NA,0,2,2,21,22,7,13,12,14,NA "OM",2007,NA,NA,0,16,25,25,20,13,8,NA,NA,NA,3,22,13,11,10,7,14,NA "OM",2008,0,0,0,18,28,28,28,14,10,0,0,1,1,20,10,4,4,5,1,0 "PA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PA",1995,NA,NA,86,155,193,112,126,42,83,NA,NA,NA,72,120,111,75,57,16,40,NA "PA",1996,NA,NA,52,68,132,87,65,44,45,NA,NA,NA,58,62,76,59,36,35,26,NA "PA",1997,NA,NA,41,79,173,117,75,70,39,NA,NA,NA,23,45,86,46,23,26,19,NA "PA",1998,NA,NA,2,14,14,10,4,3,5,NA,NA,NA,1,9,13,7,3,1,2,NA "PA",1999,NA,NA,38,107,209,134,106,81,72,NA,NA,NA,53,83,100,62,52,43,37,NA "PA",2000,NA,NA,3,44,78,61,37,27,26,NA,NA,NA,6,43,34,35,19,12,16,NA "PA",2001,NA,NA,7,58,109,89,73,50,39,NA,NA,NA,9,45,70,46,27,12,23,NA "PA",2002,NA,NA,7,89,108,101,76,68,68,NA,NA,NA,7,50,54,59,29,18,34,NA "PA",2003,NA,NA,10,91,122,81,74,61,67,NA,NA,NA,14,51,77,50,30,24,28,NA "PA",2004,NA,NA,16,89,123,118,91,65,50,NA,NA,NA,9,98,66,59,33,34,33,NA "PA",2005,NA,NA,5,76,129,129,84,57,49,NA,NA,NA,11,73,81,62,33,30,41,NA "PA",2006,NA,NA,7,100,134,107,88,48,57,NA,NA,NA,14,64,83,52,45,26,33,NA "PA",2007,NA,NA,7,106,139,116,81,50,61,NA,NA,NA,7,56,74,59,33,21,23,NA "PA",2008,1,8,9,95,117,91,107,55,60,NA,0,9,9,56,73,55,46,29,27,NA "PE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PE",1995,NA,NA,147,1311,849,454,322,200,216,NA,NA,NA,149,1005,660,373,259,162,152,NA "PE",1996,NA,NA,151,1351,789,420,261,190,167,NA,NA,NA,169,896,561,290,171,132,144,NA "PE",1997,NA,NA,745,6913,3853,1971,1174,842,748,NA,NA,NA,864,4560,2784,1224,734,590,496,NA "PE",1998,NA,NA,704,6271,3987,2095,1337,831,889,NA,NA,NA,862,4560,2894,1431,686,537,623,NA "PE",1999,NA,NA,712,4861,3007,1586,852,624,714,NA,NA,NA,700,4783,2958,1560,838,613,703,NA "PE",2000,NA,NA,552,5290,2875,1546,1041,801,796,NA,NA,NA,633,3686,2472,1156,609,499,624,NA "PE",2001,NA,NA,11,5591,2887,1550,979,843,696,NA,NA,NA,11,4015,2382,1117,626,480,497,NA "PE",2002,NA,NA,65,983,622,298,194,164,138,NA,NA,NA,62,688,496,251,129,96,100,NA "PE",2003,NA,NA,101,758,506,355,206,139,165,NA,NA,NA,107,659,380,228,138,106,98,NA "PE",2004,NA,NA,385,3860,2085,1357,894,747,675,NA,NA,NA,410,3258,1935,1094,678,440,471,NA "PE",2005,NA,NA,371,3802,2670,1513,1075,641,708,NA,NA,NA,375,2674,2111,1046,699,333,472,NA "PE",2006,36,364,400,4071,2470,1494,1106,884,869,NA,14,421,435,2713,1852,1082,762,557,556,NA "PE",2007,10,385,395,3436,2239,1585,1152,654,702,NA,5,330,335,2684,1603,1127,813,402,669,NA "PE",2008,10,74,84,3406,2233,1564,1121,608,921,0,5,47,52,2644,1599,1112,791,373,899,0 "PF",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PF",1996,NA,NA,1,4,7,5,2,1,3,NA,NA,NA,0,5,4,2,0,2,1,NA "PF",1997,NA,NA,1,4,2,4,3,5,3,NA,NA,NA,1,5,3,2,3,2,3,NA "PF",1998,NA,NA,0,4,4,3,1,5,4,NA,NA,NA,3,1,2,5,1,0,1,NA "PF",1999,NA,NA,0,2,2,2,1,2,4,NA,NA,NA,4,2,2,4,2,3,3,NA "PF",2000,NA,NA,1,3,3,4,4,4,3,NA,NA,NA,1,4,1,0,1,0,0,NA "PF",2001,NA,NA,2,5,1,2,4,4,5,NA,NA,NA,3,7,1,1,3,4,3,NA "PF",2002,NA,NA,0,4,2,1,3,3,1,NA,NA,NA,0,4,2,1,2,2,2,NA "PF",2003,NA,NA,NA,2,2,1,2,4,3,NA,NA,NA,NA,3,1,1,1,0,1,NA "PF",2004,NA,NA,1,1,2,3,0,1,4,NA,NA,NA,NA,4,6,1,4,2,1,NA "PF",2005,NA,NA,0,2,2,2,0,4,2,NA,NA,NA,0,2,3,0,1,1,3,NA "PF",2006,NA,NA,1,1,1,3,3,1,1,NA,NA,NA,1,6,1,0,0,2,3,NA "PF",2007,NA,NA,NA,NA,2,2,2,NA,NA,NA,NA,1,1,1,1,5,0,3,2,NA "PF",2008,0,1,1,3,1,1,1,2,2,2,0,0,0,1,1,1,0,1,2,1 "PG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PG",1996,NA,NA,11,31,25,18,4,3,2,NA,NA,NA,11,41,30,11,10,6,2,NA "PG",1997,NA,NA,2,9,8,5,2,2,0,NA,NA,NA,1,11,5,3,1,0,0,NA "PG",1998,NA,NA,9,69,57,30,25,14,4,NA,NA,NA,11,94,51,27,21,3,1,NA "PG",1999,NA,NA,1,33,25,9,8,3,0,NA,NA,NA,0,32,20,13,6,0,1,NA "PG",2000,NA,NA,8,87,70,30,21,12,5,NA,NA,NA,6,77,45,21,15,5,1,NA "PG",2001,NA,NA,4,101,72,29,26,9,4,NA,NA,NA,7,91,64,32,17,5,1,NA "PG",2002,NA,NA,18,139,133,74,62,37,6,NA,NA,NA,22,160,149,60,47,18,1,NA "PG",2003,NA,NA,17,190,153,96,65,32,7,NA,NA,NA,28,193,171,59,29,20,7,NA "PG",2004,NA,NA,28,153,138,90,61,43,6,NA,NA,NA,30,164,161,66,38,18,3,NA "PG",2005,NA,NA,28,183,205,108,94,48,12,NA,NA,NA,38,200,204,124,65,35,2,NA "PG",2006,NA,NA,32,221,220,122,84,48,3,NA,NA,NA,41,226,215,142,75,24,3,NA "PG",2007,NA,NA,16,178,171,112,67,50,6,NA,NA,NA,32,148,153,84,36,15,3,NA "PG",2008,NA,NA,65,250,207,160,95,58,12,NA,NA,NA,71,261,230,113,75,48,10,NA "PH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",1995,NA,NA,2,43,56,61,46,47,26,NA,NA,NA,1,20,32,26,20,19,11,NA "PH",1996,NA,NA,1,26,47,58,50,28,28,NA,NA,NA,1,11,20,19,15,5,9,NA "PH",1997,NA,NA,5,136,273,303,262,238,129,NA,NA,NA,6,80,111,131,110,98,70,NA "PH",1998,NA,NA,2,157,292,356,256,206,81,NA,NA,NA,4,76,109,119,106,69,56,NA "PH",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PH",2003,NA,NA,356,6360,9302,11458,10713,6445,3648,NA,NA,NA,300,3218,4551,4761,4000,2858,2018,NA "PH",2004,NA,NA,312,6792,10328,12229,11413,7526,4289,NA,NA,NA,291,3507,5090,5008,4327,3210,2183,NA "PH",2005,NA,NA,482,7358,11275,13253,12531,7646,4279,NA,NA,NA,374,3710,5268,5565,4603,3274,2029,NA "PH",2006,NA,NA,419,7878,11697,13478,12733,8074,4640,NA,NA,NA,379,4337,5746,5630,5007,3485,2237,NA "PH",2007,NA,NA,466,8524,11781,13810,12846,8481,4862,NA,NA,NA,380,4389,5594,5291,4612,3313,2217,NA "PH",2008,NA,NA,369,8735,11741,13529,12808,8249,4348,0,NA,NA,341,4529,5452,5123,4527,3086,2188,0 "PK",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1995,NA,NA,29,274,230,178,140,124,95,NA,NA,NA,85,375,381,267,178,143,79,NA "PK",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PK",1998,NA,NA,59,633,449,328,335,194,137,NA,NA,NA,159,735,507,260,209,90,50,NA "PK",1999,NA,NA,49,229,178,65,211,162,113,NA,NA,NA,33,259,373,97,146,243,114,NA "PK",2000,NA,NA,55,498,387,256,232,153,130,NA,NA,NA,130,591,416,274,163,103,56,NA "PK",2001,NA,NA,139,1191,891,673,664,496,306,NA,NA,NA,241,1007,915,650,421,252,142,NA "PK",2002,NA,NA,225,1964,1734,1270,1113,864,554,NA,NA,NA,512,2401,1917,1283,809,539,303,NA "PK",2003,NA,NA,284,2605,2346,1851,1652,1288,870,NA,NA,NA,622,3007,2471,1669,1280,845,503,NA "PK",2004,NA,NA,363,3812,3309,2676,2329,2057,1581,NA,NA,NA,950,4281,3656,2452,1794,1350,837,NA "PK",2005,NA,NA,621,5278,4759,4263,3834,3332,2453,NA,NA,NA,1447,6463,5611,3987,2866,2060,1338,NA "PK",2006,NA,NA,820,7290,6896,5594,5427,4392,3439,NA,NA,NA,1941,8410,7030,5404,3913,2802,1950,NA "PK",2007,NA,NA,1017,9598,8790,7717,7237,6258,5156,NA,NA,NA,2443,11522,9162,7352,5496,4065,2934,NA "PK",2008,NA,NA,1213,10521,9889,8428,8284,6890,5959,0,NA,NA,2696,12838,10489,8146,6387,4750,3547,NA "PL",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PL",1995,NA,NA,3,122,295,795,565,369,377,NA,NA,NA,4,129,163,225,111,107,414,NA "PL",1996,NA,NA,10,248,545,1365,1128,687,724,NA,NA,NA,9,180,324,415,202,159,823,NA "PL",1997,NA,NA,3,104,278,781,594,374,359,NA,NA,NA,7,91,155,205,96,94,345,NA "PL",1998,NA,NA,4,99,266,752,647,311,367,NA,NA,NA,5,102,161,219,127,81,361,NA "PL",1999,NA,NA,0,84,219,681,654,305,306,NA,NA,NA,10,95,113,178,129,81,322,NA "PL",2000,NA,NA,1,99,303,812,782,361,434,NA,NA,NA,1,99,158,211,170,82,421,NA "PL",2001,NA,NA,5,78,242,603,662,275,322,NA,NA,NA,4,99,148,170,124,63,360,NA "PL",2002,NA,NA,4,100,206,515,687,264,309,NA,NA,NA,7,90,135,157,148,70,368,NA "PL",2003,NA,NA,2,93,234,436,653,305,349,NA,NA,NA,3,91,108,152,132,65,358,NA "PL",2004,NA,NA,1,85,225,425,664,243,292,NA,NA,NA,2,92,136,126,118,79,285,NA "PL",2005,2,1,3,109,199,389,639,292,310,0,0,3,3,95,142,112,151,63,316,0 "PL",2006,1,0,1,92,215,390,649,357,285,0,0,1,1,83,142,112,118,72,318,0 "PL",2007,0,2,2,85,213,395,677,344,285,0,0,4,4,65,149,120,132,79,277,0 "PL",2008,3,3,6,66,175,397,653,355,239,0,0,3,3,65,106,112,132,77,264,0 "PR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PR",1995,NA,NA,4,3,12,20,15,9,19,NA,NA,NA,1,2,6,5,7,4,9,NA "PR",1996,NA,NA,2,1,20,18,15,10,16,NA,NA,NA,0,5,5,5,6,2,4,NA "PR",1997,NA,NA,1,4,13,18,19,13,18,NA,NA,NA,0,3,6,3,5,14,8,NA "PR",1998,NA,NA,1,9,11,16,12,14,12,NA,NA,NA,1,0,5,6,4,9,6,NA "PR",1999,NA,NA,0,5,9,22,9,11,20,NA,NA,NA,1,4,5,3,6,5,6,NA "PR",2000,NA,NA,0,1,4,19,9,10,14,NA,NA,NA,1,4,5,3,7,1,3,NA "PR",2001,NA,NA,0,5,4,11,12,6,11,NA,NA,NA,0,3,1,4,9,2,6,NA "PR",2002,NA,NA,2,4,7,12,10,9,7,NA,NA,NA,0,1,5,9,2,5,5,NA "PR",2003,NA,NA,0,3,5,8,10,12,9,NA,NA,NA,0,3,2,3,1,3,3,NA "PR",2004,NA,NA,0,2,7,8,7,12,7,NA,NA,NA,0,2,3,4,6,2,5,NA "PR",2005,NA,NA,0,4,4,7,9,7,7,NA,NA,NA,0,3,2,5,4,1,7,NA "PR",2006,NA,NA,1,4,7,6,13,9,7,NA,NA,NA,1,4,3,6,3,2,3,NA "PR",2007,0,0,0,6,2,9,8,10,6,NA,0,0,0,0,2,4,7,1,1,NA "PR",2008,0,0,0,2,4,3,13,11,6,0,0,0,0,1,4,3,2,3,0,0 "PS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",1995,NA,NA,1,2,0,0,1,0,3,NA,NA,NA,0,1,0,0,1,0,0,NA "PS",1996,NA,NA,0,2,2,2,2,2,4,NA,NA,NA,1,2,1,2,0,3,1,NA "PS",1998,NA,NA,NA,1,1,NA,2,NA,1,NA,NA,NA,NA,NA,NA,1,NA,1,1,NA "PS",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PS",2003,NA,NA,0,1,1,1,3,0,2,NA,NA,NA,0,1,0,0,3,0,3,NA "PS",2004,NA,NA,NA,1,1,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA "PS",2005,NA,NA,NA,1,NA,NA,1,3,NA,NA,NA,NA,NA,NA,1,NA,1,NA,NA,NA "PS",2006,0,0,0,1,3,4,1,1,2,NA,0,0,0,0,0,1,1,1,1,NA "PS",2007,0,0,1,1,3,2,0,3,1,NA,0,0,0,0,1,0,0,2,0,NA "PS",2008,0,0,0,1,1,3,2,2,2,0,0,0,0,2,0,0,1,2,0,0 "PT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PT",1995,NA,NA,11,215,363,328,200,173,164,NA,NA,NA,7,139,172,87,33,42,85,NA "PT",1996,NA,NA,12,176,359,331,192,158,203,NA,NA,NA,6,114,177,76,31,37,66,NA "PT",1997,NA,NA,8,135,313,303,217,130,84,NA,NA,NA,4,105,141,77,27,23,61,NA "PT",1998,NA,NA,8,154,367,362,232,141,173,NA,NA,NA,5,132,160,123,44,33,82,NA "PT",1999,NA,NA,13,113,288,378,232,146,189,NA,NA,NA,9,98,134,86,30,28,57,NA "PT",2000,NA,NA,8,147,375,349,208,140,140,NA,NA,NA,5,114,154,87,41,25,64,NA "PT",2001,NA,NA,9,156,329,356,218,109,140,NA,NA,NA,13,110,160,83,36,30,63,NA "PT",2002,NA,NA,12,156,342,411,272,129,171,NA,NA,NA,5,99,141,87,33,29,73,NA "PT",2003,NA,NA,11,134,297,333,227,99,148,NA,NA,NA,7,99,163,82,39,27,47,NA "PT",2004,NA,NA,4,97,258,336,216,98,115,NA,NA,NA,3,89,122,65,22,16,50,NA "PT",2005,3,2,5,85,227,284,181,90,93,5,3,4,7,67,109,66,29,11,42,1 "PT",2006,4,3,7,80,211,259,190,94,108,2,1,3,4,56,107,85,33,22,41,1 "PT",2007,1,3,4,69,178,268,188,82,112,0,0,2,2,49,95,61,27,12,26,0 "PT",2008,1,1,2,51,155,212,179,80,84,0,0,3,3,54,86,55,38,15,39,0 "PW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1995,NA,NA,0,2,3,0,2,1,0,NA,NA,NA,0,0,0,0,1,0,0,NA "PW",1996,NA,NA,0,1,0,0,0,2,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1997,NA,NA,0,0,1,2,0,2,0,NA,NA,NA,0,0,0,2,0,0,0,NA "PW",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",1999,NA,NA,0,2,2,5,1,2,1,NA,NA,NA,0,1,3,1,0,2,0,NA "PW",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",2002,NA,NA,1,0,1,1,2,2,1,NA,NA,NA,0,0,3,0,0,0,0,NA "PW",2003,NA,NA,0,0,1,1,1,1,0,NA,NA,NA,1,0,0,1,0,1,2,NA "PW",2004,NA,NA,NA,NA,NA,NA,1,2,NA,NA,NA,NA,NA,NA,NA,1,1,NA,NA,NA "PW",2005,NA,NA,NA,NA,2,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PW",2006,1,0,1,0,1,2,1,0,0,NA,0,0,0,0,1,0,0,0,0,NA "PW",2007,0,0,0,0,1,0,2,1,0,NA,0,0,0,0,0,0,0,1,0,NA "PW",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "PY",1995,NA,NA,18,64,71,96,74,57,61,NA,NA,NA,13,65,49,46,35,34,53,NA "PY",1996,NA,NA,17,84,100,79,91,63,49,NA,NA,NA,16,80,91,50,50,48,59,NA "PY",1997,NA,NA,25,100,82,75,76,58,74,NA,NA,NA,27,91,72,58,48,50,42,NA "PY",1998,NA,NA,14,100,101,96,82,66,85,NA,NA,NA,17,87,55,37,36,34,38,NA "PY",1999,NA,NA,19,113,157,111,114,69,67,NA,NA,NA,22,84,72,56,43,48,60,NA "PY",2000,NA,NA,16,112,103,105,86,80,71,NA,NA,NA,12,69,86,41,41,30,46,NA "PY",2001,NA,NA,18,114,106,85,89,74,73,NA,NA,NA,22,91,71,46,51,31,41,NA "PY",2002,NA,NA,20,119,127,112,105,78,78,NA,NA,NA,12,88,83,50,36,55,39,NA "PY",2003,NA,NA,11,163,174,109,123,81,91,NA,NA,NA,28,87,71,77,50,40,61,NA "PY",2004,NA,NA,18,160,132,120,107,103,121,NA,NA,NA,21,106,87,69,63,50,43,NA "PY",2005,NA,NA,23,168,185,136,117,87,99,NA,NA,NA,31,89,98,69,52,29,71,NA "PY",2006,6,14,20,188,221,143,150,124,116,NA,2,14,16,130,79,73,55,63,66,NA "PY",2007,3,11,14,171,221,152,135,94,100,NA,2,13,15,100,98,46,46,34,47,NA "PY",2008,3,8,11,238,227,138,138,91,90,4,1,9,10,92,87,60,61,42,56,0 "QA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "QA",1995,NA,NA,0,8,12,11,13,4,4,NA,NA,NA,1,2,3,1,0,0,1,NA "QA",1996,NA,NA,0,2,7,16,10,3,1,NA,NA,NA,0,0,1,0,2,1,0,NA "QA",1997,NA,NA,0,8,11,7,3,4,0,NA,NA,NA,0,2,1,0,1,1,1,NA "QA",1998,NA,NA,0,10,17,8,10,4,2,NA,NA,NA,1,4,2,3,2,3,2,NA "QA",1999,NA,NA,0,5,15,12,12,3,2,NA,NA,NA,0,2,3,3,1,0,0,NA "QA",2000,NA,NA,0,7,19,9,7,2,1,NA,NA,NA,0,0,4,3,1,0,0,NA "QA",2001,NA,NA,1,2,0,3,4,0,3,NA,NA,NA,0,1,0,0,1,1,1,NA "QA",2002,NA,NA,NA,8,12,9,8,1,3,NA,NA,NA,NA,6,13,1,3,NA,NA,NA "QA",2003,NA,NA,1,10,27,17,16,5,5,NA,NA,NA,0,4,6,0,2,0,2,NA "QA",2004,NA,NA,0,9,13,13,8,10,1,NA,NA,NA,0,6,5,4,2,2,0,NA "QA",2005,NA,NA,NA,19,15,17,19,5,1,NA,NA,NA,NA,5,10,2,1,2,0,NA "QA",2006,NA,NA,0,22,21,17,22,6,1,NA,NA,NA,0,6,11,7,1,0,1,NA "QA",2007,0,0,0,26,38,19,10,4,0,NA,0,0,1,4,6,5,3,0,0,NA "QA",2008,0,1,1,47,67,26,18,10,2,0,0,0,0,4,14,6,2,0,2,0 "RO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RO",1995,NA,NA,387,1662,2322,3608,2587,1751,784,NA,NA,NA,355,1352,1240,871,479,396,417,NA "RO",1996,NA,NA,35,851,1640,2606,1901,1236,500,NA,NA,NA,48,749,630,547,302,237,249,NA "RO",1997,NA,NA,31,1073,1618,2535,1990,1116,461,NA,NA,NA,53,735,745,545,318,200,245,NA "RO",1998,NA,NA,21,895,1624,2327,1762,1011,522,NA,NA,NA,43,725,692,448,300,219,232,NA "RO",1999,NA,NA,34,842,1524,2043,1653,918,472,NA,NA,NA,48,732,709,496,318,198,317,NA "RO",2000,NA,NA,46,832,1508,1799,1684,916,533,NA,NA,NA,53,701,766,484,341,207,321,NA "RO",2001,NA,NA,60,790,1670,1925,2000,975,685,NA,NA,NA,70,713,825,497,391,228,347,NA "RO",2002,NA,NA,102,742,1682,1854,1914,854,605,NA,NA,NA,74,669,839,435,370,202,351,NA "RO",2003,NA,NA,37,750,1565,1695,1953,836,594,NA,NA,NA,58,667,770,470,412,196,404,NA "RO",2004,NA,NA,31,718,1582,1798,1999,917,629,NA,NA,NA,59,682,797,546,458,230,432,NA "RO",2005,10,26,36,752,1511,1786,1999,952,638,4,8,47,55,758,780,493,374,219,442,2 "RO",2006,9,21,30,748,1306,1624,1738,847,580,0,12,25,37,669,763,448,334,224,465,1 "RO",2007,12,13,25,706,1149,1559,1704,889,611,NA,3,31,34,665,634,439,332,230,448,NA "RO",2008,8,14,22,671,1124,1656,1713,977,625,0,5,32,37,557,567,518,320,225,499,0 "RS",2005,0,3,3,62,96,118,156,112,132,0,0,6,6,69,76,55,49,22,149,0 "RS",2006,2,4,6,87,91,107,167,83,144,1,0,7,7,78,74,43,44,44,152,0 "RS",2007,0,0,0,42,59,102,163,94,106,0,0,2,2,38,52,43,43,26,135,0 "RS",2008,0,1,1,37,51,86,131,112,107,0,0,3,3,42,46,33,39,26,138,0 "RU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",1996,NA,NA,0,12,46,69,55,36,17,NA,NA,NA,0,8,6,9,9,4,12,NA "RU",1997,NA,NA,0,38,100,150,114,77,39,NA,NA,NA,0,20,30,30,20,13,29,NA "RU",1998,NA,NA,0,45,89,161,131,81,34,NA,NA,NA,2,24,24,33,20,15,24,NA "RU",1999,NA,NA,17,1858,4138,5037,3992,1618,859,NA,NA,NA,33,761,1022,989,600,313,507,NA "RU",2000,NA,NA,1,295,526,596,402,151,54,NA,NA,NA,1,43,73,74,38,31,44,NA "RU",2001,NA,NA,26,2124,4317,5912,5435,2026,941,NA,NA,NA,37,1019,1315,1374,1040,442,598,NA "RU",2002,NA,NA,0,2081,4497,6003,5810,2074,1061,NA,NA,NA,0,1120,1496,1492,1100,452,632,NA "RU",2003,NA,NA,0,2128,4812,5979,5924,2014,1058,NA,NA,NA,0,1156,1753,1537,1281,462,698,NA "RU",2004,NA,NA,18,2355,5079,6165,6053,2167,1184,NA,NA,NA,45,1399,2051,1695,1415,528,736,NA "RU",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RU",2006,NA,NA,18,2445,5774,5923,6342,2440,1120,NA,NA,NA,40,1514,2207,1703,1492,560,757,NA "RU",2007,3,17,20,2492,6008,5874,6363,2491,1291,NA,5,35,40,1444,2418,1684,1454,653,871,NA "RU",2008,1,11,12,2495,6475,6005,6300,2687,1147,0,0,33,33,1467,2569,1707,1530,687,835,0 "RW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1996,NA,NA,48,222,398,325,124,85,24,NA,NA,NA,45,229,278,161,47,23,5,NA "RW",1997,NA,NA,78,284,633,537,209,87,40,NA,NA,NA,78,274,343,175,67,37,10,NA "RW",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",1999,NA,NA,93,245,530,424,224,70,31,NA,NA,NA,59,189,262,166,49,31,5,NA "RW",2000,NA,NA,155,466,974,824,393,129,56,NA,NA,NA,105,396,473,309,109,52,14,NA "RW",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "RW",2002,NA,NA,13,96,167,184,79,38,13,NA,NA,NA,15,98,113,58,22,15,8,NA "RW",2003,NA,NA,32,364,517,424,270,83,48,NA,NA,NA,36,312,340,161,79,41,17,NA "RW",2004,NA,NA,52,561,722,595,353,171,64,NA,NA,NA,73,460,469,293,150,53,25,NA "RW",2005,NA,NA,45,494,713,592,408,142,71,NA,NA,NA,73,483,442,262,157,60,29,NA "RW",2006,NA,NA,25,598,769,591,407,182,100,NA,NA,NA,80,494,467,259,139,72,37,NA "RW",2007,7,44,51,523,805,556,352,168,91,NA,3,78,81,477,468,245,131,70,35,NA "RW",2008,4,29,33,528,811,573,373,191,125,NA,1,64,65,439,472,280,161,82,40,NA "SA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SA",1998,NA,NA,2,76,140,96,65,45,62,NA,NA,NA,16,82,86,32,27,28,40,NA "SA",1999,NA,NA,5,155,314,245,152,103,143,NA,NA,NA,39,182,201,94,74,73,80,NA "SA",2000,NA,NA,0,131,268,213,158,86,107,NA,NA,NA,28,172,182,79,51,50,70,NA "SA",2001,NA,NA,7,141,221,163,135,62,106,NA,NA,NA,28,161,163,88,44,39,44,NA "SA",2002,NA,NA,11,148,309,211,138,104,110,NA,NA,NA,28,186,194,72,60,51,52,NA "SA",2003,NA,NA,5,150,285,200,145,102,107,NA,NA,NA,18,210,181,75,58,51,59,NA "SA",2004,NA,NA,4,202,289,217,163,89,85,NA,NA,NA,24,204,171,80,53,47,64,NA "SA",2005,NA,NA,8,182,276,201,175,70,107,NA,NA,NA,31,205,184,98,73,51,61,NA "SA",2006,NA,NA,10,256,323,229,169,94,101,NA,NA,NA,39,226,211,107,56,37,56,NA "SA",2007,NA,NA,8,246,312,219,187,111,92,NA,NA,NA,30,298,197,110,71,39,64,NA "SA",2008,4,12,16,295,334,184,153,93,102,NA,2,31,33,274,271,137,85,48,83,NA "SB",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",1995,NA,NA,2,14,6,5,7,9,3,NA,NA,NA,3,17,11,7,12,13,0,NA "SB",1996,NA,NA,4,9,9,3,7,4,6,NA,NA,NA,5,5,9,8,12,6,3,NA "SB",1997,NA,NA,2,20,8,6,9,4,5,NA,NA,NA,3,19,14,10,8,4,1,NA "SB",1998,NA,NA,3,15,9,14,18,7,12,NA,NA,NA,2,14,16,10,11,7,2,NA "SB",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",2000,NA,NA,3,13,4,8,8,10,6,NA,NA,NA,8,15,13,7,7,5,2,NA "SB",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SB",2002,NA,NA,3,16,12,9,9,7,4,NA,NA,NA,0,16,15,4,2,7,4,NA "SB",2003,NA,NA,4,14,9,12,14,8,0,NA,NA,NA,9,14,14,16,13,10,1,NA "SB",2004,NA,NA,6,11,12,8,11,9,5,NA,NA,NA,10,22,20,13,14,8,3,NA "SB",2005,NA,NA,4,14,18,9,15,12,11,NA,NA,NA,9,23,21,12,11,9,1,NA "SB",2006,NA,NA,1,13,11,4,4,14,8,NA,NA,NA,4,16,14,9,14,8,4,NA "SB",2007,0,5,5,15,16,12,9,8,6,NA,0,5,5,12,25,9,10,5,5,NA "SB",2008,0,3,3,17,12,11,10,11,7,0,0,4,4,13,23,11,13,3,2,0 "SC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",1995,NA,NA,0,2,0,1,1,2,1,NA,NA,NA,0,0,1,0,0,0,1,NA "SC",1996,NA,NA,0,0,1,3,1,1,0,NA,NA,NA,0,1,0,0,0,1,1,NA "SC",1997,NA,NA,0,1,2,2,1,1,1,NA,NA,NA,0,1,0,0,0,1,1,NA "SC",1998,NA,NA,0,0,1,3,2,1,1,NA,NA,NA,0,0,0,1,0,1,0,NA "SC",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",2000,NA,NA,NA,NA,2,4,1,1,NA,NA,NA,NA,NA,NA,1,0,1,1,NA,NA "SC",2001,NA,NA,0,0,2,4,0,2,2,NA,NA,NA,0,0,2,0,1,0,1,NA "SC",2002,NA,NA,0,1,3,1,0,1,1,NA,NA,NA,0,0,0,0,0,0,2,NA "SC",2003,NA,NA,0,1,0,0,1,2,0,NA,NA,NA,0,0,0,0,0,0,0,NA "SC",2004,NA,NA,0,0,2,0,3,2,0,NA,NA,NA,0,0,1,2,2,1,0,NA "SC",2005,NA,NA,0,2,1,2,1,0,0,NA,NA,NA,0,0,1,1,0,0,0,NA "SC",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SC",2008,0,0,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0 "SD",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1995,NA,NA,250,604,796,634,486,362,337,NA,NA,NA,359,490,613,299,403,342,305,NA "SD",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SD",1998,NA,NA,805,1079,1533,1133,820,523,453,NA,NA,NA,680,875,1036,723,528,356,247,NA "SD",1999,NA,NA,842,1100,1456,1270,978,841,839,NA,NA,NA,903,1035,1111,1104,817,594,615,NA "SD",2000,NA,NA,785,1028,1511,1351,1119,638,677,NA,NA,NA,817,925,1134,905,771,327,323,NA "SD",2001,NA,NA,732,1018,1368,1085,777,462,301,NA,NA,NA,590,787,910,715,467,212,58,NA "SD",2002,NA,NA,559,1171,1494,1168,852,511,405,NA,NA,NA,498,865,1007,840,523,275,170,NA "SD",2003,NA,NA,489,1195,1644,1271,856,645,473,NA,NA,NA,443,881,1052,879,562,384,219,NA "SD",2004,NA,NA,537,1377,1791,1465,1035,697,467,NA,NA,NA,426,978,1187,897,601,400,237,NA "SD",2005,NA,NA,425,1358,1990,1541,1151,724,493,NA,NA,NA,381,1102,1203,978,729,411,244,NA "SD",2006,0,0,297,1351,1890,1504,1102,710,532,NA,0,0,312,965,1108,948,763,442,270,NA "SD",2007,NA,NA,288,1355,1903,1540,1102,729,556,NA,NA,NA,334,992,1318,990,729,467,324,NA "SD",2008,40,277,317,1241,1740,1301,903,610,534,0,41,280,321,850,962,841,601,344,235,0 "SE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SE",1995,NA,NA,1,5,12,8,5,4,27,NA,NA,NA,0,10,13,5,5,4,14,NA "SE",1996,NA,NA,1,11,8,3,5,5,17,NA,NA,NA,1,4,10,4,1,6,14,NA "SE",1997,NA,NA,0,6,9,13,5,0,16,NA,NA,NA,2,10,8,9,2,3,11,NA "SE",1998,NA,NA,2,6,9,3,8,3,15,NA,NA,NA,1,10,15,5,0,2,18,NA "SE",1999,NA,NA,0,13,18,12,5,2,22,NA,NA,NA,1,7,14,7,3,2,10,NA "SE",2000,NA,NA,0,9,10,12,11,4,25,NA,NA,NA,1,9,8,10,2,2,15,NA "SE",2001,NA,NA,1,10,15,5,3,1,23,NA,NA,NA,1,4,12,8,2,2,18,NA "SE",2002,NA,NA,0,6,15,10,8,7,8,NA,NA,NA,0,11,14,8,7,2,13,NA "SE",2003,NA,NA,0,8,14,12,4,5,20,NA,NA,NA,0,10,18,6,2,0,10,NA "SE",2004,NA,NA,1,10,19,8,8,12,13,NA,NA,NA,0,11,11,13,2,3,9,NA "SE",2005,0,0,0,7,21,16,10,5,16,0,0,1,1,10,15,12,5,3,13,0 "SE",2006,0,0,0,4,15,14,5,3,16,0,0,1,1,12,14,9,1,2,10,0 "SE",2007,0,0,0,7,20,10,5,3,9,0,0,1,1,5,11,8,4,1,12,0 "SE",2008,0,0,0,14,15,9,5,7,6,0,0,0,0,12,13,5,4,1,6,0 "SG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1995,NA,NA,0,9,40,60,62,70,94,NA,NA,NA,1,8,18,21,22,19,31,NA "SG",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SG",1997,NA,NA,0,8,27,49,60,88,101,NA,NA,NA,0,11,16,12,16,12,32,NA "SG",1998,NA,NA,1,9,36,70,63,81,104,NA,NA,NA,2,6,18,11,20,25,34,NA "SG",1999,NA,NA,0,18,23,41,72,55,124,NA,NA,NA,0,12,21,18,23,17,29,NA "SG",2000,NA,NA,1,8,9,34,51,26,64,NA,NA,NA,1,9,8,7,9,5,16,NA "SG",2001,NA,NA,1,6,19,39,70,66,76,NA,NA,NA,1,5,7,19,15,9,24,NA "SG",2002,NA,NA,0,14,28,73,88,65,130,NA,NA,NA,2,10,15,30,32,24,38,NA "SG",2003,NA,NA,1,17,28,68,96,80,133,NA,NA,NA,0,6,26,30,20,20,58,NA "SG",2004,NA,NA,1,12,32,56,83,75,119,NA,NA,NA,0,6,15,18,17,19,48,NA "SG",2005,NA,NA,0,8,25,61,94,96,118,NA,NA,NA,0,5,20,33,29,20,43,NA "SG",2006,1,1,2,7,31,67,107,75,106,NA,0,0,0,19,22,22,22,27,31,NA "SG",2007,0,0,0,15,18,63,98,80,105,NA,0,1,1,13,13,25,23,11,39,NA "SG",2008,0,0,0,10,21,46,106,94,127,0,0,0,0,9,16,20,26,17,33,0 "SI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SI",1995,NA,NA,1,13,39,63,36,26,27,NA,NA,NA,0,7,24,11,9,5,42,NA "SI",1996,NA,NA,0,5,27,46,37,28,13,NA,NA,NA,0,8,15,9,7,7,19,NA "SI",1997,NA,NA,0,4,16,33,19,15,20,NA,NA,NA,0,8,15,8,1,4,13,NA "SI",1998,NA,NA,0,5,22,27,19,13,14,NA,NA,NA,0,8,12,10,7,2,18,NA "SI",1999,NA,NA,0,3,21,40,27,11,15,NA,NA,NA,0,0,5,6,5,6,20,NA "SI",2000,NA,NA,0,3,11,36,22,14,17,NA,NA,NA,0,3,9,3,4,3,20,NA "SI",2001,NA,NA,0,4,11,30,27,11,7,NA,NA,NA,0,5,11,11,3,5,14,NA "SI",2002,NA,NA,0,8,11,25,26,14,9,NA,NA,NA,0,3,7,6,1,3,17,NA "SI",2003,NA,NA,0,3,9,23,22,7,15,NA,NA,NA,0,5,5,4,3,4,16,NA "SI",2004,NA,NA,0,5,7,10,10,8,13,NA,NA,NA,0,4,6,4,3,2,17,NA "SI",2005,0,0,0,4,10,16,15,11,14,0,0,0,0,4,4,6,5,4,16,0 "SI",2006,0,0,0,3,5,9,12,7,6,0,0,0,0,5,7,4,2,4,19,0 "SI",2007,0,0,0,0,7,15,14,12,9,0,0,0,0,1,5,6,2,3,16,0 "SI",2008,0,0,0,3,12,9,17,12,3,0,0,0,0,2,7,2,5,2,7,0 "SK",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SK",1995,NA,NA,4,18,44,123,108,63,152,NA,NA,NA,5,16,17,22,24,33,159,NA "SK",1996,NA,NA,2,16,42,64,105,61,134,NA,NA,NA,4,23,28,24,17,17,203,NA "SK",1997,NA,NA,1,2,24,54,38,31,40,NA,NA,NA,0,10,11,10,3,9,50,NA "SK",1998,NA,NA,0,5,30,53,50,37,35,NA,NA,NA,0,5,3,16,6,5,58,NA "SK",1999,NA,NA,1,2,19,42,51,19,29,NA,NA,NA,0,8,10,7,7,8,43,NA "SK",2000,NA,NA,2,6,15,31,50,16,32,NA,NA,NA,0,5,9,7,5,4,54,NA "SK",2001,NA,NA,0,8,13,30,48,26,22,NA,NA,NA,1,4,9,12,8,4,41,NA "SK",2002,NA,NA,0,4,18,35,40,21,26,NA,NA,NA,0,6,9,7,3,5,26,NA "SK",2003,NA,NA,1,6,8,31,36,19,25,NA,NA,NA,1,8,9,10,3,4,38,NA "SK",2004,NA,NA,0,2,17,30,30,12,21,NA,NA,NA,1,1,2,3,6,4,26,NA "SK",2005,0,0,0,3,13,16,25,25,20,0,0,0,0,1,8,9,5,6,27,0 "SK",2006,1,3,4,8,11,18,27,29,17,0,0,0,0,6,6,7,4,3,20,0 "SK",2007,0,0,0,8,10,18,51,15,23,0,0,1,1,5,3,5,6,3,28,0 "SK",2008,0,0,0,2,7,16,46,10,11,0,1,0,1,2,4,4,5,1,17,0 "SL",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",1995,NA,NA,10,184,305,201,99,47,22,NA,NA,NA,18,165,193,110,65,24,11,NA "SL",1996,NA,NA,23,249,450,310,180,79,51,NA,NA,NA,35,201,278,218,89,49,22,NA "SL",1997,NA,NA,14,230,470,359,182,89,47,NA,NA,NA,21,207,328,228,67,39,15,NA "SL",1998,NA,NA,14,226,445,338,191,78,42,NA,NA,NA,36,235,294,217,86,43,17,NA "SL",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SL",2000,NA,NA,18,287,486,361,190,113,47,NA,NA,NA,27,249,298,225,92,49,30,NA "SL",2001,NA,NA,19,268,546,406,230,123,51,NA,NA,NA,36,279,292,234,120,61,27,NA "SL",2002,NA,NA,23,317,561,427,246,102,58,NA,NA,NA,31,300,382,284,133,48,26,NA "SL",2003,NA,NA,19,351,564,481,264,149,77,NA,NA,NA,26,308,394,249,122,77,32,NA "SL",2004,NA,NA,19,417,659,581,364,153,130,NA,NA,NA,40,304,440,319,170,89,50,NA "SL",2005,NA,NA,45,490,792,651,397,226,124,NA,NA,NA,54,393,518,312,207,114,47,NA "SL",2006,NA,NA,43,485,851,709,446,216,166,NA,NA,NA,68,375,536,357,207,111,59,NA "SL",2007,1,44,45,538,1032,797,520,258,172,NA,0,74,74,398,568,468,255,143,79,NA "SL",2008,3,43,NA,625,1062,938,573,265,188,NA,1,53,NA,460,609,501,269,153,83,NA "SM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,0,1,0,0,0,0,NA "SM",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",2000,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",2003,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "SM",2004,NA,NA,0,0,0,0,0,0,0,NA,NA,NA,0,0,0,0,0,0,0,NA "SM",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SM",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SN",1995,NA,NA,94,717,1219,813,408,300,213,NA,NA,NA,84,428,461,283,203,126,72,NA "SN",1996,NA,NA,74,773,1281,973,474,277,264,NA,NA,NA,89,450,549,341,209,121,74,NA "SN",1997,NA,NA,64,753,1151,876,467,267,215,NA,NA,NA,75,421,509,292,191,87,62,NA "SN",1998,NA,NA,90,781,1208,856,453,250,215,NA,NA,NA,84,412,447,307,178,98,75,NA "SN",1999,NA,NA,50,721,1070,749,424,233,185,NA,NA,NA,58,441,434,298,184,106,58,NA "SN",2000,NA,NA,60,772,1297,857,470,279,189,NA,NA,NA,77,521,540,376,217,107,61,NA "SN",2001,NA,NA,77,908,1331,890,498,258,226,NA,NA,NA,90,540,531,333,204,113,95,NA "SN",2002,NA,NA,58,815,1271,813,488,279,212,NA,NA,NA,61,545,523,317,210,118,86,NA "SN",2003,NA,NA,50,1005,1438,896,531,293,250,NA,NA,NA,77,629,600,398,212,122,86,NA "SN",2004,NA,NA,60,1085,1464,915,506,264,213,NA,NA,NA,73,620,485,324,211,139,78,NA "SN",2005,NA,NA,71,1050,1561,904,533,274,236,NA,NA,NA,83,709,568,351,185,116,81,NA "SN",2006,NA,NA,60,1124,1606,919,553,292,230,NA,NA,NA,74,676,572,360,204,124,88,NA "SN",2007,NA,NA,57,1053,1722,875,549,329,251,NA,NA,NA,73,761,603,378,241,121,95,NA "SN",2008,2,65,67,1274,1767,907,593,351,228,0,1,78,79,816,659,368,230,148,97,0 "SO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SO",1995,NA,NA,46,334,730,201,127,278,109,NA,NA,NA,38,158,139,97,40,25,16,NA "SO",1996,NA,NA,45,439,557,263,153,82,63,NA,NA,NA,49,221,224,108,50,38,26,NA "SO",1997,NA,NA,72,565,658,311,187,172,112,NA,NA,NA,63,296,313,173,82,56,37,NA "SO",1998,NA,NA,99,541,599,337,198,145,126,NA,NA,NA,77,270,321,176,78,74,80,NA "SO",1999,NA,NA,136,643,678,383,175,175,124,NA,NA,NA,131,302,302,190,100,74,74,NA "SO",2000,NA,NA,113,740,724,408,254,195,142,NA,NA,NA,85,354,319,219,110,72,41,NA "SO",2001,NA,NA,125,899,880,476,310,257,196,NA,NA,NA,91,439,413,259,129,97,69,NA "SO",2002,NA,NA,119,922,821,478,307,219,176,NA,NA,NA,112,468,447,302,172,111,75,NA "SO",2003,NA,NA,118,1054,850,513,319,250,214,NA,NA,NA,106,535,462,333,171,161,104,NA "SO",2004,NA,NA,175,1228,1059,610,419,326,278,NA,NA,NA,129,676,618,428,266,157,110,NA "SO",2005,NA,NA,125,1343,1114,725,458,330,319,NA,NA,NA,169,752,636,436,292,212,157,NA "SO",2006,NA,NA,166,1377,1121,647,436,309,336,NA,NA,NA,170,668,628,432,269,171,131,NA "SO",2007,NA,NA,125,1239,1008,578,407,296,289,NA,NA,NA,135,602,520,378,243,181,129,NA "SO",2008,NA,NA,116,1273,1067,635,422,314,298,0,NA,NA,138,604,587,439,285,191,151,0 "SR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1996,NA,NA,1,5,11,11,0,4,6,NA,NA,NA,2,3,6,5,0,3,3,NA "SR",1997,NA,NA,0,6,7,3,2,0,2,NA,NA,NA,0,4,1,0,1,0,1,NA "SR",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",2000,NA,NA,1,6,6,3,2,0,4,NA,NA,NA,2,3,6,3,0,1,1,NA "SR",2001,NA,NA,1,2,7,3,2,4,5,NA,NA,NA,0,2,5,3,2,0,2,NA "SR",2002,NA,NA,2,1,12,10,2,3,2,NA,NA,NA,0,3,2,4,2,0,1,NA "SR",2003,NA,NA,0,5,1,13,6,1,6,NA,NA,NA,1,4,2,2,2,1,1,NA "SR",2004,NA,NA,0,6,8,14,6,2,4,NA,NA,NA,0,3,2,1,1,1,1,NA "SR",2005,NA,NA,0,7,8,12,6,3,4,NA,NA,NA,0,3,2,1,2,1,2,NA "SR",2006,1,4,5,6,13,9,4,1,7,NA,0,2,2,1,4,1,8,0,2,NA "SR",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SR",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ST",2000,NA,NA,1,5,11,4,7,3,10,NA,NA,NA,3,7,15,5,7,4,15,NA "ST",2001,NA,NA,0,7,14,6,6,5,12,NA,NA,NA,1,4,10,4,8,6,14,NA "ST",2002,NA,NA,1,7,6,2,2,2,2,NA,NA,NA,0,6,5,2,3,2,2,NA "ST",2003,NA,NA,1,2,4,5,3,0,1,NA,NA,NA,0,3,7,8,1,0,0,NA "ST",2004,NA,NA,3,5,7,6,5,2,3,NA,NA,NA,1,4,5,5,2,1,1,NA "ST",2005,NA,NA,2,5,7,6,4,5,2,NA,NA,NA,1,4,5,3,2,3,0,NA "ST",2006,0,0,0,5,8,4,2,1,2,NA,0,0,1,4,7,0,0,1,1,NA "ST",2007,0,0,0,4,12,8,4,4,0,NA,0,0,0,9,6,3,3,5,0,NA "ST",2008,NA,NA,1,5,13,5,6,1,0,0,NA,NA,2,5,6,6,2,0,0,0 "SV",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SV",1996,NA,NA,102,76,76,77,57,54,92,NA,NA,NA,102,76,62,43,49,38,61,NA "SV",1997,NA,NA,13,86,110,117,71,68,75,NA,NA,NA,17,67,72,44,33,42,45,NA "SV",1998,NA,NA,21,95,131,99,87,65,84,NA,NA,NA,21,81,93,53,40,43,71,NA "SV",1999,NA,NA,18,102,128,104,88,88,104,NA,NA,NA,20,81,73,61,47,44,65,NA "SV",2000,NA,NA,13,99,124,114,92,62,107,NA,NA,NA,28,81,76,63,63,39,47,NA "SV",2001,NA,NA,20,101,144,100,78,62,101,NA,NA,NA,22,68,86,59,59,53,50,NA "SV",2002,NA,NA,8,85,127,101,91,59,93,NA,NA,NA,6,80,84,61,49,51,85,NA "SV",2003,NA,NA,7,75,105,103,81,59,89,NA,NA,NA,7,70,71,47,48,44,64,NA "SV",2004,NA,NA,5,92,121,90,84,77,91,NA,NA,NA,15,64,73,55,44,48,67,NA "SV",2005,NA,NA,5,97,140,128,104,74,117,NA,NA,NA,6,85,82,59,50,42,70,NA "SV",2006,NA,NA,6,93,124,101,76,54,103,NA,NA,NA,7,71,80,49,50,38,61,NA "SV",2007,0,8,8,79,179,110,73,62,95,NA,0,4,4,63,85,50,45,33,56,NA "SV",2008,0,8,8,107,168,112,67,79,89,0,0,8,8,73,71,55,42,40,66,0 "SY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",1995,NA,NA,13,332,255,111,70,59,50,NA,NA,NA,22,158,97,53,44,37,20,NA "SY",1996,NA,NA,11,390,290,110,90,69,60,NA,NA,NA,12,200,107,57,51,45,31,NA "SY",1997,NA,NA,6,337,295,118,74,52,52,NA,NA,NA,23,201,112,47,31,36,18,NA "SY",1998,NA,NA,5,335,293,111,93,48,50,NA,NA,NA,20,197,99,43,49,18,21,NA "SY",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SY",2000,NA,NA,8,359,289,125,86,76,55,NA,NA,NA,23,195,101,53,46,38,28,NA "SY",2001,NA,NA,8,317,248,134,108,64,47,NA,NA,NA,26,210,116,56,50,42,28,NA "SY",2002,NA,NA,12,359,278,121,80,62,61,NA,NA,NA,23,182,116,53,43,31,26,NA "SY",2003,NA,NA,10,343,279,127,98,75,64,NA,NA,NA,26,242,99,68,48,33,33,NA "SY",2004,NA,NA,13,318,308,115,113,77,50,NA,NA,NA,20,230,121,46,56,59,35,NA "SY",2005,NA,NA,9,266,237,111,112,62,63,NA,NA,NA,27,182,108,59,59,32,23,NA "SY",2006,0,8,8,225,267,137,110,71,44,NA,0,18,18,195,109,42,53,39,34,NA "SY",2007,0,7,7,198,222,123,74,49,59,NA,0,14,14,148,106,41,43,30,41,NA "SY",2008,2,16,18,170,212,128,82,61,52,NA,0,30,30,149,80,48,32,29,25,NA "SZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1995,NA,NA,4,59,117,130,98,40,16,NA,NA,NA,5,52,57,39,29,8,6,NA "SZ",1996,NA,NA,79,39,250,335,263,200,120,NA,NA,NA,64,78,352,204,114,58,38,NA "SZ",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "SZ",2000,NA,NA,11,130,352,249,138,37,17,NA,NA,NA,10,198,298,62,62,24,5,NA "SZ",2001,NA,NA,16,180,468,374,238,70,34,NA,NA,NA,22,362,474,196,74,18,16,NA "SZ",2002,NA,NA,1,94,244,182,117,33,10,NA,NA,NA,9,236,274,127,50,13,9,NA "SZ",2003,NA,NA,15,120,298,171,96,48,19,NA,NA,NA,14,242,325,145,60,20,8,NA "SZ",2004,NA,NA,6,152,316,245,140,53,21,NA,NA,NA,17,271,381,182,74,19,14,NA "SZ",2005,NA,NA,9,162,406,285,139,57,27,NA,NA,NA,14,318,453,207,73,21,8,NA "SZ",2006,NA,NA,32,187,452,268,164,91,45,NA,NA,NA,35,367,464,245,107,48,25,NA "SZ",2007,2,29,NA,223,479,344,182,57,27,NA,5,42,NA,411,576,232,98,39,18,NA "SZ",2008,1,28,29,231,552,357,193,80,35,0,2,37,39,427,663,309,114,57,19,0 "TC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",2002,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA "TC",2003,NA,NA,0,0,2,0,0,0,0,NA,NA,NA,0,0,2,0,2,0,0,NA "TC",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",2006,0,0,0,1,1,0,0,0,0,NA,0,0,0,1,1,1,1,1,0,NA "TC",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TC",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",1999,NA,NA,20,172,414,957,477,42,4,NA,NA,NA,13,28,230,458,78,16,11,NA "TD",2002,NA,NA,24,90,1029,794,269,37,17,NA,NA,NA,18,28,495,500,187,18,11,NA "TD",2003,NA,NA,155,256,428,549,303,191,78,NA,NA,NA,112,206,363,497,259,151,51,NA "TD",2004,NA,NA,72,141,466,415,207,61,29,NA,NA,NA,41,89,317,262,129,25,16,NA "TD",2005,NA,NA,25,194,535,409,229,123,82,NA,NA,NA,28,148,298,211,148,59,27,NA "TD",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TD",2008,NA,NA,63,NA,NA,1543,584,NA,NA,NA,NA,NA,78,NA,NA,777,264,NA,NA,NA "TG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1995,NA,NA,7,95,151,123,82,64,49,NA,NA,NA,9,80,96,45,38,23,15,NA "TG",1996,NA,NA,11,95,153,134,89,37,50,NA,NA,NA,12,89,117,45,45,15,19,NA "TG",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",1998,NA,NA,13,85,177,136,86,48,36,NA,NA,NA,15,95,113,52,36,17,18,NA "TG",1999,NA,NA,11,92,169,124,80,42,37,NA,NA,NA,7,88,123,64,32,25,10,NA "TG",2000,NA,NA,4,101,168,144,109,48,39,NA,NA,NA,13,107,124,50,36,24,15,NA "TG",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TG",2002,NA,NA,10,140,239,166,104,55,40,NA,NA,NA,12,125,148,79,43,29,13,NA "TG",2003,NA,NA,10,126,229,192,120,66,57,NA,NA,NA,15,102,149,80,55,26,28,NA "TG",2004,NA,NA,9,145,286,233,143,69,66,NA,NA,NA,12,150,205,103,55,37,28,NA "TG",2005,NA,NA,11,177,320,283,125,79,69,NA,NA,NA,23,157,236,146,67,41,32,NA "TG",2006,NA,NA,15,174,358,344,183,94,79,NA,NA,NA,29,214,268,170,96,58,49,NA "TG",2007,NA,0,7,156,309,276,170,73,66,NA,NA,0,17,184,256,150,67,35,30,NA "TG",2008,NA,NA,15,194,379,338,214,113,78,0,NA,NA,29,202,302,170,94,47,59,0 "TH",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TH",1995,NA,NA,59,1191,2936,2948,2434,2607,2346,NA,NA,NA,52,741,888,782,936,1175,1178,NA "TH",1996,NA,NA,54,1088,2857,2496,1935,2004,1772,NA,NA,NA,50,598,844,683,718,918,980,NA "TH",1997,NA,NA,53,864,2336,2101,1488,1434,1326,NA,NA,NA,38,545,725,504,475,633,690,NA "TH",1998,NA,NA,11,427,1153,1098,892,945,985,NA,NA,NA,17,297,401,317,386,475,558,NA "TH",1999,NA,NA,20,791,2123,2015,1702,1705,1795,NA,NA,NA,30,511,771,676,750,879,1164,NA "TH",2000,NA,NA,27,859,2570,2380,2117,1908,2213,NA,NA,NA,32,624,1035,780,873,1016,1321,NA "TH",2001,NA,NA,37,1868,5192,4516,3269,2617,2912,NA,NA,NA,58,999,1550,1231,1251,1265,1777,NA "TH",2002,NA,NA,35,1352,3805,3699,3155,2556,3077,NA,NA,NA,61,897,1525,1212,1143,1307,1769,NA "TH",2003,NA,NA,41,1636,4615,4259,3497,2740,3241,NA,NA,NA,49,944,1678,1350,1279,1264,1866,NA "TH",2004,NA,NA,46,1421,4211,4542,3831,2787,3379,NA,NA,NA,50,951,1602,1335,1217,1203,1846,NA "TH",2005,NA,NA,44,1344,3814,4393,4003,2831,3407,NA,NA,NA,57,907,1662,1334,1367,1259,1938,NA "TH",2006,NA,NA,43,1276,3732,4664,4055,3084,3732,NA,NA,NA,65,884,1542,1379,1349,1287,1989,NA "TH",2007,NA,NA,48,1261,3398,4487,4168,3122,3748,NA,NA,NA,50,885,1481,1418,1302,1281,1938,NA "TH",2008,NA,NA,66,1222,3374,4425,4164,3167,3836,NA,NA,NA,77,865,1513,1345,1407,1276,2051,NA "TJ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",1996,NA,NA,4,22,25,23,12,12,4,NA,NA,NA,5,18,26,46,20,11,4,NA "TJ",1997,NA,NA,8,16,38,26,18,12,8,NA,NA,NA,7,17,33,24,17,12,9,NA "TJ",1998,NA,NA,9,67,90,48,18,22,10,NA,NA,NA,2,33,60,37,21,10,8,NA "TJ",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",2001,NA,NA,8,129,152,89,43,17,16,NA,NA,NA,0,61,83,62,25,11,8,NA "TJ",2002,NA,NA,7,134,133,66,45,28,19,NA,NA,NA,6,69,84,46,29,15,6,NA "TJ",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",2004,NA,NA,7,146,90,58,34,12,10,NA,NA,NA,11,77,59,41,23,17,16,NA "TJ",2005,0,8,8,308,279,164,104,54,48,0,0,26,26,225,185,151,89,43,53,0 "TJ",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TJ",2007,NA,NA,13,413,361,194,132,63,65,0,NA,NA,21,329,243,154,92,61,87,0 "TJ",2008,0,7,7,437,358,165,113,52,64,0,0,25,25,290,211,121,101,40,73,0 "TK",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TK",2007,0,0,0,0,0,0,0,0,0,NA,0,0,0,0,0,0,0,0,0,NA "TK",2008,NA,NA,NA,10,10,4,9,4,NA,0,NA,NA,NA,13,6,5,6,3,4,0 "TL",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TL",2002,NA,NA,13,119,145,119,107,58,35,NA,NA,NA,20,118,124,88,91,40,13,NA "TL",2003,NA,NA,5,130,135,107,98,66,41,NA,NA,NA,13,98,116,76,76,43,17,NA "TL",2004,NA,NA,5,133,134,95,99,65,48,NA,NA,NA,19,109,116,83,51,27,16,NA "TL",2005,NA,NA,8,136,149,116,119,52,47,NA,NA,NA,8,127,90,76,60,18,29,NA "TL",2006,NA,NA,1,128,115,103,75,48,49,NA,NA,NA,8,102,76,82,63,34,23,NA "TL",2007,NA,NA,4,128,129,89,77,69,65,NA,NA,NA,10,120,98,89,76,36,31,NA "TL",2008,NA,NA,6,115,88,93,73,52,54,0,NA,NA,4,87,72,85,67,35,36,0 "TM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TM",1995,NA,NA,1,11,188,0,79,30,0,NA,NA,NA,2,15,146,0,47,25,0,NA "TM",1996,NA,NA,0,15,114,101,44,37,23,NA,NA,NA,2,12,75,72,25,19,18,NA "TM",1997,NA,NA,2,14,208,77,90,69,10,NA,NA,NA,0,10,95,75,47,45,22,NA "TM",1998,NA,NA,0,100,210,131,64,48,12,NA,NA,NA,2,59,69,43,28,16,8,NA "TM",1999,NA,NA,5,129,225,174,77,43,17,NA,NA,NA,2,51,103,65,32,27,14,NA "TM",2000,NA,NA,16,103,185,144,127,31,21,NA,NA,NA,19,73,140,76,31,34,17,NA "TM",2001,NA,NA,1,169,295,196,93,46,21,NA,NA,NA,3,113,137,70,40,32,27,NA "TM",2002,NA,NA,2,164,249,224,112,38,21,NA,NA,NA,3,113,143,74,57,34,20,NA "TM",2003,NA,NA,3,148,265,212,112,37,14,NA,NA,NA,5,94,139,84,42,21,21,NA "TM",2004,NA,NA,0,129,250,174,123,37,12,NA,NA,NA,2,90,128,68,45,26,19,NA "TM",2005,0,2,2,148,181,146,97,51,13,0,1,2,3,100,101,72,46,27,8,0 "TM",2006,NA,NA,0,140,273,191,120,33,18,0,NA,NA,5,107,115,72,34,24,23,0 "TM",2007,0,2,2,176,272,224,137,56,23,0,0,6,6,129,132,81,69,36,35,0 "TM",2008,NA,NA,3,176,235,201,164,56,24,NA,NA,NA,4,126,146,81,56,29,30,NA "TN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TN",1998,NA,NA,11,134,206,155,108,88,95,NA,NA,NA,12,80,65,43,39,43,26,NA "TN",1999,NA,NA,18,137,221,181,106,88,129,NA,NA,NA,15,80,76,62,40,29,53,NA "TN",2000,NA,NA,16,139,208,156,109,65,101,NA,NA,NA,7,68,59,43,21,21,58,NA "TN",2001,NA,NA,23,141,185,157,103,83,100,NA,NA,NA,9,62,42,47,30,42,53,NA "TN",2002,NA,NA,1,112,184,153,99,67,65,NA,NA,NA,6,55,50,36,28,34,37,NA "TN",2003,NA,NA,3,100,164,129,95,66,74,NA,NA,NA,7,57,56,36,34,24,33,NA "TN",2004,NA,NA,9,100,181,128,123,62,91,NA,NA,NA,7,44,55,39,47,19,39,NA "TN",2005,NA,NA,5,103,172,133,115,53,81,NA,NA,NA,7,66,61,39,36,16,28,NA "TN",2006,NA,NA,5,125,174,119,111,58,85,NA,NA,NA,3,53,52,33,33,33,38,NA "TN",2007,NA,NA,1,124,171,117,104,71,75,NA,NA,NA,11,69,54,42,28,29,45,NA "TN",2008,NA,NA,6,130,188,118,125,80,59,NA,NA,NA,7,68,57,35,24,18,52,NA "TO",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",1995,NA,NA,0,1,0,0,0,1,2,NA,NA,NA,0,0,1,1,0,2,1,NA "TO",1996,NA,NA,0,1,1,2,0,6,0,NA,NA,NA,0,1,1,1,0,1,2,NA "TO",1997,NA,NA,0,2,1,1,0,1,2,NA,NA,NA,0,4,0,0,1,0,0,NA "TO",1998,NA,NA,0,2,3,1,2,1,2,NA,NA,NA,1,1,0,0,0,1,2,NA "TO",1999,NA,NA,0,1,0,0,1,3,2,NA,NA,NA,0,1,0,0,0,2,0,NA "TO",2000,NA,NA,NA,2,1,1,NA,1,5,NA,NA,NA,NA,1,1,1,NA,1,1,NA "TO",2001,NA,NA,0,0,1,0,0,2,1,NA,NA,NA,0,0,2,1,1,0,0,NA "TO",2002,NA,NA,NA,1,NA,NA,4,NA,10,NA,NA,NA,NA,1,1,1,NA,1,4,NA "TO",2003,NA,NA,0,1,1,1,1,0,2,NA,NA,NA,0,1,0,1,1,2,0,NA "TO",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TO",2005,NA,NA,0,2,1,0,2,1,0,NA,NA,NA,0,2,1,0,0,2,0,NA "TO",2006,0,0,0,1,0,0,1,2,4,NA,0,0,0,1,1,2,0,0,2,NA "TO",2007,0,0,0,2,1,0,0,1,5,NA,0,0,0,3,1,1,0,0,0,NA "TO",2008,0,0,0,2,0,2,2,1,1,0,0,0,0,0,0,0,1,2,0,0 "TR",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TR",2004,NA,NA,0,50,38,50,41,28,19,NA,NA,NA,2,24,21,8,4,7,6,NA "TR",2005,1,32,33,1148,1295,1028,963,534,429,0,2,48,50,699,474,243,175,166,213,0 "TR",2006,2,38,40,1212,1391,1003,1045,575,473,0,4,52,56,769,507,235,155,149,256,0 "TR",2007,13,37,50,1091,1245,984,978,571,512,0,2,61,63,708,531,246,165,128,255,0 "TR",2008,7,41,48,940,1090,953,947,607,453,0,5,52,57,653,485,233,152,139,236,0 "TT",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1995,NA,NA,2,6,15,10,12,7,4,NA,NA,NA,0,6,4,2,5,3,0,NA "TT",1996,NA,NA,0,4,7,9,9,6,6,NA,NA,NA,0,5,5,5,1,1,1,NA "TT",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TT",1998,NA,NA,0,9,12,21,14,9,8,NA,NA,NA,1,5,3,5,2,5,4,NA "TT",1999,NA,NA,0,11,18,13,8,5,6,NA,NA,NA,0,4,6,7,3,4,1,NA "TT",2000,NA,NA,0,7,18,27,17,7,7,NA,NA,NA,0,5,7,9,5,2,4,NA "TT",2001,NA,NA,5,10,21,36,24,17,18,NA,NA,NA,5,10,11,15,9,9,8,NA "TT",2002,NA,NA,0,8,13,20,12,12,3,NA,NA,NA,0,4,11,3,2,0,7,NA "TT",2003,NA,NA,0,9,13,10,13,10,6,NA,NA,NA,1,2,2,0,8,1,2,NA "TT",2004,NA,NA,NA,3,10,24,7,10,7,NA,NA,NA,2,3,8,1,5,1,NA,NA "TT",2005,NA,NA,0,10,11,13,21,10,3,NA,NA,NA,0,4,9,3,5,4,3,NA "TT",2006,NA,2,2,7,27,23,20,16,12,NA,NA,1,1,3,10,5,4,8,23,NA "TT",2007,0,1,1,10,16,21,28,18,5,NA,0,0,0,5,7,7,4,3,5,NA "TT",2008,0,2,2,9,15,19,34,29,14,0,1,0,1,11,12,4,8,4,7,0 "TV",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1995,NA,NA,1,0,1,0,0,1,0,NA,NA,NA,0,1,1,0,0,1,0,NA "TV",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",1998,NA,NA,1,NA,3,2,NA,1,1,NA,NA,NA,6,NA,1,1,1,NA,1,NA "TV",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",2003,NA,NA,4,2,0,1,6,0,0,NA,NA,NA,0,3,0,1,0,0,0,NA "TV",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TV",2005,NA,NA,NA,NA,NA,NA,1,1,NA,NA,NA,NA,NA,1,NA,NA,NA,2,NA,NA "TV",2006,7,0,0,1,0,0,0,0,0,NA,7,0,0,1,0,1,1,0,0,NA "TV",2007,NA,NA,1,1,0,2,0,0,2,NA,NA,NA,2,0,0,0,1,3,0,NA "TV",2008,0,2,2,2,1,0,1,0,0,0,0,0,0,1,2,2,1,0,0,0 "TZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "TZ",1995,NA,NA,183,2108,4091,2916,1754,1007,640,NA,NA,NA,201,1904,2532,1324,735,380,179,NA "TZ",1996,NA,NA,171,2176,4275,3107,1843,1109,656,NA,NA,NA,221,2087,2885,1461,806,472,203,NA "TZ",1997,NA,NA,188,2210,4538,3066,1090,1134,699,NA,NA,NA,251,2146,2876,1502,908,501,198,NA "TZ",1998,NA,NA,198,2528,4910,3400,1973,1112,767,NA,NA,NA,240,2234,3243,1686,835,466,241,NA "TZ",1999,NA,NA,170,2422,4887,3401,2068,1160,823,NA,NA,NA,230,2160,3469,1724,876,501,232,NA "TZ",2000,NA,NA,200,2357,4836,3430,2022,1202,834,NA,NA,NA,257,2106,3426,1738,868,494,269,NA "TZ",2001,NA,NA,212,2302,4912,3545,2031,1136,930,NA,NA,NA,312,2117,3609,1847,891,522,319,NA "TZ",2002,NA,NA,187,2309,4814,3525,2075,1211,944,NA,NA,NA,241,1927,3511,1706,907,475,304,NA "TZ",2003,NA,NA,181,2172,4964,3728,2166,1237,1025,NA,NA,NA,244,2063,3504,1833,929,509,344,NA "TZ",2004,NA,NA,208,2216,5203,3884,2254,1272,1129,NA,NA,NA,280,1996,3537,1960,1011,544,329,NA "TZ",2005,NA,NA,190,2062,4939,4025,2310,1279,1054,NA,NA,NA,271,1852,3521,1892,968,547,354,NA "TZ",2006,NA,NA,204,2060,4926,3832,2154,1348,1029,NA,NA,NA,293,1745,3326,1970,995,507,335,NA "TZ",2007,NA,NA,189,2021,4665,3855,2231,1317,1066,NA,NA,NA,238,1735,3388,1945,947,535,388,NA "TZ",2008,NA,NA,191,1963,4595,3874,2349,1230,1077,NA,NA,NA,233,1663,3152,1901,964,564,415,NA "UA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",1995,NA,NA,10,385,1076,2064,1515,1087,437,NA,NA,NA,21,314,380,327,182,185,280,NA "UA",1996,NA,NA,9,569,1199,2318,1704,1264,544,NA,NA,NA,13,379,410,397,196,192,370,NA "UA",1997,NA,NA,12,623,1310,2107,1718,1141,555,NA,NA,NA,22,383,474,359,256,126,377,NA "UA",1998,NA,NA,24,687,1500,2460,1873,1140,576,NA,NA,NA,36,468,556,431,248,194,393,NA "UA",1999,NA,NA,11,661,1463,2351,1825,1067,557,NA,NA,NA,25,485,577,478,297,222,393,NA "UA",2000,NA,NA,21,693,1552,2385,2007,1062,532,NA,NA,NA,41,487,590,447,298,218,405,NA "UA",2001,NA,NA,9,757,1721,2720,2393,1050,559,NA,NA,NA,18,544,649,525,354,235,418,NA "UA",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",2003,NA,NA,10,850,2033,2808,2634,983,617,NA,NA,NA,29,514,745,557,363,221,421,NA "UA",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UA",2006,NA,NA,8,926,2522,2979,2714,1087,568,0,NA,NA,16,600,909,704,446,246,481,0 "UA",2007,5,9,14,1556,4507,5206,5024,2130,1090,0,0,20,7,982,1661,1314,855,438,861,0 "UA",2008,1,8,9,901,2696,2859,2769,1140,574,NA,4,20,24,585,979,762,544,255,477,NA "UG",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UG",1995,NA,NA,370,1193,2491,1797,1115,602,323,NA,NA,NA,402,1376,1845,1104,635,312,113,NA "UG",1996,NA,NA,372,1271,2706,2026,1252,646,353,NA,NA,NA,455,1482,2099,1246,728,379,160,NA "UG",1997,NA,NA,340,1485,3278,2919,1439,733,353,NA,NA,NA,375,1700,2489,1368,812,379,131,NA "UG",1998,NA,NA,334,1512,3672,2491,1429,676,428,NA,NA,NA,467,1682,2760,1441,744,395,191,NA "UG",1999,NA,NA,310,1510,3475,2526,1354,613,413,NA,NA,NA,434,1654,2591,1415,680,331,162,NA "UG",2000,NA,NA,283,1511,3497,2479,1279,607,395,NA,NA,NA,400,1649,2782,1510,671,316,163,NA "UG",2001,NA,NA,231,1461,3483,2540,1242,638,392,NA,NA,NA,334,1603,2656,1528,703,292,180,NA "UG",2002,NA,NA,259,1503,3783,2865,1399,723,465,NA,NA,NA,371,1689,3011,1708,765,374,184,NA "UG",2003,NA,NA,261,1643,4142,3011,1578,719,501,NA,NA,NA,377,1770,3176,1815,749,356,214,NA "UG",2004,NA,NA,284,1803,4222,3269,1599,810,525,NA,NA,NA,371,1803,3110,1780,812,358,193,NA "UG",2005,NA,NA,257,1598,4075,3209,1576,725,539,NA,NA,NA,371,1811,3099,1800,818,389,257,NA "UG",2006,NA,NA,255,1624,4084,3391,1591,718,511,NA,NA,NA,363,1792,2909,1736,812,332,238,NA "UG",2007,NA,NA,234,1741,4406,3551,1681,766,505,NA,NA,NA,343,1874,3008,1742,824,382,246,NA "UG",2008,0,269,269,1953,4697,3922,1981,875,565,0,0,382,382,2006,2985,1749,862,314,206,0 "US",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "US",1995,NA,NA,19,355,876,1417,1121,742,1099,NA,NA,NA,26,280,579,499,285,202,591,NA "US",1996,NA,NA,15,333,815,1219,1073,678,1007,NA,NA,NA,21,289,487,478,279,217,541,NA "US",1997,NA,NA,12,330,701,1127,979,679,944,NA,NA,NA,28,269,449,447,254,201,514,NA "US",1998,NA,NA,10,321,663,1009,1007,628,914,NA,NA,NA,15,269,425,424,267,179,492,NA "US",1999,NA,NA,18,331,616,1011,930,601,801,NA,NA,NA,16,232,391,394,245,244,444,NA "US",2000,NA,NA,6,365,602,906,904,577,738,NA,NA,NA,14,246,376,349,253,152,396,NA "US",2001,NA,NA,17,320,613,824,876,524,649,NA,NA,NA,21,239,410,346,247,176,389,NA "US",2002,NA,NA,14,343,562,813,795,490,592,NA,NA,NA,15,233,423,362,255,167,370,NA "US",2003,NA,NA,11,365,526,754,828,487,650,NA,NA,NA,12,277,353,310,269,169,354,NA "US",2004,NA,NA,12,362,547,728,829,504,582,NA,NA,NA,19,265,339,302,252,166,344,NA "US",2005,NA,NA,14,383,535,666,767,499,624,NA,NA,NA,11,241,348,276,242,161,322,NA "US",2006,4,8,12,388,568,659,759,531,596,NA,2,9,11,257,384,263,212,146,303,NA "US",2007,4,8,12,414,490,572,744,533,562,NA,2,10,12,257,338,260,225,135,308,NA "US",2008,4,7,11,375,513,495,725,526,561,0,4,18,22,220,329,269,224,172,300,0 "UY",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UY",1995,NA,NA,4,28,40,35,49,38,50,NA,NA,NA,2,21,26,18,12,9,17,NA "UY",1996,NA,NA,4,34,43,58,59,53,42,NA,NA,NA,4,24,35,17,21,10,22,NA "UY",1997,NA,NA,3,37,44,53,53,55,53,NA,NA,NA,5,26,28,29,12,8,17,NA "UY",1998,NA,NA,2,30,47,52,47,38,39,NA,NA,NA,2,30,29,15,14,6,23,NA "UY",1999,NA,NA,1,45,48,42,46,48,41,NA,NA,NA,4,20,25,33,14,11,14,NA "UY",2000,NA,NA,0,36,48,45,41,30,34,NA,NA,NA,2,28,22,21,13,12,16,NA "UY",2001,NA,NA,2,33,38,49,42,31,44,NA,NA,NA,4,25,31,7,15,3,16,NA "UY",2002,NA,NA,1,33,33,37,36,23,32,NA,NA,NA,1,25,25,20,10,11,21,NA "UY",2003,NA,NA,3,46,50,35,42,38,26,NA,NA,NA,1,28,24,13,13,6,14,NA "UY",2004,NA,NA,1,38,59,53,48,26,40,NA,NA,NA,2,34,25,12,17,11,7,NA "UY",2005,NA,NA,1,42,48,39,45,34,36,NA,NA,NA,1,33,30,17,9,8,12,NA "UY",2006,NA,NA,1,38,53,34,30,38,29,NA,NA,NA,4,21,19,11,6,11,10,NA "UY",2007,NA,NA,1,39,69,37,50,39,39,NA,NA,NA,1,23,26,22,14,7,13,NA "UY",2008,0,1,1,49,71,64,45,28,34,0,0,4,4,26,35,26,15,13,13,0 "UZ",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1996,NA,NA,2,96,1042,650,0,196,0,NA,NA,NA,5,87,799,324,0,149,0,NA "UZ",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "UZ",1998,NA,NA,0,6,5,0,1,1,0,NA,NA,NA,0,9,9,4,2,1,1,NA "UZ",1999,NA,NA,4,429,926,519,262,146,100,NA,NA,NA,11,346,647,339,186,136,124,NA "UZ",2000,NA,NA,6,351,749,510,346,213,107,NA,NA,NA,11,261,547,288,213,112,111,NA "UZ",2001,NA,NA,7,390,905,523,396,253,133,NA,NA,NA,21,337,631,338,267,216,181,NA "UZ",2002,NA,NA,10,330,481,318,178,87,111,NA,NA,NA,18,277,394,214,127,96,125,NA "UZ",2003,NA,NA,9,487,828,595,412,253,220,NA,NA,NA,29,360,588,353,210,172,174,NA "UZ",2004,NA,NA,23,512,835,607,502,275,252,NA,NA,NA,31,430,600,341,274,211,226,NA "UZ",2005,1,24,25,596,831,723,522,263,313,NA,1,39,40,538,597,375,288,217,367,NA "UZ",2006,8,11,19,568,807,717,565,268,329,NA,5,36,41,544,597,346,327,224,421,NA "UZ",2007,0,18,18,569,768,579,583,282,380,0,1,24,25,485,507,342,255,235,436,0 "UZ",2008,3,7,10,515,688,572,544,287,369,NA,2,21,23,427,479,309,273,227,394,NA "VC",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1998,NA,NA,0,0,2,0,1,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",2000,NA,NA,0,1,0,4,2,0,1,NA,NA,NA,1,0,0,0,0,0,0,NA "VC",2001,NA,NA,NA,NA,NA,1,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",2002,NA,NA,NA,NA,NA,1,1,2,2,NA,NA,NA,NA,NA,1,NA,NA,NA,1,NA "VC",2003,NA,NA,NA,NA,NA,2,NA,1,NA,NA,NA,NA,NA,1,NA,1,NA,NA,1,NA "VC",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VC",2005,NA,NA,0,0,0,2,1,0,2,NA,NA,NA,0,0,1,0,1,0,0,NA "VC",2006,NA,NA,NA,NA,NA,NA,NA,4,2,NA,NA,NA,NA,NA,NA,NA,NA,NA,2,NA "VC",2007,0,0,0,0,1,3,0,1,0,NA,0,0,0,0,0,0,0,0,0,NA "VC",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",1999,NA,NA,32,378,452,420,368,283,346,NA,NA,NA,28,283,315,195,169,134,267,NA "VE",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VE",2002,NA,NA,19,339,429,425,380,246,313,NA,NA,NA,42,274,280,218,158,123,198,NA "VE",2003,NA,NA,39,361,459,453,405,284,316,NA,NA,NA,46,340,355,240,204,140,240,NA "VE",2004,NA,NA,24,373,454,459,407,272,316,NA,NA,NA,36,311,324,239,184,135,242,NA "VE",2005,NA,NA,35,312,395,413,402,265,332,NA,NA,NA,37,351,299,267,183,146,216,NA "VE",2006,1,9,10,323,405,413,422,267,320,NA,2,40,42,322,297,188,173,140,225,NA "VE",2007,0,17,17,324,382,390,389,272,295,NA,0,40,40,276,271,199,160,147,230,NA "VE",2008,0,18,18,364,358,326,389,271,285,0,0,25,25,309,272,228,171,146,182,0 "VG",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2000,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2002,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1,NA "VG",2003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2004,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA,NA,NA "VG",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VG",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1995,NA,NA,0,0,0,1,1,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",1996,NA,NA,0,0,1,1,0,1,0,NA,NA,NA,0,0,1,0,0,0,1,NA "VI",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VI",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VN",1996,NA,NA,92,1994,5716,7137,5170,5839,6292,NA,NA,NA,91,1127,2606,3045,2504,3360,3938,NA "VN",1997,NA,NA,103,2162,6427,8363,5820,5892,6989,NA,NA,NA,73,1163,2809,3302,2590,3614,4340,NA "VN",1998,NA,NA,56,2441,6567,8765,6143,5925,7274,NA,NA,NA,60,1344,2749,3102,2576,3296,4575,NA "VN",1999,NA,NA,58,2254,6355,8392,6465,5530,7371,NA,NA,NA,68,1361,2511,3029,2549,3034,4828,NA "VN",2000,NA,NA,51,2367,6147,8209,6713,5150,7712,NA,NA,NA,64,1334,2320,2754,2594,2847,4907,NA "VN",2001,NA,NA,39,2756,6319,8457,7054,5205,7643,NA,NA,NA,48,1390,2357,2656,2574,2530,5174,NA "VN",2002,NA,NA,57,3250,6762,8855,8040,5162,8184,NA,NA,NA,68,1571,2357,2508,2619,2409,4969,NA "VN",2003,NA,NA,49,3475,7036,8486,7965,5066,7793,NA,NA,NA,66,1659,2262,2327,2574,2283,4896,NA "VN",2004,NA,NA,54,3486,7364,9110,8743,5257,8206,NA,NA,NA,66,1740,2398,2218,2551,2226,4970,NA "VN",2005,NA,NA,54,3408,7105,8738,8606,4958,7573,NA,NA,NA,47,1747,2293,2116,2298,2023,4604,NA "VN",2006,NA,NA,49,3761,7549,8931,8717,5037,7408,NA,NA,NA,62,1827,2381,2036,2283,1996,4400,NA "VN",2007,NA,NA,48,3587,7431,8391,8451,5046,7026,NA,NA,NA,59,1939,2354,1923,2170,1891,4144,NA "VN",2008,NA,NA,36,3401,7148,8230,8811,5158,6667,0,NA,NA,48,1993,2416,1820,2087,1858,3811,0 "VU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1995,NA,NA,0,6,2,5,3,4,0,NA,NA,NA,0,5,0,2,3,0,0,NA "VU",1996,NA,NA,2,4,2,6,4,4,1,NA,NA,NA,2,10,3,5,3,4,0,NA "VU",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "VU",1998,NA,NA,2,4,5,1,0,2,2,NA,NA,NA,2,5,9,4,1,0,1,NA "VU",1999,NA,NA,0,0,4,1,2,0,0,NA,NA,NA,0,2,10,4,1,0,0,NA "VU",2000,NA,NA,2,7,5,1,10,5,2,NA,NA,NA,5,3,15,7,3,3,1,NA "VU",2001,NA,NA,1,7,5,4,8,6,1,NA,NA,NA,1,10,4,3,2,1,4,NA "VU",2002,NA,NA,0,7,2,3,10,2,1,NA,NA,NA,0,3,1,5,0,3,1,NA "VU",2003,NA,NA,1,2,4,7,5,2,3,NA,NA,NA,0,4,4,3,2,1,2,NA "VU",2004,NA,NA,1,7,11,2,6,3,5,NA,NA,NA,3,5,8,2,2,2,2,NA "VU",2005,NA,NA,1,4,5,5,0,4,1,NA,NA,NA,0,5,1,2,4,1,2,NA "VU",2006,NA,0,1,5,3,1,4,4,0,NA,NA,0,2,7,9,2,4,0,0,NA "VU",2007,NA,NA,1,3,2,4,2,2,2,NA,NA,NA,1,6,8,1,6,1,2,NA "VU",2008,0,1,NA,4,4,3,5,4,3,0,0,4,NA,3,4,1,3,5,1,0 "WF",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",1996,NA,NA,0,1,1,0,0,0,0,NA,NA,NA,0,1,3,1,1,0,0,NA "WF",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0,0,0,0,0,0,1,NA "WF",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",2002,NA,NA,NA,1,NA,1,1,NA,1,NA,NA,NA,NA,NA,NA,NA,3,2,1,NA "WF",2003,NA,NA,0,0,2,2,2,0,0,NA,NA,NA,0,0,1,0,0,0,0,NA "WF",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",2005,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",2006,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WF",2007,0,0,0,0,0,0,1,0,0,NA,0,0,0,0,0,0,0,0,0,NA "WF",2008,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",1995,NA,NA,0,1,1,1,0,3,2,NA,NA,NA,1,2,2,0,0,1,1,NA "WS",1996,NA,NA,0,0,0,0,0,1,2,NA,NA,NA,0,0,3,2,2,0,0,NA "WS",1997,NA,NA,0,1,4,1,0,1,1,NA,NA,NA,0,2,1,1,0,2,0,NA "WS",1998,NA,NA,1,1,1,0,1,1,0,NA,NA,NA,0,1,1,0,0,0,0,NA "WS",1999,NA,NA,0,1,2,0,1,1,4,NA,NA,NA,0,3,2,1,0,0,2,NA "WS",2000,NA,NA,0,3,1,1,1,2,1,NA,NA,NA,0,2,1,1,0,0,0,NA "WS",2001,NA,NA,1,3,1,1,0,0,1,NA,NA,NA,0,1,1,2,1,1,1,NA "WS",2002,NA,NA,0,1,2,0,1,1,1,NA,NA,NA,1,4,5,0,2,0,0,NA "WS",2003,NA,NA,NA,2,NA,NA,NA,1,NA,NA,NA,NA,NA,2,2,2,NA,2,1,NA "WS",2004,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",2005,NA,NA,0,4,0,1,1,0,0,NA,NA,NA,0,2,0,2,0,1,0,NA "WS",2006,NA,NA,NA,3,2,1,1,1,2,NA,1,NA,NA,3,NA,NA,1,NA,NA,NA "WS",2007,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "WS",2008,0,0,0,1,0,0,0,1,0,NA,0,0,0,1,1,1,0,0,1,NA "YE",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YE",1995,NA,NA,57,400,605,256,201,148,45,NA,NA,NA,83,420,720,348,200,106,92,NA "YE",1996,NA,NA,15,91,92,71,45,15,12,NA,NA,NA,14,89,100,73,41,14,11,NA "YE",1997,NA,NA,87,307,1249,329,213,165,34,NA,NA,NA,196,872,449,474,259,71,13,NA "YE",1998,NA,NA,83,718,698,491,271,160,115,NA,NA,NA,115,689,632,400,294,158,72,NA "YE",1999,NA,NA,96,552,531,390,245,161,85,NA,NA,NA,111,557,532,426,244,120,80,NA "YE",2000,NA,NA,110,789,689,493,314,255,127,NA,NA,NA,161,799,627,517,345,247,92,NA "YE",2001,NA,NA,82,695,631,491,350,252,114,NA,NA,NA,154,647,562,452,293,192,53,NA "YE",2002,NA,NA,266,650,559,377,265,148,117,NA,NA,NA,163,500,443,334,244,122,71,NA "YE",2003,NA,NA,40,581,587,399,250,154,103,NA,NA,NA,74,470,426,317,204,114,74,NA "YE",2004,NA,NA,49,571,559,377,214,139,76,NA,NA,NA,72,442,376,269,160,86,44,NA "YE",2005,NA,NA,48,493,553,366,242,149,78,NA,NA,NA,44,426,410,265,181,85,39,NA "YE",2006,NA,NA,29,535,555,358,246,143,103,NA,NA,NA,55,435,358,244,166,73,42,NA "YE",2007,NA,NA,23,488,626,379,252,165,119,NA,NA,NA,50,430,374,272,189,113,57,NA "YE",2008,NA,NA,29,547,541,316,241,155,119,0,NA,NA,57,473,455,265,179,102,61,0 "YU",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1995,NA,NA,10,108,204,317,296,350,386,NA,NA,NA,11,127,167,133,83,158,275,NA "YU",1996,NA,NA,45,207,310,461,396,389,474,NA,NA,NA,57,192,159,183,152,217,384,NA "YU",1997,NA,NA,45,136,310,450,415,410,463,NA,NA,NA,30,146,274,254,170,239,399,NA "YU",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "YU",2001,NA,NA,3,52,48,44,34,31,18,NA,NA,NA,5,49,46,23,25,23,20,NA "YU",2002,NA,NA,7,37,53,44,29,22,33,NA,NA,NA,9,46,48,19,17,19,19,NA "YU",2003,NA,NA,1,51,64,70,113,54,61,NA,NA,NA,1,44,58,38,28,20,54,NA "YU",2004,NA,NA,4,61,106,125,182,128,157,NA,NA,NA,3,66,89,75,48,41,145,NA "ZA",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZA",1999,NA,NA,52,624,1697,1834,966,434,221,NA,NA,NA,75,972,1384,779,314,159,110,NA "ZA",2000,NA,NA,116,723,1999,2135,1146,435,212,NA,NA,NA,122,1283,1716,933,423,167,80,NA "ZA",2001,NA,NA,163,1490,3844,3540,1838,690,255,NA,NA,NA,275,2237,3220,1748,781,295,168,NA "ZA",2002,NA,NA,3081,5147,13681,13215,7038,2342,942,NA,NA,NA,3261,7081,11312,6080,2611,1076,600,NA "ZA",2003,NA,NA,1769,10107,20392,17862,9540,3604,1495,NA,NA,NA,2341,12600,16867,9207,4080,1972,1172,NA "ZA",2004,NA,NA,2269,11030,22120,19675,10653,3908,1580,NA,NA,NA,2810,14166,18975,10839,4887,2182,1174,NA "ZA",2005,NA,NA,2035,10422,20576,19465,11143,4124,1705,NA,NA,NA,2561,13632,19343,11338,5416,2352,1348,NA "ZA",2006,655,1407,2062,10498,21273,19743,11752,4392,1862,NA,620,1959,2579,14073,20387,12656,5767,2550,1505,NA "ZA",2007,340,594,1909,10514,21948,20076,12164,4792,2021,NA,293,894,2511,14410,21049,13190,6245,2964,1811,NA "ZA",2008,344,1519,1863,10172,21706,20699,12724,5169,2246,0,298,2062,2360,14010,21579,13778,7146,3234,2117,0 "ZM",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1995,NA,NA,91,659,1668,1124,487,231,130,NA,NA,NA,129,1125,1779,717,257,117,63,NA "ZM",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",2000,NA,NA,349,2175,2610,3045,435,261,174,NA,NA,NA,150,932,1118,1305,186,112,75,NA "ZM",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZM",2002,NA,NA,1135,1013,3051,2000,788,162,405,NA,NA,NA,1099,1383,2730,1434,657,297,197,NA "ZM",2003,NA,NA,302,1733,4182,2390,995,386,308,NA,NA,NA,292,2061,3439,1626,680,297,243,NA "ZM",2004,NA,NA,209,1498,3963,2262,968,313,324,NA,NA,NA,247,1811,2961,1646,608,245,192,NA "ZM",2005,NA,NA,135,1240,3166,2160,917,358,321,NA,NA,NA,168,1507,2463,1433,569,235,185,NA "ZM",2006,NA,NA,150,945,3496,1645,684,323,186,NA,NA,NA,224,1500,2834,1257,452,207,122,NA "ZM",2007,NA,NA,152,1235,2971,1848,805,319,204,NA,NA,NA,195,1335,2193,1188,558,244,131,NA "ZM",2008,NA,NA,101,1120,3244,2094,737,299,229,0,NA,NA,165,1246,2062,1114,498,187,115,0 "ZW",1980,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1981,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1982,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1983,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1984,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1985,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1986,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1987,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1988,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1990,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1991,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1992,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1993,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1994,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1995,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1996,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1997,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1998,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",1999,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",2000,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",2001,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "ZW",2002,NA,NA,191,600,2548,1662,744,315,159,NA,NA,NA,222,914,2185,1095,421,140,65,NA "ZW",2003,NA,NA,133,874,3048,2228,981,367,205,NA,NA,NA,180,1232,2856,1480,565,225,114,NA "ZW",2004,NA,NA,187,833,2908,2298,1056,366,198,NA,NA,NA,225,1140,2858,1565,622,214,111,NA "ZW",2005,NA,NA,210,837,2264,1855,762,295,656,NA,NA,NA,269,1136,2242,1255,578,193,603,NA "ZW",2006,NA,NA,215,736,2391,1939,896,348,199,NA,NA,NA,237,1020,2424,1355,632,230,96,NA "ZW",2007,6,132,138,500,3693,0,716,292,153,NA,7,178,185,739,3311,0,553,213,90,NA "ZW",2008,NA,NA,127,614,0,3316,704,263,185,0,NA,NA,145,840,0,2890,467,174,105,0 tidyr/vignettes/rectangle.Rmd0000644000176200001440000002537713516073665016057 0ustar liggesusers--- title: "Rectangling" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{rectangling} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Introduction Rectangling is the art and craft of taking a deeply nested list (often sourced from wild caught JSON or XML) and taming it into a tidy data set of rows and columns. There are three functions from tidyr that are particularly useful for rectangling: * `unnest_longer()` takes each element of a list-column and makes a new row. * `unnest_wider()` takes each element of a list-column and makes a new column. * `unnest_auto()` guesses whether you want `unnest_longer()` or `unnest_wider()`. * `hoist()` is similar to `unnest_wider()` but only plucks out selected components, and can reach down multiple levels. A very large number of data rectangling problems can be solved by combining these functions with a splash of dplyr (largely eliminating prior approaches that combined `mutate()` with multiple `purrr::map()`s). To illustrate these techniques, we'll use the repurrrsive package, which provides a number deeply nested lists originally mostly captured from web APIs. ```{r setup, message = FALSE} library(tidyr) library(dplyr) library(repurrrsive) ``` ## GitHub users We'll start with `gh_users`, a list which contains information about six GitHub users. To begin, we put the `gh_users` list into a data frame: ```{r} users <- tibble(user = gh_users) ``` This seems a bit counter-intuitive: why is the first step in making a list simpler to make it more complicated? But a data frame has a big advantage: it bundles together multiple vectors so that everything is tracked together in a single object. Each `user` is a named list, where each element represents a column. ```{r} names(users$user[[1]]) ``` There are two ways to turn the list components into columns. `unnest_wider()` takes every component and makes a new column: ```{r} users %>% unnest_wider(user) ``` But in this case, there are many components and we don't need most of them so we can instead use `hoist()`. `hoist()` allows us to pull out selected components using the same syntax as `purrr::pluck()`: ```{r} users %>% hoist(user, followers = "followers", login = "login", url = "html_url" ) ``` `hoist()` removes the named components from the `user` list-column, so you can think of it as moving components out of the inner list into the top-level data frame. ## Github repos We start off `gh_repos` similarly, by putting it in a tibble: ```{r} repos <- tibble(repo = gh_repos) repos ``` This time the elements of `user` are a list of repositories that belong to that user. These are observations, so should become new rows, so we use `unnest_longer()` rather than `unnest_wider()`: ```{r} repos <- repos %>% unnest_longer(repo) repos ``` Then we can use `unnest_wider()` or `hoist()`: ```{r} repos %>% hoist(repo, login = c("owner", "login"), name = "name", homepage = "homepage", watchers = "watchers_count" ) ``` Note the use of `c("owner", "login")`: this allows us to reach two levels deep inside of a list. An alternative approach would be to pull out just `owner` and then put each element of it in a column: ```{r} repos %>% hoist(repo, owner = "owner") %>% unnest_wider(owner) ``` Instead of looking at the list and carefully thinking about whether it needs to become rows or columns, you can use `unnest_auto()`. It uses a handful of heuristics to figure out whether `unnest_longer()` or `unnest_wider()` is appropriate, and tells you about its reasoning. ```{r} tibble(repo = gh_repos) %>% unnest_auto(repo) %>% unnest_auto(repo) ``` ## Game of Thrones characters `got_chars` has a similar structure to `gh_users`: it's a list of named lists, where each element of the inner list describes some attribute of a GoT character. We start in the same way, first by creating a data frame and then by unnesting each component into a column: ```{r} chars <- tibble(char = got_chars) chars chars2 <- chars %>% unnest_wider(char) chars2 ``` This is more complex than `gh_users` because some component of `char` are themselves a list, giving us a collection of list-columns: ```{r} chars2 %>% select_if(is.list) ``` What you do next will depend on the purposes of the analysis. Maybe you want a row for every book and TV series that the character appears in: ```{r} chars2 %>% select(name, books, tvSeries) %>% pivot_longer(c(books, tvSeries), names_to = "media", values_to = "value") %>% unnest_longer(value) ``` Or maybe you want to build a table that lets you match title to name: ```{r} chars2 %>% select(name, title = titles) %>% unnest_longer(title) ``` (Note that the empty titles (`""`) are due to an infelicity in the input `got_chars`: ideally people without titles would have a title vector of length 0, not a title vector of length 1 containing an empty string.) Again, we could rewrite using `unnest_auto()`. This is convenient for exploration, but I wouldn't rely on it in the long term - `unnest_auto()` has the undesirable property that it will always succeed. That means if your data structure changes, `unnest_auto()` will continue to work, but might give very different output that causes cryptic failures from downstream functions. ```{r} tibble(char = got_chars) %>% unnest_auto(char) %>% select(name, title = titles) %>% unnest_auto(title) ``` ## Geocoding with google Next we'll tackle a more complex form of data that comes from Google's geocoding service. It's against the terms of service to cache this data, so I first write a very simple wrapper around the API. This relies on having an Google maps API key stored in an environment; if that's not available these code chunks won't be run. ```{r} has_key <- !identical(Sys.getenv("GOOGLE_MAPS_API_KEY"), "") if (!has_key) { message("No Google Maps API key found; code chunks will not be run") } # https://developers.google.com/maps/documentation/geocoding geocode <- function(address, api_key = Sys.getenv("GOOGLE_MAPS_API_KEY")) { url <- "https://maps.googleapis.com/maps/api/geocode/json" url <- paste0(url, "?address=", URLencode(address), "&key=", api_key) jsonlite::read_json(url) } ``` The list that this function returns is quite complex: ```{r, eval = has_key} houston <- geocode("Houston TX") str(houston) ``` Fortunately, we can attack the problem step by step with tidyr functions. To make the problem a bit harder (!) and more realistic, I'll start by geocoding a few cities: ```{r, eval = has_key, cache = TRUE} city <- c("Houston", "LA", "New York", "Chicago", "Springfield") city_geo <- purrr::map(city, geocode) ``` I'll put these results in a tibble, next to the original city name: ```{r, eval = has_key} loc <- tibble(city = city, json = city_geo) loc ``` The first level contains components `status` and `result`, which we can reveal with `unnest_wider()`: ```{r, eval = has_key} loc %>% unnest_wider(json) ``` Notice that `results` is a list of lists. Most of the cities have 1 element (representing a unique match from the geocoding API), but Springfield has two. We can pull these out into separate rows with `unnest_longer()`: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) ``` Now these all have the same components, as revealed by `unnest_wider()`: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) ``` We can find the lat and lon coordinates by unnesting `geometry`: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) %>% unnest_wider(geometry) ``` And then location: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) %>% unnest_wider(geometry) %>% unnest_wider(location) ``` Again, `unnest_auto()` makes this simpler with the small risk of failing in unexpected ways if the input structure changes: ```{r, eval = has_key} loc %>% unnest_auto(json) %>% unnest_auto(results) %>% unnest_auto(results) %>% unnest_auto(geometry) %>% unnest_auto(location) ``` We could also just look at the first address for each city: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% hoist(results, first_result = 1) %>% unnest_wider(first_result) %>% unnest_wider(geometry) %>% unnest_wider(location) ``` Or use `hoist()` to dive deeply to get directly to `lat` and `lng`: ```{r, eval = has_key} loc %>% hoist(json, lat = list("results", 1, "geometry", "location", "lat"), lng = list("results", 1, "geometry", "location", "lng") ) ``` ## Sharla Gelfand's discography We'll finish off with the most complex list, from [Sharla Gelfand's](https://sharla.party/posts/discog-purrr/) discography. We'll start the usual way: putting the list into a single column data frame, and then widening so each component is a column. I also parse the `date_added` column into a real date-time[^readr]. [^readr]: I'd normally use `readr::parse_datetime()` or `lubridate::ymd_hms()`, but I can't here because it's a vignette and I don't want to add a dependency to tidyr just to simplify one example. ```{r} discs <- tibble(disc = discog) %>% unnest_wider(disc) %>% mutate(date_added = as.POSIXct(strptime(date_added, "%Y-%m-%dT%H:%M:%S"))) discs ``` At this level, we see information about when each disc was added to Sharla's discography, not any information about the disc itself. To do that we need to widen the `basic_information` column: ```{r, error = TRUE} discs %>% unnest_wider(basic_information) ``` Unfortunately that fails because there's an `id` column inside `basic_information`. We can quickly see what's going on by setting `names_repair = "unique"`: ```{r} discs %>% unnest_wider(basic_information, names_repair = "unique") ``` The problem is that `basic_information` repeats the `id` column that's also stored at the top-level, so we can just drop that: ```{r} discs %>% select(-id) %>% unnest_wider(basic_information) ``` Alternatively, we could use `hoist()`: ```{r} discs %>% hoist(basic_information, title = "title", year = "year", label = list("labels", 1, "name"), artist = list("artists", 1, "name") ) ``` Here I quickly extract the name of the first label and artist by indexing deeply into the nested list. A more systematic approach would be to create separate tables for artist and label: ```{r} discs %>% hoist(basic_information, artist = "artists") %>% select(disc_id = id, artist) %>% unnest_longer(artist) %>% unnest_wider(artist) discs %>% hoist(basic_information, format = "formats") %>% select(disc_id = id, format) %>% unnest_longer(format) %>% unnest_wider(format) %>% unnest_longer(descriptions) ``` Then you could join these back on to the original dataset as needed. tidyr/vignettes/weather.csv0000644000176200001440000000552213437754024015606 0ustar liggesusers"id","year","month","element","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15","d16","d17","d18","d19","d20","d21","d22","d23","d24","d25","d26","d27","d28","d29","d30","d31" "MX17004",2010,1,"tmax",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,27.8,NA "MX17004",2010,1,"tmin",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,14.5,NA "MX17004",2010,2,"tmax",NA,27.3,24.1,NA,NA,NA,NA,NA,NA,NA,29.7,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,29.9,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,2,"tmin",NA,14.4,14.4,NA,NA,NA,NA,NA,NA,NA,13.4,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,10.7,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,3,"tmax",NA,NA,NA,NA,32.1,NA,NA,NA,NA,34.5,NA,NA,NA,NA,NA,31.1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,3,"tmin",NA,NA,NA,NA,14.2,NA,NA,NA,NA,16.8,NA,NA,NA,NA,NA,17.6,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,4,"tmax",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,36.3,NA,NA,NA,NA "MX17004",2010,4,"tmin",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,16.7,NA,NA,NA,NA "MX17004",2010,5,"tmax",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,33.2,NA,NA,NA,NA "MX17004",2010,5,"tmin",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,18.2,NA,NA,NA,NA "MX17004",2010,6,"tmax",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,28,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,30.1,NA,NA "MX17004",2010,6,"tmin",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,17.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,18,NA,NA "MX17004",2010,7,"tmax",NA,NA,28.6,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,29.9,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,7,"tmin",NA,NA,17.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,16.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,8,"tmax",NA,NA,NA,NA,29.6,NA,NA,29,NA,NA,NA,NA,29.8,NA,NA,NA,NA,NA,NA,NA,NA,NA,26.4,NA,29.7,NA,NA,NA,28,NA,25.4 "MX17004",2010,8,"tmin",NA,NA,NA,NA,15.8,NA,NA,17.3,NA,NA,NA,NA,16.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,15,NA,15.6,NA,NA,NA,15.3,NA,15.4 "MX17004",2010,10,"tmax",NA,NA,NA,NA,27,NA,28.1,NA,NA,NA,NA,NA,NA,29.5,28.7,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,31.2,NA,NA,NA "MX17004",2010,10,"tmin",NA,NA,NA,NA,14,NA,12.9,NA,NA,NA,NA,NA,NA,13,10.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,15,NA,NA,NA "MX17004",2010,11,"tmax",NA,31.3,NA,27.2,26.3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,28.1,27.7,NA,NA,NA,NA "MX17004",2010,11,"tmin",NA,16.3,NA,12,7.9,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,12.1,14.2,NA,NA,NA,NA "MX17004",2010,12,"tmax",29.9,NA,NA,NA,NA,27.8,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA "MX17004",2010,12,"tmin",13.8,NA,NA,NA,NA,10.5,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA tidyr/vignettes/in-packages.Rmd0000644000176200001440000003577513532046157016272 0ustar liggesusers--- title: "In packages" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Usage and migration} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Introduction This vignette serves two distinct, but related, purposes: * It documents general best practices for using tidyr in a package, inspired by [using ggplot2 in packages][ggplot2-packages]. * It describes migration patterns for the transition from tidyr v0.8.3 to v1.0.0. This release includes breaking changes to `nest()` and `unnest()` in order to increase consistency within tidyr and with the rest of the tidyverse. Before we go on, we'll attach the packages we use, expose the version of tidyr, and make a small dataset to use in examples. ```{r setup} library(tidyr) library(dplyr, warn.conflicts = FALSE) library(purrr) packageVersion("tidyr") (mini_iris <- iris %>% as_tibble() %>% .[c(1, 2, 51, 52, 101, 102), ]) ``` ## Using tidyr in packages Compared to dplyr and ggplot2, most tidyr functions have __select semantics__ (like `dplyr::select()`), not the more common action semantics (like `mutate()`, `filter()`, `arrange()`, `group_by()`, ...). This means that you typically provide tidyr functions with an expression that works with column names (like `starts_with("x")` or `a:c`) not with column values (like `y = x * 2`). As a consequence, it's worthwhile to clarify the best patterns for calling tidyr functions inside another package. There are three main cases that you'll encounter: * The column names are fixed: use `one_of("col1", "col2", "col3")`. * The column names are in a character vector: use `one_of(cols)`. * The column names are specified by the user, using select syntax: use `{{ cols }}`. ### Fixed column names If you know the column names, this code works in the same way, in and out of a package: ```{r} mini_iris %>% nest( petal = c(Petal.Length, Petal.Width), sepal = c(Sepal.Length, Sepal.Width) ) ``` But `R CMD check` will warn about undefined global variables (`Petal.Length`, `Petal.Width`, `Sepal.Length`, and `Sepal.Width`), because it doesn't know that `nest()` is looking for the variables inside of `mini_iris`. The easiest way to silence this note is to use `one_of()`. `one_of()` is a tidyselect helper (like `starts_with()`, `ends_with()`, etc.) that takes column names stored as strings: ```{r} mini_iris %>% nest( petal = one_of("Petal.Length", "Petal.Width"), sepal = one_of("Sepal.Length", "Sepal.Width") ) ``` The [tidyselect](https://tidyselect.r-lib.org) package offers an entire family of select helpers. You are probably already familiar with them from using `dplyr::select()`. ### Column names in a character vector If the column names are in a character vector (possibly from a function call), you can provide that to `one_of()`, as above: ```{r} nest_egg <- function(data, cols) { nest(data, egg = one_of(cols)) } nest_egg(mini_iris, c("Petal.Length", "Petal.Width", "Sepal.Length", "Sepal.Width")) ``` The use of `one_of()` here is important; if you don't use it, and `data` contains a column named `cols`, `nest()` will nest it instead of the columns named in `cols`. ### tidyselect interface To provide an interface that works like the tidyr function that you're wrapping, you should pass the argument along using `{{ arg }}`. `{{ }}` is a special tidy eval operator that captures the expression supplied by the user and forwards it to another tidy eval-enabled function. ```{r} nest_egg <- function(df, cols) { nest(df, egg = {{ cols }}) } nest_egg(mini_iris, -Species) ``` For more complicated functions, you might want to use tidyselect directly: ```{r} sel_vars <- function(df, cols) { tidyselect::vars_select(names(df), {{ cols }}) } sel_vars(mini_iris, -Species) ``` (Many tidyr functions use `...` so you can easily select many variables, e.g. `fill(df, x, y, z)`. I now believe that the disadvantages of this approach outweigh the benefits, and that this interface would have been better as `fill(df, c(x, y, z))`. For new functions that select columns, please just use a single argument and not `...`.) If you decide to support tidyselect syntax, I recommend re-exporting the select helpers so that users can use (e.g.) `starts_with()` without any extra work. There's no helper to [do this yet](https://github.com/r-lib/usethis/issues/868), but you can copy-and-paste the code that [tidyr uses](https://github.com/tidyverse/tidyr/blob/00a66b44d2f304a73e953dd73139db61ed9cc289/R/tidyr.R#L29-L53). ### Travis-CI Hopefully you've already adopted continuous integration for your package, in which `R CMD check` (which includes your own tests) is run on a regular basis, e.g. every time you push changes to your package's source on GitHub or similar. The tidyverse team currently relies most heavily on Travis-CI for this, so that will be our example. `usethis::use_travis()` can help you get started. We recommend adding a build to your matrix that targets the devel version of tidyr: * Always? If your package is tightly coupled to tidyr, consider leaving this build in place all the time, so you know if changes in tidyr affect your package. Modifiers like `allow_failures` and `fast_finish` may be useful. Read more about the [Travis build matrix](https://docs.travis-ci.com/user/customizing-the-build/#build-matrix). * Right before a tidyr release? For everyone else, you could just add a tidyr-devel build during the period preceding a major tidyr release that has the potential for breaking changes, especially if you've been contacted during our reverse dependency checks. Example of `.travis.yml` config that tests against R devel, release, and oldrel, assesses test coverage, and includes a build against devel tidyr: ``` yaml # R for travis: see documentation at https://docs.travis-ci.com/user/languages/r language: R cache: packages matrix: include: - r: devel - r: release after_success: - Rscript -e 'covr::codecov()' - r: release name: tidyr-devel before_script: Rscript -e "remotes::install_github('tidyverse/tidyr')" - r: oldrel ``` ## tidyr v0.8.3 -> v1.0.0 v1.0.0 (aka v0.8.99.9000) makes considerable changes to the interface of `nest()` and `unnest()` in order to bring them in line with newer tidyverse conventions. I have tried to make the functions as backward compatible as possible and to give informative warning messages, but I could not cover 100% of use cases, so you may need to change your package code. This guide will help you do so with a minimum of pain. Ideally, you'll tweak your package so that it works with both tidyr 0.8.3 and tidyr 1.0.0. This makes life considerably easier because it means there's no need to coordinate CRAN submissions - you can submit your package that works with both tidyr versions, before I submit tidyr to CRAN. This section describes our recommend practices for doing so, drawing from the general principles described in . If you use Travis-CI already, we **strongly** recommend adding a build that tests with the development version of tidyr; see above for details. This section briefly describes how to run different code for different versions of tidyr, then goes through the major changes that might require workarounds: * `nest()` and `unnest()` get new interfaces. * `nest()` preserves groups. * `nest_()` and `unnest_()` are defunct. If you're struggling with a problem that's not described here, please reach out via [github](https://github.com/tidyverse/tidyr/issues/new) or [email](mailto:hadley@rstudio.com) so we can help out. ### Conditional code Sometimes you'll be able to write code that works with v0.8.3 _and_ v1.0.0. But this often requires code that's not particularly natural for either version and you'd be better off to (temporarily) have separate code paths, each containing non-contrived code. You get to re-use your existing code in the "old" branch, which will eventually be phased out, and write clean, forward-looking code in the "new" branch. The basic approach looks like this. First you define a function that returns `TRUE` for new versions of tidyr: ```{r} tidyr_new_interface <- function() { packageVersion("tidyr") > "0.8.99" } ``` We highly recommend keeping this as a function because it provides an obvious place to jot any transition notes for your package, and it makes it easier to remove transitional code later on. Another benefit is that the tidyr version is determined at *run time*, not at *build time*, and will therefore detect your user's current tidyr version. Then in your functions, you use an `if` statement to call different code for different versions: ```{r, eval = FALSE} my_function_inside_a_package <- function(...) # my code here if (tidyr_new_interface()) { # Freshly written code for v1.0.0 out <- tidyr::nest(df, data = one_of("x", "y", "z")) } else { # Existing code for v0.8.3 out <- tidyr::nest(df, x, y, z) } # more code here } ``` If your new code uses a function that only exists in tidyr 1.0.0, you will get a `NOTE` from `R CMD check`: this is one of the few notes that you can explain in your CRAN submission comments. Just mention that it's for forward compatibility with tidyr 1.0.0, and CRAN will let your package through. ### New syntax for `nest()` What changed: * The to-be-nested columns are no longer accepted as "loose parts". * The new list-column's name is no longer provided via the `.key` argument. * Now we use a construct like this: `new_col = `. Why it changed: * The use of `...` for metadata is a problematic pattern we're moving away from. * The `new_col = ` construct lets us create multiple nested list-columns at once ("multi-nest"). ```{r} mini_iris %>% nest(petal = matches("Petal"), sepal = matches("Sepal")) ``` Before and after examples: ```{r eval = FALSE} # v0.8.3 mini_iris %>% nest(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, .key = "my_data") # v1.0.0 mini_iris %>% nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) # v1.0.0 avoiding R CMD check NOTE mini_iris %>% nest(my_data = one_of(c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"))) # or equivalently: mini_iris %>% nest(my_data = -one_of("Species")) ``` If you need a quick and dirty fix without having to think, just call `nest_legacy()` instead of `nest()`. It's the same as `nest()` in v0.8.3: ```{r, eval = FALSE} if (tidyr_new_interface()) { out <- tidyr::nest_legacy(df, x, y, z) } else { out <- tidyr::nest(df, x, y, z) } ``` ### New syntax for `unnest()` What changed: * The to-be-unnested columns must now be specified explicitly, instead of defaulting to all list-columns. This also deprecates `.drop` and `.preserve`. * `.sep` has been deprecated and replaced with `names_sep`. * `unnest()` uses the [emerging tidyverse standard][name-repair] to disambiguate duplicated names. Use `names_repair = tidyr_legacy` to request the previous approach. * `.id` has been deprecated because it can be easily replaced by creating the column of names prior to `unnest()`, e.g. with an upstream call to `mutate()`. ```{r, eval = FALSE} # v0.8.3 df %>% unnest(x, .id = "id") # v1.0.0 df %>% mutate(id = names(x)) %>% unnest(x)) ``` Why it changed: * The use of `...` for metadata is a problematic pattern we're moving away from. * The changes to details arguments relate to features rolling out across multiple packages in the tidyverse. For example, `ptype` exposes protoype support from the new [vctrs package](https://vctrs.r-lib.org). `names_repair` specifies what to do about duplicated or non-syntactic names, consistent with tibble and readxl. Before and after: ```{r, eval = FALSE} nested <- mini_iris %>% nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) # v0.8.3 automatically unnests list-cols nested %>% unnest() # v1.0.0 must be told which columns to unnest nested %>% unnest(one_of("my_data")) ``` If you need a quick and dirty fix without having to think, just call `unnest_legacy()` instead of `unnest()`. It's the same as `unnest()` in v0.8.3: ```{r, eval = FALSE} if (tidyr_new_interface()) { out <- tidyr::unnest_legacy(df) } else { out <- tidyr::unnest(df) } ``` ### `nest()` preserves groups What changed: * `nest()` now preserves the groups present in the input. Why it changed: * To reflect the growing support for grouped data frames, especially in recent releases of dplyr. See, for example, `dplyr::group_modify()`, `group_map()`, and friends. If the fact that `nest()` now preserves groups is problematic downstream, you have a few choices: * Apply `ungroup()` to the result. This level of pragmatism suggests, however, you should at least consider the next two options. * You should never have grouped in the first place. Eliminate the `group_by()` call and specify which columns should be nested versus not nested directly in `nest()`. * Adjust the downstream code to accommodate grouping. Imagine we used `group_by()` then `nest()` on `mini_iris`, then we computed on the list-column *outside the data frame*. ```{r} (df <- mini_iris %>% group_by(Species) %>% nest()) (external_variable <- map_int(df$data, nrow)) ``` And now we try to add that back to the data *post hoc*: ```{r error = TRUE} df %>% mutate(n_rows = external_variable) ``` This fails because `df` is grouped and `mutate()` is group-aware, so it's hard to add a completely external variable. Other than pragmatically `ungroup()`ing, what can we do? One option is to work inside the data frame, i.e. bring the `map()` inside the `mutate()`, and design the problem away: ```{r} df %>% mutate(n_rows = map_int(data, nrow)) ``` If, somehow, the grouping seems appropriate AND working inside the data frame is not an option, `tibble::add_column()` is group-unaware. It lets you add external data to a grouped data frame. ```{r} df %>% tibble::add_column(n_rows = external_variable) ``` ### `nest_()` and `unnest_()` are defunct What changed: * `nest_()` and `unnest_()` no longer work Why it changed: * We are transitioning the whole tidyverse to the powerful tidy eval framework. Therefore, we are gradually removing all previous solutions: - Specialized standard evaluation versions of functions, e.g., `foo_()` as a complement to `foo()`. - The older lazyeval framework. Before and after: ```{r eval = FALSE} # v0.8.3 mini_iris %>% nest_( key_col = "my_data", nest_cols = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width") ) nested %>% unnest_(~ my_data) # v1.0.0 mini_iris %>% nest(my_data = one_of("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")) nested %>% unnest(one_of("my_data")) ``` [ggplot2-packages]: https://ggplot2.tidyverse.org/dev/articles/ggplot2-in-packages.html [name-repair]: https://www.tidyverse.org/articles/2019/01/tibble-2.0.1/#name-repair tidyr/vignettes/preg.csv0000644000176200001440000000012613437754024015077 0ustar liggesusers"name","treatmenta","treatmentb" "John Smith",NA,18 "Jane Doe",4,1 "Mary Johnson",6,7 tidyr/R/0000755000176200001440000000000013612143263011607 5ustar liggesuserstidyr/R/unite.R0000644000176200001440000000434613612142023013056 0ustar liggesusers#' Unite multiple columns into one by pasting strings together #' #' Convenience function to paste together multiple columns into one. #' #' @inheritSection gather Rules for selection #' @inheritParams gather #' @param data A data frame. #' @param col The name of the new column, as a string or symbol. #' #' This argument is passed by expression and supports #' [quasiquotation][rlang::quasiquotation] (you can unquote strings #' and symbols). The name is captured from the expression with #' [rlang::ensym()] (note that this kind of interface where #' symbols do not represent actual objects is now discouraged in the #' tidyverse; we support it here for backward compatibility). #' @param sep Separator to use between values. #' @param na.rm If `TRUE`, missing values will be remove prior to uniting #' each value. #' @param remove If `TRUE`, remove input columns from output data frame. #' @seealso [separate()], the complement. #' @export #' @examples #' df <- expand_grid(x = c("a", NA), y = c("b", NA)) #' df #' #' df %>% unite("z", x:y, remove = FALSE) #' # To remove missing values: #' df %>% unite("z", x:y, na.rm = TRUE, remove = FALSE) #' #' # Separate is almost the complement of unite #' df %>% #' unite("xy", x:y) %>% #' separate(xy, c("x", "y")) #' # (but note `x` and `y` contain now "NA" not NA) unite <- function(data, col, ..., sep = "_", remove = TRUE, na.rm = FALSE) { ellipsis::check_dots_unnamed() UseMethod("unite") } #' @export unite.data.frame <- function(data, col, ..., sep = "_", remove = TRUE, na.rm = FALSE) { var <- as_string(ensym2(col)) if (dots_n(...) == 0) { from_vars <- colnames(data) } else { from_vars <- tidyselect::vars_select(tbl_vars(data), ...) } out <- data if (remove) { out <- out[setdiff(names(out), from_vars)] } if (identical(na.rm, TRUE)) { rows <- transpose(data[from_vars]) rows <- map(rows, as.character) united <- map_chr(rows, function(x) paste0(x[!is.na(x)], collapse = sep)) } else { cols <- unname(as.list(data[from_vars])) united <- exec(paste, !!!cols, sep = sep) } first_pos <- which(names(data) %in% from_vars)[1] out <- append_col(out, united, var, after = first_pos - 1L) reconstruct_tibble(data, out, if (remove) from_vars) } tidyr/R/chop.R0000644000176200001440000000743313612142023012663 0ustar liggesusers#' Chop and unchop #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} #' #' Chopping and unchopping preserve the width of a data frame, changing its #' length. `chop()` makes `df` shorter by converting rows within each group #' into list-columns. `unchop()` makes `df` longer by expanding list-columns #' so that each element of the list-column gets its own row in the output. #' #' @details #' Generally, unchopping is more useful than chopping because it simplifies #' a complex data structure, and [nest()]ing is usually more appropriate #' that `chop()`ing` since it better preserves the connections between #' observations. #' #' @param data A data frame. #' @param cols Column to chop or unchop (automatically quoted). #' #' This should be a list-column containing generalised vectors (e.g. #' any mix of `NULL`s, atomic vector, S3 vectors, a lists, or data frames). #' @param keep_empty By default, you get one row of output for each element #' of the list your unchopping/unnesting. This means that if there's a #' size-0 element (like `NULL` or an empty data frame), that entire row #' will be dropped from the output. If you want to preserve all rows, #' use `keep_empty = TRUE` to replace size-0 elements with a single row #' of missing values. #' @param ptype Optionally, supply a data frame prototype for the output `cols`, #' overriding the default that will be guessed from the combination of #' individual values. #' @export #' @examples #' # Chop ============================================================== #' df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1) #' # Note that we get one row of output for each unique combination of #' # non-chopped variables #' df %>% chop(c(y, z)) #' # cf nest #' df %>% nest(data = c(y, z)) #' #' # Unchop ============================================================ #' df <- tibble(x = 1:4, y = list(integer(), 1L, 1:2, 1:3)) #' df %>% unchop(y) #' df %>% unchop(y, keep_empty = TRUE) #' #' # Incompatible types ------------------------------------------------- #' # If the list-col contains types that can not be natively #' df <- tibble(x = 1:2, y = list("1", 1:3)) #' try(df %>% unchop(y)) #' df %>% unchop(y, ptype = tibble(y = integer())) #' df %>% unchop(y, ptype = tibble(y = character())) #' df %>% unchop(y, ptype = tibble(y = list())) #' #' # Unchopping data frames ----------------------------------------------------- #' # Unchopping a list-col of data frames must generate a df-col because #' # unchop leaves the column names unchanged #' df <- tibble(x = 1:3, y = list(NULL, tibble(x = 1), tibble(y = 1:2))) #' df %>% unchop(y) #' df %>% unchop(y, keep_empty = TRUE) chop <- function(data, cols) { if (missing(cols)) { return(data) } cols <- tidyselect::vars_select(tbl_vars(data), !!enquo(cols)) vals <- data[cols] keys <- data[setdiff(names(data), cols)] split <- vec_split(vals, keys) vals <- map(split$val, ~ new_data_frame(map(.x, list), n = 1L)) out <- vec_cbind(split$key, vec_rbind(!!!vals)) reconstruct_tibble(data, out) } #' @export #' @rdname chop unchop <- function(data, cols, keep_empty = FALSE, ptype = NULL) { cols <- tidyselect::vars_select(tbl_vars(data), !!enquo(cols)) if (length(cols) == 0) { return(data) } if (keep_empty) { for (col in cols) { data[[col]][] <- map(data[[col]], init_col) } } # https://github.com/tidyverse/tibble/issues/580 x <- pmap(as.list(data)[cols], vec_recycle_common) x <- map(x, ~ new_data_frame(drop_null(.x))) n <- map_int(x, vec_size) out <- vec_slice(data, rep(vec_seq_along(data), n)) if (nrow(data) == 0) { new_cols <- map(data[cols], ~ attr(.x, "ptype") %||% unspecified(0)) } else { new_cols <- vec_rbind(!!!x, .ptype = ptype) } out <- update_cols(out, new_cols) reconstruct_tibble(data, out) } tidyr/R/pack.R0000644000176200001440000000726013612142023012646 0ustar liggesusers#' Pack and unpack #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} #' #' Packing and unpacking preserve the length of a data frame, changing its #' width. `pack()` makes `df` narrow by collapsing a set of columns into a #' single df-column. `unpack()` makes `data` wider by expanding df-columns #' back out into individual columns. #' #' @details #' Generally, unpacking is more useful than packing because it simplifies #' a complex data structure. Currently, few functions work with df-cols, #' and they are mostly a curiosity, but seem worth exploring further because #' they mimic the nested column headers that are so popular in Excel. #' #' @inheritParams unchop #' @param cols Name of column that you wish to unpack. #' @param ... Name-variable pairs of the form `new_col = c(col1, col2, col3)`, #' that describe how you wish to pack existing columns into new columns. #' The right hand side can be any expression supported by tidyselect. #' @export #' @examples #' # Packing ============================================================= #' # It's not currently clear why you would ever want to pack columns #' # since few functions work with this sort of data. #' df <- tibble(x1 = 1:3, x2 = 4:6, x3 = 7:9, y = 1:3) #' df #' df %>% pack(x = starts_with("x")) #' df %>% pack(x = c(x1, x2, x3), y = y) #' #' # Unpacking =========================================================== #' df <- tibble( #' x = 1:3, #' y = tibble(a = 1:3, b = 3:1), #' z = tibble(X = c("a", "b", "c"), Y = runif(3), Z = c(TRUE, FALSE, NA)) #' ) #' df #' df %>% unpack(y) #' df %>% unpack(c(y, z)) #' df %>% unpack(c(y, z), names_sep = "_") pack <- function(data, ...) { cols <- enquos(...) if (any(names2(cols) == "")) { abort("All elements of `...` must be named") } cols <- map(cols, ~ tidyselect::vars_select(tbl_vars(data), !!.x)) packed <- map(cols, ~ data[.x]) # TODO: find a different approach that preserves order asis <- setdiff(names(data), unlist(cols)) out <- vec_cbind(data[asis], new_data_frame(packed, n = nrow(data))) reconstruct_tibble(data, out) } #' @export #' @rdname pack #' @param names_sep If `NULL`, the default, the names of new columns will #' come directly from the inner data frame. #' #' If a string, the names of the new columns will be formed by pasting #' together the outer column name with the inner names, separated by #' `names_sep`. #' @param names_repair Used to check that output data frame has valid #' names. Must be one of the following options: #' #' * "minimal": no name repair or checks, beyond basic existence, #' * "unique": make sure names are unique and not empty, #' * "check_unique": (the default), no name repair, but check they are unique, #' * "universal": make the names unique and syntactic #' * a function: apply custom name repair. #' * [tidyr_legacy]: use the name repair from tidyr 0.8. #' * a formula: a purrr-style anonymous function (see [rlang::as_function()]) #' #' See [vctrs::vec_as_names()] for more details on these terms and the #' strategies used to enforce them. unpack <- function(data, cols, names_sep = NULL, names_repair = "check_unique") { cols <- tidyselect::vars_select(tbl_vars(data), !!enquo(cols)) new_cols <- map2(data[cols], cols, check_unpack, names_sep = names_sep) data <- update_cols(data, new_cols) out <- flatten_at(data, names(data) %in% cols) out <- as_tibble(out, .name_repair = names_repair) reconstruct_tibble(data, out) } check_unpack <- function(x, col, names_sep = NULL) { if (!is.data.frame(x) && !is_empty(x)) { abort(glue("`{col}` must be a data frame column")) } if (!is.null(names_sep)) { names(x) <- paste0(col, names_sep, names(x)) } x } tidyr/R/utils.R0000644000176200001440000000602413612143254013074 0ustar liggesusers#' Pipe operator #' #' See \code{\link[magrittr]{%>%}} for more details. #' #' @name %>% #' @rdname pipe #' @keywords internal #' @export #' @importFrom magrittr %>% #' @usage lhs \%>\% rhs NULL # https://github.com/r-lib/vctrs/issues/211 reconstruct_tibble <- function(input, output, ungrouped_vars = character()) { if (inherits(input, "grouped_df")) { old_groups <- dplyr::group_vars(input) new_groups <- intersect(setdiff(old_groups, ungrouped_vars), names(output)) dplyr::grouped_df(output, new_groups) } else if (inherits(input, "tbl_df")) { # Assume name repair carried out elsewhere as_tibble(output, .name_repair = "minimal") } else { output } } imap <- function(.x, .f, ...) { map2(.x, names(.x) %||% character(0), .f, ...) } seq_nrow <- function(x) seq_len(nrow(x)) seq_ncol <- function(x) seq_len(ncol(x)) # Until https://github.com/r-lib/rlang/issues/675 is fixed ensym2 <- function(arg) { arg <- ensym(arg) expr <- eval_bare(expr(enquo(!!arg)), caller_env()) expr <- quo_get_expr(expr) if (is_string(expr)) { sym(expr) } else if (is_symbol(expr)) { expr } else { abort("Must supply a symbol or a string as argument") } } last <- function(x) x[[length(x)]] #' Legacy name repair #' #' Ensures all column names are unique using the approach found in #' tidyr 0.8.3 are earlier. Only use this function if you want to preserve #' the naming strategy, otherwise you're better off adopting the new #' tidyverse standard with `name_repair = "universal"` #' #' @param nm Character vector of names #' @param prefix prefix Prefix to use for unnamed column #' @param sep Separator to use between name and unique suffix #' @keywords internal #' @export #' @examples #' df <- tibble(x = 1:2, y = list(tibble(x = 3:5), tibble(x = 4:7))) #' #' # Doesn't work because it would produce a data frame with two #' # columns called x #' \dontrun{unnest(df, y)} #' #' # The new tidyverse standard: #' unnest(df, y, names_repair = "universal") #' #' # The old tidyr approach #' unnest(df, y, names_repair = tidyr_legacy) tidyr_legacy <- function(nms, prefix = "V", sep = "") { if (length(nms) == 0) return(character()) blank <- nms == "" nms[!blank] <- make.unique(nms[!blank], sep = sep) new_nms <- setdiff(paste(prefix, seq_along(nms), sep = sep), nms) nms[blank] <- new_nms[seq_len(sum(blank))] nms } drop_null <- function(x) { is_null <- vapply(x, is.null, logical(1)) x[!is_null] } # Work around bug in base R where data[x] <- data[x] turns a 0-col data frame-col # into a list of NULLs update_cols <- function(old, new) { for (col in names(new)) { old[[col]] <- new[[col]] } old } init_col <- function(x) { if (is_null(x)) { unspecified(1) } else if (vec_is_empty(x)) { vec_init(x, 1) } else { x } } # Own copy since it might disappear from vctrs since it # isn't well thought out vec_repeat <- function(x, each = 1L, times = 1L) { vec_assert(each, size = 1L) vec_assert(times, size = 1L) idx <- rep(vec_seq_along(x), times = times, each = each) vec_slice(x, idx) } tidyr/R/gather.R0000644000176200001440000001476613534721204013222 0ustar liggesusers#' Gather columns into key-value pairs #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("retired")} #' #' Development on `gather()` is complete, and for new code we recommend #' switching to `pivot_longer()`, which is easier to use, more featureful, and #' still under active development. #' `df %>% gather("key", "value", x, y, z)` is equivalent to #' `df %>% pivot_longer(c(x, y, z), names_to = "key", values_to = "value")` #' #' See more details in `vignette("pivot")`. #' #' @section Rules for selection: #' #' Arguments for selecting columns are passed to #' [tidyselect::vars_select()] and are treated specially. Unlike other #' verbs, selecting functions make a strict distinction between data #' expressions and context expressions. #' #' * A data expression is either a bare name like `x` or an expression #' like `x:y` or `c(x, y)`. In a data expression, you can only refer #' to columns from the data frame. #' #' * Everything else is a context expression in which you can only #' refer to objects that you have defined with `<-`. #' #' For instance, `col1:col3` is a data expression that refers to data #' columns, while `seq(start, end)` is a context expression that #' refers to objects from the contexts. #' #' If you really need to refer to contextual objects from a data #' expression, you can unquote them with the tidy eval operator #' `!!`. This operator evaluates its argument in the context and #' inlines the result in the surrounding function call. For instance, #' `c(x, !! x)` selects the `x` column within the data frame and the #' column referred to by the object `x` defined in the context (which #' can contain either a column name as string or a column position). #' #' @inheritParams expand #' @param key,value Names of new key and value columns, as strings or #' symbols. #' #' This argument is passed by expression and supports #' [quasiquotation][rlang::quasiquotation] (you can unquote strings #' and symbols). The name is captured from the expression with #' [rlang::ensym()] (note that this kind of interface where #' symbols do not represent actual objects is now discouraged in the #' tidyverse; we support it here for backward compatibility). #' @param ... A selection of columns. If empty, all variables are #' selected. You can supply bare variable names, select all #' variables between x and z with `x:z`, exclude y with `-y`. For #' more options, see the [dplyr::select()] documentation. See also #' the section on selection rules below. #' @param na.rm If `TRUE`, will remove rows from output where the #' value column is `NA`. #' @param convert If `TRUE` will automatically run #' [type.convert()] on the key column. This is useful if the column #' types are actually numeric, integer, or logical. #' @param factor_key If `FALSE`, the default, the key values will be #' stored as a character vector. If `TRUE`, will be stored as a factor, #' which preserves the original ordering of the columns. #' @inheritParams gather_ #' @export #' @examples #' library(dplyr) #' # From https://stackoverflow.com/questions/1181060 #' stocks <- tibble( #' time = as.Date('2009-01-01') + 0:9, #' X = rnorm(10, 0, 1), #' Y = rnorm(10, 0, 2), #' Z = rnorm(10, 0, 4) #' ) #' #' gather(stocks, "stock", "price", -time) #' stocks %>% gather("stock", "price", -time) #' #' # get first observation for each Species in iris data -- base R #' mini_iris <- iris[c(1, 51, 101), ] #' # gather Sepal.Length, Sepal.Width, Petal.Length, Petal.Width #' gather(mini_iris, key = "flower_att", value = "measurement", #' Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) #' # same result but less verbose #' gather(mini_iris, key = "flower_att", value = "measurement", -Species) #' #' # repeat iris example using dplyr and the pipe operator #' library(dplyr) #' mini_iris <- #' iris %>% #' group_by(Species) %>% #' slice(1) #' mini_iris %>% gather(key = "flower_att", value = "measurement", -Species) gather <- function(data, key = "key", value = "value", ..., na.rm = FALSE, convert = FALSE, factor_key = FALSE) { ellipsis::check_dots_unnamed() UseMethod("gather") } #' @export gather.data.frame <- function(data, key = "key", value = "value", ..., na.rm = FALSE, convert = FALSE, factor_key = FALSE) { key_var <- as_string(ensym2(key)) value_var <- as_string(ensym2(value)) quos <- quos(...) if (is_empty(quos)) { gather_vars <- setdiff(names(data), c(key_var, value_var)) } else { gather_vars <- unname(tidyselect::vars_select(tbl_vars(data), !!! quos)) } if (is_empty(gather_vars)) { return(data) } gather_idx <- match(gather_vars, names(data)) id_idx <- setdiff(seq_along(data), gather_idx) dup_indx <- match(c(key_var, value_var), names(data)) id_idx <- setdiff(id_idx, dup_indx) ## Get the attributes if common, NULL if not. args <- normalize_melt_arguments(data, gather_idx) valueAsFactor <- "factor" %in% class(args$attr_template) out <- melt_dataframe( data, id_idx - 1L, gather_idx - 1L, as.character(key_var), as.character(value_var), args$attr_template, args$factorsAsStrings, as.logical(valueAsFactor), as.logical(factor_key) ) if (na.rm && anyNA(out)) { missing <- is.na(out[[value_var]]) out <- out[!missing, ] } if (convert) { out[[key_var]] <- type.convert(as.character(out[[key_var]]), as.is = TRUE) } reconstruct_tibble(data, out, gather_vars) } # Functions from reshape2 ------------------------------------------------- ## Get the attributes if common, NULL if not. normalize_melt_arguments <- function(data, measure.ind) { measure.attributes <- map(measure.ind, function(i) { attributes(data[[i]]) }) ## Determine if all measure.attributes are equal measure.attrs.equal <- all_identical(measure.attributes) if (measure.attrs.equal) { attr_template <- data[[measure.ind[1]]] } else { warn(glue( "attributes are not identical across measure variables; they will be dropped" )) attr_template <- NULL } ## If we are going to be coercing any factors to strings, we don't want to ## copy the attributes any.factors <- any(map_lgl(measure.ind, function(i) is.factor(data[[i]]))) if (any.factors) { attr_template <- NULL } list( attr_template = attr_template, factorsAsStrings = TRUE ) } all_identical <- function(xs) { if (length(xs) <= 1) return(TRUE) for (i in seq(2, length(xs))) { if (!identical(xs[[1]], xs[[i]])) return(FALSE) } TRUE } tidyr/R/separate-rows.R0000644000176200001440000000235713523110301014521 0ustar liggesusers#' Separate a collapsed column into multiple rows #' #' If a variable contains observations with multiple delimited values, this #' separates the values and places each one in its own row. #' #' @inheritSection gather Rules for selection #' @inheritParams fill #' @inheritParams gather #' @param sep Separator delimiting collapsed values. #' @export #' @examples #' df <- data.frame( #' x = 1:3, #' y = c("a", "d,e,f", "g,h"), #' z = c("1", "2,3,4", "5,6"), #' stringsAsFactors = FALSE #' ) #' separate_rows(df, y, z, convert = TRUE) separate_rows <- function(data, ..., sep = "[^[:alnum:].]+", convert = FALSE) { ellipsis::check_dots_unnamed() UseMethod("separate_rows") } #' @export separate_rows.data.frame <- function(data, ..., sep = "[^[:alnum:].]+", convert = FALSE) { vars <- tidyselect::vars_select(tbl_vars(data), ...) out <- purrr::modify_at(data, vars, stringi::stri_split_regex, pattern = sep) out <- unchop(out, vars) if (convert) { out[vars] <- map(out[vars], type.convert, as.is = TRUE) } reconstruct_tibble(data, out, vars) } tidyr/R/tidyr.R0000644000176200001440000000234013523110301013050 0ustar liggesusers#' @keywords internal #' @import rlang #' @import vctrs #' @importFrom glue glue #' @importFrom purrr accumulate discard every keep map map2 map2_chr #' map2_dbl map2_df map2_int map2_lgl map_at map_chr map_dbl map_df #' map_if map_int map_lgl pmap pmap_chr pmap_dbl pmap_df pmap_int #' pmap_lgl reduce some transpose #' @importFrom dplyr tbl_vars #' @importFrom utils type.convert #' @importFrom lifecycle deprecated #' @useDynLib tidyr, .registration = TRUE "_PACKAGE" globalVariables(".") #' @importFrom tibble tribble #' @export tibble::tribble #' @importFrom tibble tibble #' @export tibble::tibble #' @importFrom tibble as_tibble #' @export tibble::as_tibble #' @aliases select_helpers #' @importFrom tidyselect contains #' @export tidyselect::contains #' @importFrom tidyselect ends_with #' @export tidyselect::ends_with #' @importFrom tidyselect everything #' @export tidyselect::everything #' @importFrom tidyselect matches #' @export tidyselect::matches #' @importFrom tidyselect num_range #' @export tidyselect::num_range #' @importFrom tidyselect one_of #' @export tidyselect::one_of #' @importFrom tidyselect starts_with #' @export tidyselect::starts_with #' @importFrom tidyselect last_col #' @export tidyselect::last_col tidyr/R/drop-na.R0000644000176200001440000000254313523110301013262 0ustar liggesusers#' Drop rows containing missing values #' #' @param data A data frame. #' @inheritSection gather Rules for selection #' @inheritParams gather #' @examples #' library(dplyr) #' df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b")) #' df %>% drop_na() #' df %>% drop_na(x) #' @export drop_na <- function(data, ...) { ellipsis::check_dots_unnamed() UseMethod("drop_na") } #' @export drop_na.data.frame <- function(data, ...) { vars <- unname(tidyselect::vars_select(tbl_vars(data), ...)) if (is_empty(vars)) { f <- complete_cases(data) } else { f <- complete_cases(data[vars]) } out <- data[f, , drop = FALSE] reconstruct_tibble(data, out) } # copied from ggplot2 # TODO: reimplement in C roughly following complete.cases() C backend # https://github.com/wch/r-source/blob/master/src/library/stats/src/complete_cases.c complete_cases <- function(x, fun) { ok <- vapply(x, is_complete, logical(nrow(x))) # Need a special case test when x has exactly one row, because rowSums # doesn't respect dimensions for 1x1 matrices. vapply returns a vector (not # a matrix when the input has one row. if (is.vector(ok)) { all(ok) } else { # Find all the rows where all are TRUE rowSums(as.matrix(ok)) == ncol(x) } } is_complete <- function(x) { if (typeof(x) == "list") { !vapply(x, is_empty, logical(1)) } else { !is.na(x) } } tidyr/R/append.R0000644000176200001440000000123513447232757013217 0ustar liggesusersappend_df <- function(x, y, after = length(x), remove = FALSE) { if (is.character(after)) { after <- match(after, dplyr::tbl_vars(x)) } else if (!is.integer(after)) { stop("`after` must be character or integer", call. = FALSE) } # Replace duplicated variables x_vars <- setdiff(names(x), names(y)) if (remove) { x_vars <- setdiff(x_vars, names(x)[[after]]) after <- after - 1L } y <- append(x[x_vars], y, after = after) structure(y, class = class(x), row.names = .row_names_info(x, 0L)) } append_col <- function(x, col, name, after = length(x)) { name <- enc2utf8(name) append_df(x, set_names(list(col), name), after = after) } tidyr/R/spread.R0000644000176200001440000001350413612143254013213 0ustar liggesusers#' Spread a key-value pair across multiple columns #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("retired")} #' #' Development on `spread()` is complete, and for new code we recommend #' switching to `pivot_wider()`, which is easier to use, more featureful, and #' still under active development. #' `df %>% spread(key, value)` is equivalent to #' `df %>% pivot_wider(names_from = key, values_from = value)` #' #' See more details in `vignette("pivot")`. #' #' @param data A data frame. #' @param key,value Column names or positions. This is passed to #' [tidyselect::vars_pull()]. #' #' These arguments are passed by expression and support #' [quasiquotation][rlang::quasiquotation] (you can unquote column #' names or column positions). #' @param fill If set, missing values will be replaced with this value. Note #' that there are two types of missingness in the input: explicit missing #' values (i.e. `NA`), and implicit missings, rows that simply aren't #' present. Both types of missing value will be replaced by `fill`. #' @param convert If `TRUE`, [type.convert()] with \code{asis = #' TRUE} will be run on each of the new columns. This is useful if the value #' column was a mix of variables that was coerced to a string. If the class of #' the value column was factor or date, note that will not be true of the new #' columns that are produced, which are coerced to character before type #' conversion. #' @param drop If `FALSE`, will keep factor levels that don't appear in the #' data, filling in missing combinations with `fill`. #' @param sep If `NULL`, the column names will be taken from the values of #' `key` variable. If non-`NULL`, the column names will be given #' by `""`. #' @export #' @examples #' library(dplyr) #' stocks <- data.frame( #' time = as.Date('2009-01-01') + 0:9, #' X = rnorm(10, 0, 1), #' Y = rnorm(10, 0, 2), #' Z = rnorm(10, 0, 4) #' ) #' stocksm <- stocks %>% gather(stock, price, -time) #' stocksm %>% spread(stock, price) #' stocksm %>% spread(time, price) #' #' # Spread and gather are complements #' df <- data.frame(x = c("a", "b"), y = c(3, 4), z = c(5, 6)) #' df %>% spread(x, y) %>% gather("x", "y", a:b, na.rm = TRUE) #' #' # Use 'convert = TRUE' to produce variables of mixed type #' df <- data.frame(row = rep(c(1, 51), each = 3), #' var = c("Sepal.Length", "Species", "Species_num"), #' value = c(5.1, "setosa", 1, 7.0, "versicolor", 2)) #' df %>% spread(var, value) %>% str #' df %>% spread(var, value, convert = TRUE) %>% str spread <- function(data, key, value, fill = NA, convert = FALSE, drop = TRUE, sep = NULL) { UseMethod("spread") } #' @export spread.data.frame <- function(data, key, value, fill = NA, convert = FALSE, drop = TRUE, sep = NULL) { key_var <- tidyselect::vars_pull(names(data), !! enquo(key)) value_var <- tidyselect::vars_pull(names(data), !! enquo(value)) col <- data[key_var] col_id <- id(col, drop = drop) col_labels <- split_labels(col, col_id, drop = drop) rows <- data[setdiff(names(data), c(key_var, value_var))] if (ncol(rows) == 0 && nrow(rows) > 0) { # Special case when there's only one row row_id <- structure(1L, n = 1L) row_labels <- as.data.frame(matrix(nrow = 1, ncol = 0)) } else { row_id <- id(rows, drop = drop) row_labels <- split_labels(rows, row_id, drop = drop) rownames(row_labels) <- NULL } overall <- id(list(col_id, row_id), drop = FALSE) n <- attr(overall, "n") # Check that each output value occurs in unique location if (anyDuplicated(overall)) { groups <- split(seq_along(overall), overall) groups <- groups[map_int(groups, length) > 1] shared <- sum(map_int(groups, length)) str <- map_chr(groups, function(x) paste0(x, collapse = ", ")) rows <- paste0(paste0("* ", str, "\n"), collapse = "") abort(glue( "Each row of output must be identified by a unique combination of keys.", "\nKeys are shared for {shared} rows:", "\n{rows}" )) } # Add in missing values, if necessary if (length(overall) < n) { overall <- match(seq_len(n), overall, nomatch = NA) } else { overall <- order(overall) } value <- data[[value_var]] ordered <- value[overall] if (!is.na(fill)) { ordered[is.na(ordered)] <- fill } if (convert && !is_character(ordered)) { ordered <- as.character(ordered) } dim(ordered) <- c(attr(row_id, "n"), attr(col_id, "n")) colnames(ordered) <- enc2utf8(col_names(col_labels, sep = sep)) ordered <- as_tibble_matrix(ordered) if (convert) { ordered[] <- map(ordered, type.convert, as.is = TRUE) } out <- append_df(row_labels, ordered) reconstruct_tibble(data, out, c(key_var, value_var)) } col_names <- function(x, sep = NULL) { names <- as.character(x[[1]]) if (is_null(sep)) { if (length(names) == 0) { # ifelse will return logical() character() } else { ifelse(are_na(names), "", names) } } else { paste(names(x)[[1]], names, sep = sep) } } as_tibble_matrix <- function(x) { # getS3method() only available in R >= 3.3 get("as_tibble.matrix", asNamespace("tibble"), mode = "function")(x) } split_labels <- function(df, id, drop = TRUE) { if (length(df) == 0) { return(df) } if (drop) { representative <- match(sort(unique(id)), id) out <- df[representative, , drop = FALSE] rownames(out) <- NULL out } else { unique_values <- map(df, ulevels) rev(expand.grid(rev(unique_values), stringsAsFactors = FALSE)) } } ulevels <- function(x) { if (is.factor(x)) { orig_levs <- levels(x) x <- addNA(x, ifany = TRUE) levs <- levels(x) factor(levs, levels = orig_levs, ordered = is.ordered(x), exclude = NULL) } else if (is.list(x)) { unique(x) } else { sort(unique(x), na.last = TRUE) } } tidyr/R/data.R0000644000176200001440000001216213612143254012645 0ustar liggesusers#' World Health Organization TB data #' #' A subset of data from the World Health Organization Global Tuberculosis #' Report, and accompanying global populations. #' #' @format A dataset with the variables #' \describe{ #' \item{country}{Country name} #' \item{iso2, iso3}{2 & 3 letter ISO country codes} #' \item{year}{Year} #' \item{new_sp_m014 - new_rel_f65}{Counts of new TB cases recorded by group. #' Column names encode three variables that describe the group (see details).} #' } #' @details The data uses the original codes given by the World Health #' Organization. The column names for columns five through 60 are made by #' combining `new_` to a code for method of diagnosis (`rel` = #' relapse, `sn` = negative pulmonary smear, `sp` = positive #' pulmonary smear, `ep` = extrapulmonary) to a code for gender #' (`f` = female, `m` = male) to a code for age group (`014` = #' 0-14 yrs of age, `1524` = 15-24 years of age, `2534` = 25 to #' 34 years of age, `3544` = 35 to 44 years of age, `4554` = 45 to #' 54 years of age, `5564` = 55 to 64 years of age, `65` = 65 years #' of age or older). #' #' @source "who" #' @rdname who "population" #' Example tabular representations #' #' Data sets that demonstrate multiple ways to layout the same tabular data. #' #' `table1`, `table2`, `table3`, `table4a`, `table4b`, #' and `table5` all display the number of TB cases documented by the World #' Health Organization in Afghanistan, Brazil, and China between 1999 and 2000. #' The data contains values associated with four variables (country, year, #' cases, and population), but each table organizes the values in a different #' layout. #' #' The data is a subset of the data contained in the World Health #' Organization Global Tuberculosis Report #' #' @source "table1" #' @rdname table1 "table2" #' @rdname table1 "table3" #' @rdname table1 "table4a" #' @rdname table1 "table4b" #' @rdname table1 "table5" #' Some data about the Smith family #' #' A small demo dataset describing John and Mary Smith. #' #' @format A data frame with 2 rows and 5 columns. "smiths" #' US rent and income data #' #' Captured from the 2017 American Community Survey using the tidycensus #' package. #' #' @format A dataset with variables: #' \describe{ #' \item{GEOID}{FIP state identifier} #' \item{NAME}{Name of state} #' \item{variable}{Variable name: income = median yearly income, #' rent = median monthly rent} #' \item{estimate}{Estimated value} #' \item{moe}{90% margin of error} #' } "us_rent_income" #' Fish encounters #' #' Information about fish swimming down a river: each station represents an #' autonomous monitor that records if a tagged fish was seen at that location. #' Fish travel in one direction (migrating downstream). Information about #' misses is just as important as hits, but is not directly recorded in this #' form of the data. #' #' @source #' Dataset provided by Myfanwy Johnston; more details at #' #' #' @format A dataset with variables: #' \describe{ #' \item{fish}{Fish identifier} #' \item{station}{Measurement station} #' \item{seen}{Was the fish seen? (1 if yes, and true for all rows)} #' } "fish_encounters" #' Population data from the world bank #' #' Data about population from the World Bank. #' #' @source #' Dataset from the World Bank data bank: #' #' @format A dataset with variables: #' \describe{ #' \item{country}{Three letter country code} #' \item{indicator}{Indicator name: `SP.POP.GROW` = population growth, #' `SP.POP.TOTL` = total population, `SP.URB.GROW` = urban population #' growth, `SP.URB.TOTL` = total urban population} #' \item{2000-2018}{Value for each year} #' } "world_bank_pop" #' Pew religion and income survey #' #' @format A dataset with variables: #' \describe{ #' \item{religion}{Name of religion} #' \item{`<$10k`-`Don\'t know/refused`}{Number of respondees with #' income range in column name} #' } #' @source #' Downloaded from #' (downloaded November 2009) "relig_income" #' Completed construction in the US in 2018 #' #' @format A dataset with variables: #' \describe{ #' \item{Year,Month}{Record date} #' \item{`1 unit`, `2 to 4 units`, `5 units or mote`}{Number of completed #' units of each size} #' \item{Northeast,Midwest,South,West}{Number of completed units in each region} #' } #' @source #' Completions of "New Residential Construction" found in Table 5 at #' #' (downloaded March 2019) "construction" #' Song rankings for billboard top 100 in the year 2000 #' #' @format A dataset with variables: #' \describe{ #' \item{artist}{Artist name} #' \item{track}{Song name}, #' \item{date.enter}{Date the song entered the top 100} #' \item{wk1 -- wk76}{Rank of the song in each week after it entered} #' } #' @source #' The "Whitburn" project, , #' (downloaded April 2008) "billboard" tidyr/R/pivot-wide.R0000644000176200001440000002020713612142023014013 0ustar liggesusers#' Pivot data from long to wide # #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} #' #' `pivot_wider()` "widens" data, increasing the number of columns and #' decreasing the number of rows. The inverse transformation is #' [pivot_longer()]. #' #' Learn more in `vignette("pivot")`. #' #' @details #' `pivot_wider()` is an updated approach to [spread()], designed to be both #' simpler to use and to handle more use cases. We recomend you use #' `pivot_wider()` for new code; `spread()` isn't going away but is no longer #' under active development. #' #' @seealso [pivot_wider_spec()] to pivot "by hand" with a data frame that #' defines a pivotting specification. #' @inheritParams pivot_longer #' @param id_cols A set of columns that uniquely identifies each observation. #' Defaults to all columns in `data` except for the columns specified in #' `names_from` and `values_from`. Typically used when you have additional #' variables that is directly related. #' @param names_from,values_from A pair of arguments describing which column #' (or columns) to get the name of the output column (`name_from`), and #' which column (or columns) to get the cell values from (`values_from`). #' #' If `values_from` contains multiple values, the value will be added to the #' front of the output column. #' @param names_sep If `names_from` or `values_from` contains multiple #' variables, this will be used to join their values together into a single #' string to use as a column name. #' @param names_prefix String added to the start of every variable name. This is #' particularly useful if `names_from` is a numeric vector and you want to #' create syntactic variable names. #' @param values_fill Optionally, a named list specifying what each `value` #' should be filled in with when missing. #' @param values_fn Optionally, a named list providing a function that will be #' applied to the `value` in each cell in the output. You will typically #' use this when the combination of `id_cols` and `value` column does not #' uniquely identify an observation. #' @export #' @examples #' # See vignette("pivot") for examples and explanation #' #' fish_encounters #' fish_encounters %>% #' pivot_wider(names_from = station, values_from = seen) #' # Fill in missing values #' fish_encounters %>% #' pivot_wider( #' names_from = station, #' values_from = seen, #' values_fill = list(seen = 0) #' ) #' #' # Generate column names from multiple variables #' us_rent_income %>% #' pivot_wider(names_from = variable, values_from = c(estimate, moe)) #' #' # Can perform aggregation with values_fn #' warpbreaks <- as_tibble(warpbreaks[c("wool", "tension", "breaks")]) #' warpbreaks #' warpbreaks %>% #' pivot_wider( #' names_from = wool, #' values_from = breaks, #' values_fn = list(breaks = mean) #' ) pivot_wider <- function(data, id_cols = NULL, names_from = name, names_prefix = "", names_sep = "_", names_repair = "check_unique", values_from = value, values_fill = NULL, values_fn = NULL) { names_from <- enquo(names_from) values_from <- enquo(values_from) spec <- build_wider_spec(data, names_from = !!names_from, values_from = !!values_from, names_prefix = names_prefix, names_sep = names_sep ) id_cols <- enquo(id_cols) pivot_wider_spec(data, spec, !!id_cols, names_repair = names_repair, values_fill = values_fill, values_fn = values_fn ) } #' Pivot data from long to wide using a spec #' #' This is a low level interface to pivotting, inspired by the cdata package, #' that allows you to describe pivotting with a data frame. #' #' @keywords internal #' @export #' @inheritParams pivot_wider pivot_wider_spec <- function(data, spec, names_repair = "check_unique", id_cols = NULL, values_fill = NULL, values_fn = NULL) { spec <- check_spec(spec) values <- vec_unique(spec$.value) spec_cols <- c(names(spec)[-(1:2)], values) id_cols <- enquo(id_cols) if (!quo_is_null(id_cols)) { key_vars <- tidyselect::vars_select(tbl_vars(data), !!id_cols) } else { key_vars <- tbl_vars(data) } key_vars <- setdiff(key_vars, spec_cols) # Figure out rows in output df_rows <- data[key_vars] if (ncol(df_rows) == 0) { rows <- tibble(.rows = 1) row_id <- rep(1L, nrow(df_rows)) } else { rows <- vec_unique(df_rows) row_id <- vec_match(df_rows, rows) } value_specs <- unname(split(spec, spec$.value)) value_out <- vec_init(list(), length(value_specs)) for (i in seq_along(value_out)) { spec_i <- value_specs[[i]] value <- spec_i$.value[[1]] val <- data[[value]] cols <- data[names(spec_i)[-(1:2)]] col_id <- vec_match(cols, spec_i[-(1:2)]) val_id <- data.frame(row = row_id, col = col_id) dedup <- vals_dedup( key = val_id, val = val, value = value, summarize = values_fn[[value]] ) val_id <- dedup$key val <- dedup$val nrow <- nrow(rows) ncol <- nrow(spec_i) fill <- values_fill[[value]] if (is.null(fill)) { out <- vec_init(val, nrow * ncol) } else { stopifnot(vec_size(fill) == 1) fill <- vec_cast(fill, val) out <- vec_repeat(fill, nrow * ncol) } vec_slice(out, val_id$row + nrow * (val_id$col - 1L)) <- val value_out[[i]] <- wrap_vec(out, spec_i$.name) } out <- wrap_error_names(vec_cbind(rows, !!!value_out, .name_repair = names_repair)) # recreate desired column order # https://github.com/r-lib/vctrs/issues/227 if (all(spec$.name %in% names(out))) { out <- out[c(names(rows), spec$.name)] } reconstruct_tibble(data, out) } #' @export #' @rdname pivot_wider_spec #' @inheritParams pivot_wider build_wider_spec <- function(data, names_from = name, values_from = value, names_prefix = "", names_sep = "_") { names_from <- tidyselect::vars_select(tbl_vars(data), !!enquo(names_from)) values_from <- tidyselect::vars_select(tbl_vars(data), !!enquo(values_from)) row_ids <- vec_unique(data[names_from]) row_names <- exec(paste, !!!row_ids, sep = names_sep) out <- tibble( .name = paste0(names_prefix, row_names) ) if (length(values_from) == 1) { out$.value <- values_from } else { out <- vec_repeat(out, times = vec_size(values_from)) out$.value <- vec_repeat(values_from, each = vec_size(row_ids)) out$.name <- paste0(out$.value, names_sep, out$.name) row_ids <- vec_repeat(row_ids, times = vec_size(values_from)) } vec_cbind(out, row_ids) } # quiet R CMD check name <- value <- NULL # Helpers ----------------------------------------------------------------- # Not a great name as it now also casts vals_dedup <- function(key, val, value, summarize = NULL) { if (is.null(summarize)) { if (!vec_duplicate_any(key)) { return(list(key = key, val = val)) } warn(glue::glue( "Values in `{value}` are not uniquely identified; output will contain list-cols.\n", "* Use `values_fn = list({value} = list)` to suppress this warning.\n", "* Use `values_fn = list({value} = length)` to identify where the duplicates arise\n", "* Use `values_fn = list({value} = summary_fun)` to summarise duplicates" )) } out <- vec_split(val, key) if (!is.null(summarize) && !identical(summarize, list)) { summarize <- as_function(summarize) # This is only correct if `values_collapse` always returns a single value # Needs https://github.com/r-lib/vctrs/issues/183 out$val <- vec_c(!!!map(out$val, summarize)) } out } # Wrap a "rectangular" vector into a data frame wrap_vec <- function(vec, names) { ncol <- length(names) nrow <- length(vec) / ncol out <- set_names(vec_init(list(), ncol), names) for (i in 1:ncol) { out[[i]] <- vec_slice(vec, ((i - 1) * nrow + 1):(i * nrow)) } as_tibble(out) } tidyr/R/dep-lazyeval.R0000644000176200001440000002175713534720462014350 0ustar liggesusers# nocov start #' Deprecated SE versions of main verbs #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")} #' #' tidyr used to offer twin versions of each verb suffixed with an #' underscore. These versions had standard evaluation (SE) semantics: #' rather than taking arguments by code, like NSE verbs, they took #' arguments by value. Their purpose was to make it possible to #' program with tidyr. However, tidyr now uses tidy evaluation #' semantics. NSE verbs still capture their arguments, but you can now #' unquote parts of these arguments. This offers full programmability #' with NSE verbs. Thus, the underscored versions are now superfluous. #' #' Unquoting triggers immediate evaluation of its operand and inlines #' the result within the captured expression. This result can be a #' value or an expression to be evaluated later with the rest of the #' argument. See `vignette("programming", "dplyr")` for more information. #' #' @param data A data frame #' @param vars,cols,col Name of columns. #' @name deprecated-se #' @keywords internal NULL #' @export complete.default <- function(data, ..., fill = list()) { complete_(data, .dots = compat_as_lazy_dots(...), fill = fill) } #' @rdname deprecated-se #' @inheritParams complete #' @export complete_ <- function(data, cols, fill = list(), ...) { lifecycle::deprecate_warn("1.0.0", "complete_()", "complete()") UseMethod("complete_") } #' @export complete_.data.frame <- function(data, cols, fill = list(), ...) { cols <- compat_lazy_dots(cols, caller_env()) complete(data, !!! cols, fill = fill) } #' @export drop_na.default <- function(data, ...) { drop_na_(data, vars = compat_as_lazy_dots(...)) } #' @rdname deprecated-se #' @export drop_na_ <- function(data, vars) { lifecycle::deprecate_warn("1.0.0", "drop_na_()", "drop_na()") UseMethod("drop_na_") } #' @export drop_na_.data.frame <- function(data, vars) { drop_na(data, !!! vars) } #' @export expand.default <- function(data, ...) { expand_(data, .dots = compat_as_lazy_dots(...)) } #' @rdname deprecated-se #' @param expand_cols Character vector of column names to be expanded. #' @export expand_ <- function(data, dots, ...) { lifecycle::deprecate_warn("1.0.0", "expand_()", "expand()") UseMethod("expand_") } #' @export expand_.data.frame <- function(data, dots, ...) { dots <- compat_lazy_dots(dots, caller_env()) expand(data, !!! dots) } #' @rdname deprecated-se #' @param x For `nesting_` and `crossing_` a list of variables. #' @export crossing_ <- function(x) { lifecycle::deprecate_warn("1.0.0", "crossing_()", "crossing()") x <- compat_lazy_dots(x, caller_env()) crossing(!!! x) } #' @rdname deprecated-se #' @export nesting_ <- function(x) { x <- compat_lazy_dots(x, caller_env()) nesting(!!! x) } #' @export extract.default <- function(data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ...) { extract_(data, col = compat_as_lazy(enquo(col)), into = into, regex = regex, remove = remove, convert = convert, ... ) } #' @rdname deprecated-se #' @inheritParams extract #' @export extract_ <- function(data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ...) { lifecycle::deprecate_warn("1.0.0", "extract_()", "extract()") UseMethod("extract_") } #' @export extract_.data.frame <- function(data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ...) { col <- compat_lazy(col, caller_env()) extract(data, col = !! col, into = into, regex = regex, remove = remove, convert = convert, ... ) } #' @export fill.default <- function(data, ..., .direction = c("down", "up", "downup", "updown")) { fill_(data, fill_cols = compat_as_lazy_dots(...), .direction = .direction) } #' @rdname deprecated-se #' @inheritParams fill #' @param fill_cols Character vector of column names. #' @export fill_ <- function(data, fill_cols, .direction = c("down", "up")) { UseMethod("fill_") } #' @export fill_.data.frame <- function(data, fill_cols, .direction = c("down", "up", "downup", "updown")) { vars <- syms(fill_cols) fill(data, !!! vars, .direction = .direction) } #' @export gather.default <- function(data, key = "key", value = "value", ..., na.rm = FALSE, convert = FALSE, factor_key = FALSE) { gather_(data, key_col = compat_as_lazy(enquo(key)), value_col = compat_as_lazy(enquo(value)), ..., na.rm = na.rm, convert = convert, factor_key = factor_key ) } #' @rdname deprecated-se #' @inheritParams gather #' @param key_col,value_col Strings giving names of key and value columns to #' create. #' @param gather_cols Character vector giving column names to be gathered into #' pair of key-value columns. #' @keywords internal #' @export gather_ <- function(data, key_col, value_col, gather_cols, na.rm = FALSE, convert = FALSE, factor_key = FALSE) { UseMethod("gather_") } #' @export gather_.data.frame <- function(data, key_col, value_col, gather_cols, na.rm = FALSE, convert = FALSE, factor_key = FALSE) { key_col <- sym(key_col) value_col <- sym(value_col) gather_cols <- syms(gather_cols) gather(data, key = !! key_col, value = !! value_col, !!! gather_cols, na.rm = na.rm, convert = convert, factor_key = factor_key ) } #' @rdname deprecated-se #' @inheritParams nest #' @keywords internal #' @export nest_ <- function(...) { lifecycle::deprecate_stop("1.0.0", "nest_()", "nest()") } #' @export separate_rows.default <- function(data, ..., sep = "[^[:alnum:].]+", convert = FALSE) { cols <- compat_as_lazy_dots(...) separate_rows_(data, cols = cols, sep = sep) } #' @rdname deprecated-se #' @inheritParams separate_rows #' @export separate_rows_ <- function(data, cols, sep = "[^[:alnum:].]+", convert = FALSE) { UseMethod("separate_rows_") } #' @export separate_rows_.data.frame <- function(data, cols, sep = "[^[:alnum:].]+", convert = FALSE) { cols <- syms(cols) separate_rows(data, !!! cols, sep = sep, convert = convert) } #' @export separate.default <- function(data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ...) { col <- compat_as_lazy(enquo(col)) separate_(data, col = col, into = into, sep = sep, remove = remove, convert = convert, extra = extra, fill = fill, ... ) }#' @rdname deprecated-se #' @inheritParams separate #' @export separate_ <- function(data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ...) { UseMethod("separate_") } #' @export separate_.data.frame <- function(data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ...) { col <- sym(col) separate(data, col = !! col, into = into, sep = sep, remove = remove, convert = convert, extra = extra, fill = fill, ... ) } #' @export spread.default <- function(data, key, value, fill = NA, convert = FALSE, drop = TRUE, sep = NULL) { key <- compat_as_lazy(enquo(key)) value <- compat_as_lazy(enquo(value)) spread_(data, key_col = key, value_col = value, fill = fill, convert = convert, drop = drop, sep = sep ) } #' @rdname deprecated-se #' @inheritParams spread #' @param key_col,value_col Strings giving names of key and value cols. #' @export spread_ <- function(data, key_col, value_col, fill = NA, convert = FALSE, drop = TRUE, sep = NULL) { UseMethod("spread_") } #' @export spread_.data.frame <- function(data, key_col, value_col, fill = NA, convert = FALSE, drop = TRUE, sep = NULL) { key_col <- sym(key_col) value_col <- sym(value_col) spread(data, key = !! key_col, value = !! value_col, fill = fill, convert = convert, drop = drop, sep = sep ) } #' @export unite.default <- function(data, col, ..., sep = "_", remove = TRUE) { col <- compat_as_lazy(enquo(col)) from <- compat_as_lazy_dots(...) unite_(data, col, from, sep = sep, remove = remove) } #' @rdname deprecated-se #' @inheritParams unite #' @param from Names of existing columns as character vector #' @export unite_ <- function(data, col, from, sep = "_", remove = TRUE) { UseMethod("unite_") } #' @export unite_.data.frame <- function(data, col, from, sep = "_", remove = TRUE) { col <- quo_get_expr(compat_lazy(col, caller_env())) from <- syms(from) unite(data, !! col, !!! from, sep = sep, remove = remove) } #' @rdname deprecated-se #' @inheritParams unnest #' @export unnest_ <- function(...) { lifecycle::deprecate_stop("1.0.0", "unnest_()", "unnest()") } # nocov end tidyr/R/RcppExports.R0000644000176200001440000000123213612143263014221 0ustar liggesusers# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 fillDown <- function(x) { .Call(`_tidyr_fillDown`, x) } fillUp <- function(x) { .Call(`_tidyr_fillUp`, x) } melt_dataframe <- function(data, id_ind, measure_ind, variable_name, value_name, attrTemplate, factorsAsStrings, valueAsFactor, variableAsFactor) { .Call(`_tidyr_melt_dataframe`, data, id_ind, measure_ind, variable_name, value_name, attrTemplate, factorsAsStrings, valueAsFactor, variableAsFactor) } simplifyPieces <- function(pieces, p, fillLeft = TRUE) { .Call(`_tidyr_simplifyPieces`, pieces, p, fillLeft) } tidyr/R/nest-legacy.R0000644000176200001440000001647713612143254014164 0ustar liggesusers#' Legacy versions of `nest()` and `unnest()` #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("retired")} #' #' tidyr 1.0.0 introduced a new syntax for [nest()] and [unnest()]. The majority #' of existing usage should be automatically translated to the new syntax with a #' warning. However, if you need to quickly roll back to the previous behaviour, #' these functions provide the previous interface. To make old code work as is, #' add the following code to the top of your script: #' #' ``` #' library(tidyr) #' nest <- nest_legacy #' unnest <- unnest_legacy #' ``` #' #' @param data A data frame. #' @param .key The name of the new column, as a string or symbol. This argument #' is passed by expression and supports #' [quasiquotation][rlang::quasiquotation] (you can unquote strings and #' symbols). The name is captured from the expression with [rlang::ensym()] #' (note that this kind of interface where symbols do not represent actual #' objects is now discouraged in the tidyverse; we support it here for #' backward compatibility). #' @param ... Specification of columns to unnest. Use bare variable names or #' functions of variables. If omitted, defaults to all list-cols. #' @param .drop Should additional list columns be dropped? By default, #' `unnest()` will drop them if unnesting the specified columns requires the #' rows to be duplicated. #' @param .preserve Optionally, list-columns to preserve in the output. These #' will be duplicated in the same way as atomic vectors. This has #' [dplyr::select()] semantics so you can preserve multiple variables with #' `.preserve = c(x, y)` or `.preserve = starts_with("list")`. #' @param .id Data frame identifier - if supplied, will create a new column with #' name `.id`, giving a unique identifier. This is most useful if the list #' column is named. #' @param .sep If non-`NULL`, the names of unnested data frame columns will #' combine the name of the original list-col with the names from the nested #' data frame, separated by `.sep`. #' @export #' @examples #' # Nest and unnest are inverses #' df <- data.frame(x = c(1, 1, 2), y = 3:1) #' df %>% nest_legacy(y) #' df %>% nest_legacy(y) %>% unnest_legacy() #' #' # nesting ------------------------------------------------------------------- #' as_tibble(iris) %>% nest_legacy(-Species) #' as_tibble(chickwts) %>% nest_legacy(weight) #' #' # unnesting ----------------------------------------------------------------- #' df <- tibble( #' x = 1:2, #' y = list( #' tibble(z = 1), #' tibble(z = 3:4) #' ) #' ) #' df %>% unnest_legacy(y) #' #' # You can also unnest multiple columns simultaneously #' df <- tibble( #' a = list(c("a", "b"), "c"), #' b = list(1:2, 3), #' c = c(11, 22) #' ) #' df %>% unnest_legacy(a, b) #' # If you omit the column names, it'll unnest all list-cols #' df %>% unnest_legacy() nest_legacy <- function(data, ..., .key = "data") { UseMethod("nest_legacy") } #' @importFrom utils packageVersion #' @export nest_legacy.tbl_df <- function(data, ..., .key = "data") { key_var <- as_string(ensym2(.key)) nest_vars <- unname(tidyselect::vars_select(names(data), ...)) if (is_empty(nest_vars)) { nest_vars <- names(data) } if (dplyr::is_grouped_df(data)) { group_vars <- dplyr::group_vars(data) } else { group_vars <- setdiff(names(data), nest_vars) } nest_vars <- setdiff(nest_vars, group_vars) data <- dplyr::ungroup(data) if (is_empty(group_vars)) { return(tibble(!! key_var := list(data))) } out <- dplyr::select(data, !!! syms(group_vars)) if (packageVersion("dplyr") < "0.8.0") { idx <- dplyr::group_indices(data, !!! syms(group_vars)) } else { idx <- dplyr::group_indices(data, !!! syms(group_vars), .drop = TRUE) } representatives <- which(!duplicated(idx)) out <- dplyr::slice(out, representatives) out[[key_var]] <- unname(split(data[nest_vars], idx))[unique(idx)] out } #' @export nest_legacy.data.frame <- function(data, ..., .key = "data") { .key <- enquo(.key) # Don't transform subclasses if (identical(class(data), "data.frame")) { data <- tibble::as_tibble(data) } nest_legacy.tbl_df(data, ..., .key = !! .key) } #' @export #' @rdname nest_legacy unnest_legacy <- function(data, ..., .drop = NA, .id = NULL, .sep = NULL, .preserve = NULL) { UseMethod("unnest_legacy") } #' @export unnest_legacy.data.frame <- function(data, ..., .drop = NA, .id = NULL, .sep = NULL, .preserve = NULL) { preserve <- tidyselect::vars_select(names(data), !!enquo(.preserve)) quos <- quos(...) if (is_empty(quos)) { list_cols <- names(data)[map_lgl(data, is_list)] list_cols <- setdiff(list_cols, preserve) quos <- syms(list_cols) } if (length(quos) == 0) { return(data) } nested <- dplyr::transmute(dplyr::ungroup(data), !!! quos) n <- map(nested, function(x) unname(map_int(x, NROW))) if (length(unique(n)) != 1) { abort("All nested columns must have the same number of elements.") } types <- map_chr(nested, list_col_type) nest_types <- split.default(nested, types) if (length(nest_types$mixed) > 0) { probs <- paste(names(nest_types$mixed), collapse = ",") abort(glue( "Each column must either be a list of vectors or a list of ", "data frames [{probs}]" )) } unnested_atomic <- imap(nest_types$atomic %||% list(), enframe, .id = .id) if (length(unnested_atomic) > 0) { unnested_atomic <- dplyr::bind_cols(unnested_atomic) } unnested_dataframe <- map(nest_types$dataframe %||% list(), function(.){ if (length(.) == 0L) { attr(., "ptype") %||% data.frame() } else { dplyr::bind_rows(., .id = .id) } }) if (!is_null(.sep)) { unnested_dataframe <- imap( unnested_dataframe, function(df, name) { set_names(df, paste(name, names(df), sep = .sep)) } ) } if (length(unnested_dataframe) > 0) { unnested_dataframe <- dplyr::bind_cols(unnested_dataframe) } # Keep list columns by default, only if the rows aren't expanded if (identical(.drop, NA)) { n_in <- nrow(data) if (length(unnested_atomic)) { n_out <- nrow(unnested_atomic) } else { n_out <- nrow(unnested_dataframe) } .drop <- n_out != n_in } if (.drop) { is_atomic <- map_lgl(data, is_atomic) group_vars <- names(data)[is_atomic] } else { group_vars <- names(data) } group_vars <- setdiff(group_vars, names(nested)) # Add list columns to be preserved group_vars <- union(group_vars, preserve) rest <- data[rep(seq_nrow(data), n[[1]]), group_vars, drop = FALSE] out <- dplyr::bind_cols(rest, unnested_atomic, unnested_dataframe) reconstruct_tibble(data, out) } list_col_type <- function(x) { is_data_frame <- is.data.frame(attr(x, "ptype", exact = TRUE)) || (is.list(x) && all(map_lgl(x, is.data.frame))) is_atomic <- all(map_lgl(x, function(x) is_atomic(x) || (is_list(x) && !is.object(x)))) if (is_data_frame) { "dataframe" } else if (is_atomic) { "atomic" } else { "mixed" } } enframe <- function(x, col_name, .id = NULL) { out <- tibble(dplyr::combine(x)) names(out) <- col_name if (!is_null(.id)) { out[[.id]] <- id_col(x) } out } id_col <- function(x) { stopifnot(is_list(x)) ids <- if (is_null(names(x))) seq_along(x) else names(x) lengths <- map_int(x, length) ids[rep(seq_along(ids), lengths)] } tidyr/R/compat-lazyeval.R0000644000176200001440000000424713437754024015061 0ustar liggesusers# nocov start - compat-lazyeval (last updated: rlang 0.3.0) # This file serves as a reference for compatibility functions for lazyeval. # Please find the most recent version in rlang's repository. warn_underscored <- function() { return(NULL) warn(paste( "The underscored versions are deprecated in favour of", "tidy evaluation idioms. Please see the documentation", "for `quo()` in rlang" )) } warn_text_se <- function() { return(NULL) warn("Text parsing is deprecated, please supply an expression or formula") } compat_lazy <- function(lazy, env = caller_env(), warn = TRUE) { if (warn) warn_underscored() if (missing(lazy)) { return(quo()) } if (is_quosure(lazy)) { return(lazy) } if (is_formula(lazy)) { return(as_quosure(lazy, env)) } out <- switch(typeof(lazy), symbol = , language = new_quosure(lazy, env), character = { if (warn) warn_text_se() parse_quo(lazy[[1]], env) }, logical = , integer = , double = { if (length(lazy) > 1) { warn("Truncating vector to length 1") lazy <- lazy[[1]] } new_quosure(lazy, env) }, list = if (inherits(lazy, "lazy")) { lazy = new_quosure(lazy$expr, lazy$env) } ) if (is_null(out)) { abort(sprintf("Can't convert a %s to a quosure", typeof(lazy))) } else { out } } compat_lazy_dots <- function(dots, env, ..., .named = FALSE) { if (missing(dots)) { dots <- list() } if (inherits(dots, c("lazy", "formula"))) { dots <- list(dots) } else { dots <- unclass(dots) } dots <- c(dots, list(...)) warn <- TRUE for (i in seq_along(dots)) { dots[[i]] <- compat_lazy(dots[[i]], env, warn) warn <- FALSE } named <- have_name(dots) if (.named && any(!named)) { nms <- vapply(dots[!named], function(x) expr_text(get_expr(x)), character(1)) names(dots)[!named] <- nms } names(dots) <- names2(dots) dots } compat_as_lazy <- function(quo) { structure(class = "lazy", list( expr = get_expr(quo), env = get_env(quo) )) } compat_as_lazy_dots <- function(...) { structure(class = "lazy_dots", lapply(quos(...), compat_as_lazy)) } # nocov end tidyr/R/complete.R0000644000176200001440000000241513516125440013544 0ustar liggesusers#' Complete a data frame with missing combinations of data #' #' Turns implicit missing values into explicit missing values. #' This is a wrapper around [expand()], #' [dplyr::left_join()] and [replace_na()] that's #' useful for completing missing combinations of data. #' #' If you supply `fill`, these values will also replace existing #' explicit missing values in the data set. #' #' @inheritParams expand #' @param fill A named list that for each variable supplies a single value to #' use instead of `NA` for missing combinations. #' @export #' @examples #' library(dplyr, warn.conflicts = FALSE) #' df <- tibble( #' group = c(1:2, 1), #' item_id = c(1:2, 2), #' item_name = c("a", "b", "b"), #' value1 = 1:3, #' value2 = 4:6 #' ) #' df %>% complete(group, nesting(item_id, item_name)) #' #' # You can also choose to fill in missing values #' df %>% complete(group, nesting(item_id, item_name), fill = list(value1 = 0)) complete <- function(data, ..., fill = list()) { UseMethod("complete") } #' @export complete.data.frame <- function(data, ..., fill = list()) { full <- expand(data, ...) if (is_empty(full)) { return(data) } full <- dplyr::full_join(full, data, by = names(full)) full <- replace_na(full, replace = fill) reconstruct_tibble(data, full) } tidyr/R/seq.R0000644000176200001440000000255313523107541012527 0ustar liggesusers#' Create the full sequence of values in a vector #' #' This is useful if you want to fill in missing values that should have #' been observed but weren't. For example, `full_seq(c(1, 2, 4, 6), 1)` #' will return `1:6`. #' #' @param x A numeric vector. #' @param period Gap between each observation. The existing data will be #' checked to ensure that it is actually of this periodicity. #' @param tol Numerical tolerance for checking periodicity. #' @export #' @examples #' full_seq(c(1, 2, 4, 5, 10), 1) full_seq <- function(x, period, tol = 1e-6) { UseMethod("full_seq") } #' @export full_seq.numeric <- function(x, period, tol = 1e-6) { rng <- range(x, na.rm = TRUE) if (any(((x - rng[1]) %% period > tol) & (period - (x - rng[1]) %% period > tol))) { stop("`x` is not a regular sequence.", call. = FALSE) } # in cases where the last element is within tolerance, pad it so that # the output length is correct if (period - ((rng[2] - rng[1]) %% period) <= tol) { rng[2] <- rng[2] + tol } seq(rng[1], rng[2], by = period) } #' @export full_seq.Date <- function(x, period, tol = 1e-6) { restore(x, full_seq(as.numeric(x), period, tol)) } #' @export full_seq.POSIXct <- function(x, period, tol = 1e-6) { restore(x, full_seq(as.numeric(x), period, tol)) } restore <- function(old, new) { mostattributes(new) <- attributes(old) new } tidyr/R/separate.R0000644000176200001440000001273113612142023013533 0ustar liggesusers#' Separate a character column into multiple columns using a regular #' expression separator #' #' Given either regular expression or a vector of character positions, #' `separate()` turns a single character column into multiple columns. #' #' @inheritParams extract #' @param sep Separator between columns. #' #' If character, is interpreted as a regular expression. The default #' value is a regular expression that matches any sequence of #' non-alphanumeric values. #' #' If numeric, interpreted as positions to split at. Positive values start #' at 1 at the far-left of the string; negative value start at -1 at the #' far-right of the string. The length of `sep` should be one less than #' `into`. #' @param extra If `sep` is a character vector, this controls what #' happens when there are too many pieces. There are three valid options: #' #' * "warn" (the default): emit a warning and drop extra values. #' * "drop": drop any extra values without a warning. #' * "merge": only splits at most `length(into)` times #' @param fill If `sep` is a character vector, this controls what #' happens when there are not enough pieces. There are three valid options: #' #' * "warn" (the default): emit a warning and fill from the right #' * "right": fill with missing values on the right #' * "left": fill with missing values on the left #' @seealso [unite()], the complement, [extract()] which uses regular #' expression capturing groups. #' @export #' @examples #' library(dplyr) #' df <- data.frame(x = c(NA, "a.b", "a.d", "b.c")) #' df %>% separate(x, c("A", "B")) #' #' # If you just want the second variable: #' df %>% separate(x, c(NA, "B")) #' #' # If every row doesn't split into the same number of pieces, use #' # the extra and fill arguments to control what happens #' df <- data.frame(x = c("a", "a b", "a b c", NA)) #' df %>% separate(x, c("a", "b")) #' # The same behaviour drops the c but no warnings #' df %>% separate(x, c("a", "b"), extra = "drop", fill = "right") #' # Another option: #' df %>% separate(x, c("a", "b"), extra = "merge", fill = "left") #' # Or you can keep all three #' df %>% separate(x, c("a", "b", "c")) #' #' # If only want to split specified number of times use extra = "merge" #' df <- data.frame(x = c("x: 123", "y: error: 7")) #' df %>% separate(x, c("key", "value"), ": ", extra = "merge") #' #' # Use regular expressions to separate on multiple characters: #' df <- data.frame(x = c(NA, "a?b", "a.d", "b:c")) #' df %>% separate(x, c("A","B"), sep = "([\\.\\?\\:])") #' #' # convert = TRUE detects column classes #' df <- data.frame(x = c("a:1", "a:2", "c:4", "d", NA)) #' df %>% separate(x, c("key","value"), ":") %>% str #' df %>% separate(x, c("key","value"), ":", convert = TRUE) %>% str #' #' # Argument col can take quasiquotation to work with strings #' var <- "x" #' df %>% separate(!!var, c("key","value"), ":") separate <- function(data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ...) { ellipsis::check_dots_used() UseMethod("separate") } #' @export separate.data.frame <- function(data, col, into, sep = "[^[:alnum:]]+", remove = TRUE, convert = FALSE, extra = "warn", fill = "warn", ...) { var <- tidyselect::vars_pull(names(data), !! enquo(col)) value <- as.character(data[[var]]) new_cols <- str_separate(value, into = into, sep = sep, convert = convert, extra = extra, fill = fill ) out <- append_df(data, new_cols, var, remove = remove) reconstruct_tibble(data, out, if (remove) var else NULL) } str_separate <- function(x, into, sep, convert = FALSE, extra = "warn", fill = "warn") { if (!is.character(into)) { abort("`into` must be a character vector") } if (is.numeric(sep)) { out <- strsep(x, sep) } else if (is_character(sep)) { out <- str_split_fixed(x, sep, length(into), extra = extra, fill = fill) } else { abort("`sep` must be either numeric or character") } names(out) <- as_utf8_character(into) out <- out[!is.na(names(out))] if (convert) { out[] <- map(out, type.convert, as.is = TRUE) } as_tibble(out) } strsep <- function(x, sep) { nchar <- stringi::stri_length(x) pos <- map(sep, function(i) { if (i >= 0) return(i) pmax(0, nchar + i) }) pos <- c(list(0), pos, list(nchar)) map(1:(length(pos) - 1), function(i) { stringi::stri_sub(x, pos[[i]] + 1, pos[[i + 1]]) }) } str_split_fixed <- function(value, sep, n, extra = "warn", fill = "warn") { if (extra == "error") { warn(glue( "`extra = \"error\"` is deprecated. \\ Please use `extra = \"warn\"` instead" )) extra <- "warn" } extra <- arg_match(extra, c("warn", "merge", "drop")) fill <- arg_match(fill, c("warn", "left", "right")) n_max <- if (extra == "merge") n else -1L pieces <- stringi::stri_split_regex(value, sep, n_max) simp <- simplifyPieces(pieces, n, fill == "left") n_big <- length(simp$too_big) if (extra == "warn" && n_big > 0) { idx <- list_indices(simp$too_big) warn(glue("Expected {n} pieces. Additional pieces discarded in {n_big} rows [{idx}].")) } n_sml <- length(simp$too_sml) if (fill == "warn" && n_sml > 0) { idx <- list_indices(simp$too_sml) warn(glue("Expected {n} pieces. Missing pieces filled with `NA` in {n_sml} rows [{idx}].")) } simp$strings } list_indices <- function(x, max = 20) { if (length(x) > max) { x <- c(x[seq_len(max)], "...") } paste(x, collapse = ", ") } tidyr/R/extract.R0000644000176200001440000000543013612142023013377 0ustar liggesusers#' Extract a character column into multiple columns using regular #' expression groups #' #' Given a regular expression with capturing groups, `extract()` turns #' each group into a new column. If the groups don't match, or the input #' is NA, the output will be NA. #' #' @inheritParams expand #' @param col Column name or position. This is passed to #' [tidyselect::vars_pull()]. #' #' This argument is passed by expression and supports #' [quasiquotation][rlang::quasiquotation] (you can unquote column #' names or column positions). #' @param into Names of new variables to create as character vector. #' Use `NA` to omit the variable in the output. #' @param regex a regular expression used to extract the desired values. #' There should be one group (defined by `()`) for each element of `into`. #' @param remove If `TRUE`, remove input column from output data frame. #' @param convert If `TRUE`, will run [type.convert()] with #' `as.is = TRUE` on new columns. This is useful if the component #' columns are integer, numeric or logical. #' #' NB: this will cause string `"NA"`s to be converted to `NA`s. #' @param ... Additional arguments passed on to methods. #' @seealso [separate()] to split up by a separator. #' @export #' @examples #' df <- data.frame(x = c(NA, "a-b", "a-d", "b-c", "d-e")) #' df %>% extract(x, "A") #' df %>% extract(x, c("A", "B"), "([[:alnum:]]+)-([[:alnum:]]+)") #' #' # If no match, NA: #' df %>% extract(x, c("A", "B"), "([a-d]+)-([a-d]+)") extract <- function(data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ...) { ellipsis::check_dots_used() UseMethod("extract") } #' @export extract.data.frame <- function(data, col, into, regex = "([[:alnum:]]+)", remove = TRUE, convert = FALSE, ...) { var <- tidyselect::vars_pull(names(data), !! enquo(col)) value <- as.character(data[[var]]) new_cols <- str_extract(value, into = into, regex = regex, convert = convert) out <- append_df(data, new_cols, var, remove = remove) reconstruct_tibble(data, out, if (remove) var else chr()) } str_extract <- function(x, into, regex, convert = FALSE) { stopifnot( is_string(regex), is_character(into) ) matches <- stringi::stri_match_first_regex(x, regex)[, -1, drop = FALSE] if (ncol(matches) != length(into)) { stop( "`regex` should define ", length(into), " groups; ", ncol(matches), " found.", call. = FALSE ) } out <- as_tibble(matches, .name_repair = "minimal") # Handle duplicated names if (anyDuplicated(into)) { pieces <- split(as.list(out), into) out <- as_tibble(map(pieces, pmap_chr, paste0, sep = "")) } else { names(out) <- as_utf8_character(into) } if (convert) { out[] <- map(out, type.convert, as.is = TRUE) } out } tidyr/R/replace_na.R0000644000176200001440000000343013440317647014033 0ustar liggesusers#' Replace missing values #' #' @param data A data frame or vector. #' @param replace If `data` is a data frame, a named list giving the value to #' replace `NA` with for each column. If `data` is a vector, a single value #' used for replacement. #' @param ... Additional arguments for methods. Currently unused. #' @return If `data` is a data frame, returns a data frame. If `data` is a #' vector, returns a vector of class determined by the union of `data` and #' `replace`. #' @seealso \code{\link[dplyr]{na_if}} to replace specified values with a `NA`. #' \code{\link[dplyr]{coalesce}} to replace missing values with a specified #' value. #' \code{\link[dplyr]{recode}} to more generally replace values. #' @export #' @examples #' library(dplyr) #' df <- tibble(x = c(1, 2, NA), y = c("a", NA, "b"), z = list(1:5, NULL, 10:20)) #' df %>% replace_na(list(x = 0, y = "unknown")) #' df %>% mutate(x = replace_na(x, 0)) #' #' # NULL are the list-col equivalent of NAs #' df %>% replace_na(list(z = list(5))) #' #' df$x %>% replace_na(0) #' df$y %>% replace_na("unknown") replace_na <- function(data, replace, ...) { ellipsis::check_dots_used() UseMethod("replace_na") } #' @export replace_na.default <- function(data, replace = NA, ...) { check_replacement(replace, "data") data[!is_complete(data)] <- replace data } #' @export replace_na.data.frame <- function(data, replace = list(), ...) { stopifnot(is_list(replace)) replace_vars <- intersect(names(replace), names(data)) for (var in replace_vars) { check_replacement(replace[[var]], var) data[[var]][!is_complete(data[[var]])] <- replace[[var]] } data } check_replacement <- function(x, var) { n <- length(x) if (n == 1) { return() } abort(glue("Replacement for `{var}` is length {n}, not length 1")) } tidyr/R/fill.R0000644000176200001440000000305013467623336012672 0ustar liggesusers#' @importFrom Rcpp sourceCpp NULL #' Fill in missing values with previous or next value #' #' Fills missing values in selected columns using the next or previous entry. #' This is useful in the common output format where values are not repeated, #' and are only recorded when they change. #' #' Missing values are replaced in atomic vectors; `NULL`s are replaced in lists. #' #' @inheritParams gather #' @param ... A selection of columns. If empty, nothing happens. You can #' supply bare variable names, select all variables between `x` and `z` #' with `x:z`, exclude `y` with `-y`. For more selection options, see the #' [dplyr::select()] documentation. #' @param .direction Direction in which to fill missing values. Currently #' either "down" (the default), "up", "downup" (i.e. first down and then up) #' or "updown" (first up and then down). #' @export #' @examples #' df <- data.frame(Month = 1:12, Year = c(2000, rep(NA, 11))) #' df %>% fill(Year) fill <- function(data, ..., .direction = c("down", "up", "downup", "updown")) { ellipsis::check_dots_unnamed() UseMethod("fill") } #' @export fill.data.frame <- function(data, ..., .direction = c("down", "up", "downup", "updown")) { vec_fill <- vec_fill_fun(.direction) dplyr::mutate_at(data, dplyr::vars(...), vec_fill) } vec_fill_fun <- function(.direction = c("down", "up", "downup", "updown")) { .direction <- match.arg(.direction) switch( .direction, down = fillDown, up = fillUp, downup = function(x) fillUp(fillDown(x)), updown = function(x) fillDown(fillUp(x)) ) } tidyr/R/pivot-long.R0000644000176200001440000002351213612143014014025 0ustar liggesusers#' Pivot data from wide to long #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} #' #' `pivot_longer()` "lengthens" data, increasing the number of rows and #' decreasing the number of columns. The inverse transformation is #' [pivot_wider()] #' #' Learn more in `vignette("pivot")`. #' #' @details #' `pivot_longer()` is an updated approach to [gather()], designed to be both #' simpler to use and to handle more use cases. We recomend you use #' `pivot_longer()` for new code; `gather()` isn't going away but is no longer #' under active development. #' #' @param data A data frame to pivot. #' @param cols Columns to pivot into longer format. This takes a tidyselect #' specification. #' @param names_to A string specifying the name of the column to create #' from the data stored in the column names of `data`. #' #' Can be a character vector, creating multiple columns, if `names_sep` #' or `names_pattern` is provided. #' @param names_prefix A regular expression used to remove matching text #' from the start of each variable name. #' @param names_sep,names_pattern If `names_to` contains multiple values, #' these arguments control how the column name is broken up. #' #' `names_sep` takes the same specification as [separate()], and can either #' be a numeric vector (specifying positions to break on), or a single string #' (specifying a regular expression to split on). #' #' `names_pattern` takes the same specification as [extract()], a regular #' expression containing matching groups (`()`). #' #' If these arguments does not give you enough control, use #' `pivot_longer_spec()` to create a spec object and process manually as #' needed. #' @param names_repair What happen if the output has invalid column names? #' The default, `"check_unique"` is to error if the columns are duplicated. #' Use `"minimal"` to allow duplicates in the output, or `"unique"` to #' de-duplicated by adding numeric suffixes. See [vctrs::vec_as_names()] #' for more options. #' @param values_to A string specifying the name of the column to create #' from the data stored in cell values. If `names_to` is a character #' containing the special `.value` sentinel, this value will be ignored, #' and the name of the value column will be derived from part of the #' existing column names. #' @param values_drop_na If `TRUE`, will drop rows that contain only `NA`s #' in the `value_to` column. This effectively converts explicit missing values #' to implicit missing values, and should generally be used only when missing #' values in `data` were created by its structure. #' @param names_ptypes,values_ptypes A list of of column name-prototype pairs. #' A prototype (or ptype for short) is a zero-length vector (like `integer()` #' or `numeric()`) that defines the type, class, and attributes of a vector. #' #' If not specified, the type of the columns generated from `names_to` will #' be character, and the type of the variables generated from `values_to` #' will be the common type of the input columns used to generate them. #' @export #' @examples #' # See vignette("pivot") for examples and explanation #' #' # Simplest case where column names are character data #' relig_income #' relig_income %>% #' pivot_longer(-religion, names_to = "income", values_to = "count") #' #' # Slightly more complex case where columns have common prefix, #' # and missing missings are structural so should be dropped. #' billboard #' billboard %>% #' pivot_longer( #' cols = starts_with("wk"), #' names_to = "week", #' names_prefix = "wk", #' values_to = "rank", #' values_drop_na = TRUE #' ) #' #' # Multiple variables stored in colum names #' who %>% pivot_longer( #' cols = new_sp_m014:newrel_f65, #' names_to = c("diagnosis", "gender", "age"), #' names_pattern = "new_?(.*)_(.)(.*)", #' values_to = "count" #' ) #' #' # Multiple observations per row #' anscombe #' anscombe %>% #' pivot_longer(everything(), #' names_to = c(".value", "set"), #' names_pattern = "(.)(.)" #' ) pivot_longer <- function(data, cols, names_to = "name", names_prefix = NULL, names_sep = NULL, names_pattern = NULL, names_ptypes = list(), names_repair = "check_unique", values_to = "value", values_drop_na = FALSE, values_ptypes = list() ) { cols <- enquo(cols) spec <- build_longer_spec(data, !!cols, names_to = names_to, values_to = values_to, names_prefix = names_prefix, names_sep = names_sep, names_pattern = names_pattern, names_ptypes = names_ptypes ) pivot_longer_spec(data, spec, names_repair = names_repair, values_drop_na = values_drop_na, values_ptypes = values_ptypes ) } #' Pivot data from wide to long using a spec #' #' This is a low level interface to pivotting, inspired by the cdata package, #' that allows you to describe pivotting with a data frame. #' #' @keywords internal #' @export #' @inheritParams pivot_longer #' @param spec A specification data frame. This is useful for more complex #' pivots because it gives you greater control on how metadata stored in the #' column names turns into columns in the result. #' #' Must be a data frame containing character `.name` and `.value` columns. pivot_longer_spec <- function(data, spec, names_repair = "check_unique", values_drop_na = FALSE, values_ptypes = list() ) { spec <- check_spec(spec) spec <- deduplicate_names(spec, data) # Quick hack to ensure that split() preserves order v_fct <- factor(spec$.value, levels = unique(spec$.value)) values <- split(spec$.name, v_fct) value_keys <- split(spec[-(1:2)], v_fct) keys <- vec_unique(spec[-(1:2)]) vals <- set_names(vec_init(list(), length(values)), names(values)) for (value in names(values)) { cols <- values[[value]] col_id <- vec_match(value_keys[[value]], keys) val_cols <- vec_init(list(), nrow(keys)) val_cols[col_id] <- unname(as.list(data[cols])) val_cols[-col_id] <- list(rep(NA, nrow(data))) val_type <- vec_ptype_common(!!!set_names(val_cols[col_id], cols), .ptype = values_ptypes[[value]]) out <- vec_c(!!!val_cols, .ptype = val_type) # Interleave into correct order idx <- (matrix(seq_len(nrow(data) * length(val_cols)), ncol = nrow(data), byrow = TRUE)) vals[[value]] <- vec_slice(out, as.integer(idx)) } vals <- as_tibble(vals) # Line up output rows by combining spec and existing data frame rows <- expand_grid( df_id = vec_seq_along(data), key_id = vec_seq_along(keys), ) rows$val_id <- vec_seq_along(rows) if (values_drop_na) { rows <- vec_slice(rows, !vec_equal_na(vals)) } # Join together df, spec, and val to produce final tibble df_out <- drop_cols(data, spec$.name) out <- wrap_error_names(vec_cbind( vec_slice(df_out, rows$df_id), vec_slice(keys, rows$key_id), vec_slice(vals, rows$val_id), .name_repair = names_repair )) reconstruct_tibble(data, out) } #' @rdname pivot_longer_spec #' @export build_longer_spec <- function(data, cols, names_to = "name", values_to = "value", names_prefix = NULL, names_sep = NULL, names_pattern = NULL, names_ptypes = NULL) { cols <- unname(tidyselect::vars_select(unique(names(data)), !!enquo(cols))) if (length(cols) == 0) { abort(glue::glue("`cols` must select at least one column.")) } if (is.null(names_prefix)) { names <- cols } else { names <- stringi::stri_replace_all_regex(cols, paste0("^", names_prefix), "") } if (length(names_to) > 1) { if (!xor(is.null(names_sep), is.null(names_pattern))) { abort(glue::glue( "If you supply multiple names in `names_to` you must also supply one", " of `names_sep` or `names_pattern`." )) } if (!is.null(names_sep)) { names <- str_separate(names, names_to, sep = names_sep) } else { names <- str_extract(names, names_to, regex = names_pattern) } if (".value" %in% names_to) { values_to <- NULL } } else { if (!is.null(names_sep)) { abort("`names_sep` can not be used with length-1 `names_to`") } if (!is.null(names_pattern)) { names <- str_extract(names, names_to, regex = names_pattern)[[1]] } names <- tibble(!!names_to := names) } # optionally, cast variables generated from columns cast_cols <- intersect(names(names), names(names_ptypes)) for (col in cast_cols) { names[[col]] <- vec_cast(names[[col]], names_ptypes[[col]]) } out <- tibble(.name = cols) out[[".value"]] <- values_to out <- vec_cbind(out, names) out } drop_cols <- function(df, cols) { if (is.character(cols)) { df[setdiff(names(df), cols)] } else if (is.integer(cols)) { df[-cols] } else { abort("Invalid input") } } # Match spec to data, handling duplicated column names deduplicate_names <- function(spec, df) { col_id <- vec_match(names(df), spec$.name) has_match <- !is.na(col_id) if (!vec_duplicate_any(col_id[has_match])) { return(spec) } warn("Duplicate column names detected, adding .copy variable") spec <- vec_slice(spec, col_id[has_match]) # Need to use numeric indices because names only match first spec$.name <- seq_along(df)[has_match] pieces <- vec_split(seq_len(nrow(spec)), col_id[has_match]) copy <- integer(nrow(spec)) for (i in seq_along(pieces$val)) { idx <- pieces$val[[i]] copy[idx] <- seq_along(idx) } spec$.copy <- copy spec } tidyr/R/id.R0000644000176200001440000000270513437754024012342 0ustar liggesusersid <- function(.variables, drop = FALSE) { if (length(.variables) == 0) { n <- nrow(.variables) %||% 0L return(structure(seq_len(n), n = n)) } # Special case for single variable if (length(.variables) == 1) { return(id_var(.variables[[1]], drop = drop)) } # Calculate individual ids ids <- rev(map(.variables, id_var, drop = drop)) p <- length(ids) # Calculate dimensions ndistinct <- map_dbl(ids, attr, "n") n <- prod(ndistinct) if (n > 2 ^ 31) { # Too big for integers, have to use strings, which will be much slower :( char_id <- do.call("paste", c(ids, sep = "\r")) res <- match(char_id, unique(char_id)) } else { combs <- c(1, cumprod(ndistinct[-p])) mat <- do.call("cbind", ids) res <- c((mat - 1L) %*% combs + 1L) } attr(res, "n") <- n if (drop) { id_var(res, drop = TRUE) } else { structure(as.integer(res), n = attr(res, "n")) } } id_var <- function(x, drop = FALSE) { if (!is_null(attr(x, "n", exact = TRUE)) && !drop) return(x) if (is.factor(x) && !drop) { x_na <- addNA(x, ifany = TRUE) id <- as.integer(x_na) n <- length(levels(x_na)) } else if (length(x) == 0) { id <- integer() n <- 0L } else if (is_list(x)) { # Sorting lists isn't supported levels <- unique(x) id <- match(x, levels) n <- max(id) } else { levels <- sort(unique(x), na.last = TRUE) id <- match(x, levels) n <- max(id) } structure(id, n = n) } tidyr/R/uncount.R0000644000176200001440000000231013516125440013421 0ustar liggesusers#' "Uncount" a data frame #' #' Performs the opposite operation to [dplyr::count()], duplicating rows #' according to a weighting variable (or expression). #' #' @param data A data frame, tibble, or grouped tibble. #' @param weights A vector of weights. Evaluated in the context of `data`; #' supports quasiquotation. #' @param .id Supply a string to create a new variable which gives a unique #' identifier for each created row. #' @param .remove If `TRUE`, and `weights` is a `single` #' @export #' @examples #' df <- tibble(x = c("a", "b"), n = c(1, 2)) #' uncount(df, n) #' uncount(df, n, .id = "id") #' #' # You can also use constants #' uncount(df, 2) #' #' # Or expressions #' uncount(df, 2 / n) uncount <- function(data, weights, .remove = TRUE, .id = NULL) { weights_quo <- enquo(weights) w <- dplyr::pull(dplyr::mutate(data, `_weight` = !! weights_quo)) if (!is.numeric(w)) { stop("`weights` must evaluate to a numeric vector", call. = FALSE) } out <- data[rep(seq_nrow(data), w), , drop = FALSE] if (.remove && quo_is_symbol(weights_quo)) { out[[as_string(get_expr(weights_quo))]] <- NULL } if (!is.null(.id)) { out[[.id]] <- sequence(w) } reconstruct_tibble(data, out) } tidyr/R/dep-extract.R0000644000176200001440000000060513437754024014163 0ustar liggesusers# nocov start #' Extract numeric component of variable. #' #' DEPRECATED: please use `readr::parse_number()` instead. #' #' @param x A character vector (or a factor). #' @keywords internal #' @export extract_numeric <- function(x) { message("extract_numeric() is deprecated: please use readr::parse_number() instead") as.numeric(gsub("[^0-9.-]+", "", as.character(x))) } # nocov end tidyr/R/pivot.R0000644000176200001440000000154413612142023013070 0ustar liggesuserscheck_spec <- function(spec) { # Eventually should just be vec_assert() on partial_frame() # Waiting for https://github.com/r-lib/vctrs/issues/198 if (!is.data.frame(spec)) { stop("`spec` must be a data frame", call. = FALSE) } if (!has_name(spec, ".name") || !has_name(spec, ".value")) { stop("`spec` must have `.name` and `.value` columns", call. = FALSE) } if (ncol(spec) == 2) { stop("`spec` must have at least 3 columns", call. = FALSE) } # Ensure .name and .value come first vars <- union(c(".name", ".value"), names(spec)) spec[vars] } wrap_error_names <- function(code) { tryCatch( code, vctrs_error_names = function(cnd) { abort( c( "Failed to create output due to bad names.", "Choose another strategy with `names_repair`" ), parent = cnd ) } ) } tidyr/R/nest.R0000644000176200001440000002523613612142023012704 0ustar liggesusers#' Nest and unnest #' #' @description #' Nesting creates a list-column of data frames; unnesting flattens it back out #' into regular columns. Nesting is implicitly a summarising operation: you #' get one row for each group defined by the non-nested columns. This is useful #' in conjunction with other summaries that work with whole datasets, most #' notably models. #' #' Learn more in `vignette("nest")`. #' #' @section New syntax: #' tidyr 1.0.0 introduced a new syntax for `nest()` and `unnest()` that's #' designed to be more similar to other functions. Converting to the new syntax #' should be straightforward (guided by the message you'll recieve) but if #' you just need to run an old analysis, you can easily revert to the previous #' behaviour using [nest_legacy()] and [unnest_legacy()] as follows: #' #' ``` #' library(tidyr) #' nest <- nest_legacy #' unnest <- unnest_legacy #' ``` #' #' @section Grouped data frames: #' `df %>% nest(x, y)` specifies the columns to be nested; i.e. the columns that #' will appear in the inner data frame. Alternatively, you can `nest()` a #' grouped data frame created by [dplyr::group_by()]. The grouping variables #' remain in the outer data frame and the others are nested. The result #' preserves the grouping of the input. #' #' Variables supplied to `nest()` will override grouping variables so that #' `df %>% group_by(x, y) %>% nest(z)` will be equivalent to `df %>% nest(z)`. #' #' @param .data A data frame. #' @param ... Name-variable pairs of the form `new_col = c(col1, col2, col3)`, #' that describe how you wish to nest existing columns into new columns. #' The right hand side can be any expression supported by tidyselect. #' #' #' \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: #' previously you could write `df %>% nest(x, y, z)` and `df %>% #' unnest(x, y, z)`. Convert to `df %>% nest(data = c(x, y, z))`. #' and `df %>% unnest(c(x, y, z))`. #' #' If you previously created new variable in `unnest()` you'll now need to #' do it explicitly with `mutate()`. Convert `df %>% unnest(y = fun(x, y, z))` #' to `df %>% mutate(y = fun(x, y, z)) %>% unnest(y)`. #' @param .key #' \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: #' No longer needed because of the new `new_col = c(col1, col2, #' col3)` syntax. #' @export #' @examples #' df <- tibble(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1) #' # Note that we get one row of output for each unique combination of #' # non-nested variables #' df %>% nest(data = c(y, z)) #' # chop does something similar, but retains individual columns #' df %>% chop(c(y, z)) #' #' # use tidyselect syntax and helpers, just like in dplyr::select() #' df %>% nest(data = one_of("y", "z")) #' #' iris %>% nest(data = -Species) #' nest_vars <- names(iris)[1:4] #' iris %>% nest(data = one_of(nest_vars)) #' iris %>% #' nest(petal = starts_with("Petal"), sepal = starts_with("Sepal")) #' iris %>% #' nest(width = contains("Width"), length = contains("Length")) #' #' # Nesting a grouped data frame nests all variables apart from the group vars #' library(dplyr) #' fish_encounters %>% #' group_by(fish) %>% #' nest() #' #' # Nesting is often useful for creating per group models #' mtcars %>% #' group_by(cyl) %>% #' nest() %>% #' mutate(models = lapply(data, function(df) lm(mpg ~ wt, data = df))) #' #' # unnest() is primarily designed to work with lists of data frames #' df <- tibble( #' x = 1:3, #' y = list( #' NULL, #' tibble(a = 1, b = 2), #' tibble(a = 1:3, b = 3:1) #' ) #' ) #' df %>% unnest(y) #' df %>% unnest(y, keep_empty = TRUE) #' #' # If you have lists of lists, or lists of atomic vectors, instead #' # see hoist(), unnest_wider(), and unnest_longer() #' #' #' # You can unnest multiple columns simultaneously #' df <- tibble( #' a = list(c("a", "b"), "c"), #' b = list(1:2, 3), #' c = c(11, 22) #' ) #' df %>% unnest(c(a, b)) #' #' # Compare with unnesting one column at a time, which generates #' # the Cartesian product #' df %>% unnest(a) %>% unnest(b) nest <- function(.data, ..., .key = deprecated()) { cols <- enquos(...) if (any(names2(cols) == "")) { col_names <- unname(tidyselect::vars_select(tbl_vars(.data), !!!cols)) cols_expr <- expr(c(!!!syms(col_names))) .key <- if (missing(.key)) "data" else as.character(ensym(.key)) cols <- quos(!!.key := !!cols_expr) warn(paste0( "All elements of `...` must be named.\n", "Did you want `", .key, " = ", expr_text(cols_expr), "`?" )) return(nest(.data, !!!cols)) } UseMethod("nest") } #' @export nest.data.frame <- function(.data, ..., .key = deprecated()) { # The data frame print handles nested data frames poorly, so we want to # convert data frames (but not subclasses) to tibbles if (identical(class(.data), "data.frame")) { .data <- as_tibble(.data) } nest.tbl_df(.data, ..., .key = .key) } #' @export nest.tbl_df <- function(.data, ..., .key = deprecated()) { .key <- check_key(.key) if (missing(...)) { warn(paste0( "`...` must not be empty for ungrouped data frames.\n", "Did you want `", .key, " = everything()`?" )) cols <- list2(!!.key := names(.data)) } else { cols <- enquos(...) cols <- map(cols, ~ tidyselect::vars_select(tbl_vars(.data), !!.x)) } asis <- setdiff(names(.data), unlist(cols)) keys <- .data[asis] u_keys <- vec_unique(keys) out <- map(cols, ~ vec_split(.data[.x], keys)$val) vec_cbind(u_keys, new_data_frame(out, n = nrow(u_keys))) } #' @export nest.grouped_df <- function(.data, ..., .key = deprecated()) { if (missing(...)) { .key <- check_key(.key) nest_vars <- setdiff(names(.data), dplyr::group_vars(.data)) out <- nest.tbl_df(.data, !!.key := !!nest_vars) } else { out <- NextMethod() } group_vars <- intersect(names(out), dplyr::group_vars(.data)) dplyr::grouped_df(out, group_vars) } check_key <- function(.key) { if (!is_missing(.key)) { warn("`.key` is deprecated") .key } else { "data" } } # unnest ------------------------------------------------------------------ #' @inheritParams unchop #' @inheritParams unpack #' @param cols Names of columns to unnest. #' #' If you `unnest()` multiple columns, parallel entries must compatible #' sizes, i.e. they're either equal or length 1 (following the standard #' tidyverse recycling rules). #' @param .drop,.preserve #' \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: #' all list-columns are now preserved; If there are any that you #' don't want in the output use `select()` to remove them prior to #' unnesting. #' @param .id #' \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: #' convert `df %>% unnest(x, .id = "id")` to `df %>% mutate(id = #' names(x)) %>% unnest(x))`. #' @param .sep #' \Sexpr[results=rd, stage=render]{lifecycle::badge("deprecated")}: #' use `names_sep` instead. #' @export #' @rdname nest unnest <- function(data, cols, ..., keep_empty = FALSE, ptype = NULL, names_sep = NULL, names_repair = "check_unique", .drop = deprecated(), .id = deprecated(), .sep = deprecated(), .preserve = deprecated()) { deprecated <- FALSE if (!missing(.preserve)) { lifecycle::deprecate_warn("1.0.0", "unnest(.preserve = )", details = "All list-columns are now preserved" ) deprecated <- TRUE .preserve <- tidyselect::vars_select(tbl_vars(data), !!enquo(.preserve)) } else { .preserve <- NULL } if (missing(cols) && missing(...)) { list_cols <- names(data)[map_lgl(data, is_list)] cols <- expr(c(!!!syms(setdiff(list_cols, .preserve)))) warn(paste0( "`cols` is now required.\n", "Please use `cols = ", expr_text(cols), "`" )) deprecated <- TRUE } if (missing(...)) { cols <- enquo(cols) } else { dots <- enquos(cols, ..., .named = TRUE, .ignore_empty = "all") data <- dplyr::mutate(data, !!!dots) cols <- expr(c(!!!syms(names(dots)))) unnest_call <- expr(unnest(!!cols)) warn(paste0( "unnest() has a new interface. See ?unnest for details.\n", "Try `df %>% ", expr_text(unnest_call), "`, with `mutate()` if needed" )) deprecated <- TRUE } if (!is_missing(.drop)) { lifecycle::deprecate_warn("1.0.0", "unnest(.drop = )", details = "All list-columns are now preserved." ) deprecated <- TRUE } if (!is_missing(.id)) { lifecycle::deprecate_warn("1.0.0", "unnest(.id = )", details = "Manually create column of names instead." ) deprecated <- TRUE first_col <- tidyselect::vars_select(tbl_vars(data), !!cols)[[1]] data[[.id]] <- names(data[[first_col]]) } if (!is_missing(.sep)) { lifecycle::deprecate_warn("1.0.0", "unnest(.sep = )", details = glue("Use `names_sep = '{.sep}'` instead.") ) deprecated <- TRUE names_sep <- .sep } if (deprecated) { return(unnest( data, cols = !!cols, names_sep = names_sep, keep_empty = keep_empty, ptype = ptype, names_repair = tidyr_legacy )) } UseMethod("unnest") } #' @export unnest.data.frame <- function( data, cols, ..., keep_empty = FALSE, ptype = NULL, names_sep = NULL, names_repair = "check_unique", .drop = "DEPRECATED", .id = "DEPRECATED", .sep = "DEPRECATED", .preserve = "DEPRECATED") { cols <- tidyselect::vars_select(tbl_vars(data), !!enquo(cols)) if (nrow(data) == 0) { for (col in cols) { data[[col]] <- as_empty_df(data[[col]], col = col) } } else { for (col in cols) { data[[col]] <- map(data[[col]], as_df, col = col) } } data <- unchop(data, !!cols, keep_empty = keep_empty, ptype = ptype) unpack(data, !!cols, names_sep = names_sep, names_repair = names_repair) } # helpers ----------------------------------------------------------------- # n cols, n rows as_df <- function(x, col) { if (is.null(x)) { x } else if (is.data.frame(x)) { x } else if (vec_is(x)) { # Preserves vec_size() invariant new_data_frame(set_names(list(x), col)) } else { stop("Input must be list of vectors", call. = FALSE) } } as_empty_df <- function(x, col) { if (is_list_of(x)) { x } else if (is.list(x)) { list_of(.ptype = tibble(!!col := unspecified())) } else { stop("Input must be list of vectors", call. = FALSE) } } tidyr/R/rectangle.R0000644000176200001440000002555213612142023013700 0ustar liggesusers#' Rectangle a nested list into a tidy tibble #' #' @description #' \Sexpr[results=rd, stage=render]{lifecycle::badge("maturing")} #' #' `hoist()`, `unnest_longer()`, and `unnest_wider()` provide tools for #' rectangling, collapsing deeply nested lists into regular columns. #' `hoist()` allows you to selectively pull components of a list-column out #' in to their own top-level columns, using the same syntax as [purrr::pluck()]. #' `unnest_wider()` turns each element of a list-column into a column, and #' `unnest_longer()` turns each element of a list-column into a row. #' `unnest_auto()` picks between `unnest_wider()` or `unnest_longer()` #' based heuristics described below. #' #' Learn more in `vignette("rectangle")`. #' #' @section Unnest variants: #' #' The three `unnest()` functions differ in how they change the shape of the #' output data frame: #' #' * `unnest_wider()` preserves the rows, but changes the columns. #' * `unnest_longer()` preserves the columns, but changes the rows #' * `unnest()` can change both rows and columns. #' #' These principles guide their behaviour when they are called with a #' non-primary data type. For example, if you `unnest_wider()` a list of data #' frames, the number of rows must be preserved, so each column is turned into #' a list column of length one. Or if you `unnest_longer()` a list of data #' frame, the number of columns must be preserved so it creates a packed #' column. I'm not sure how if these behaviours are useful in practice, but #' they are theoretically pleasing. #' #' @section `unnest_auto()` heuristics: #' `unnest_auto()` inspects the inner names of the list-col: #' * If all elements are unnamed, it uses `unnest_longer()` #' * If all elements are named, and there's at least one name in #' common acros all components, it uses `unnest_wider()` #' * Otherwise, it falls back to `unnest_longer(indices_include = TRUE)`. #' #' @param .data,data A data frame. #' @param .col,col List-column to extract components from. #' @param ... Components of `.col` to turn into columns in the form #' `col_name = "pluck_specification"`. You can pluck by name with a character #' vector, by position with an integer vector, or with a combination of the #' two with a list. See [purrr::pluck()] for details. #' @param .simplify If `TRUE`, will attempt to simplify lists of length-1 #' vectors to an atomic vector #' @param .ptype Optionally, a named list of prototypes declaring the desired #' output type of each component. #' @param .remove If `TRUE`, the default, will remove extracted components #' from `.col`. This ensures that each value lives only in one place. #' @examples #' df <- tibble( #' character = c("Toothless", "Dory"), #' metadata = list( #' list( #' species = "dragon", #' color = "black", #' films = c( #' "How to Train Your Dragon", #' "How to Train Your Dragon 2", #' "How to Train Your Dragon: The Hidden World" #' ) #' ), #' list( #' species = "clownfish", #' color = "blue", #' films = c("Finding Nemo", "Finding Dory") #' ) #' ) #' ) #' df #' #' # Turn all components of metadata into columns #' df %>% unnest_wider(metadata) #' #' # Extract only specified components #' df %>% hoist(metadata, #' species = "species", #' first_film = list("films", 1L), #' third_film = list("films", 3L) #' ) #' #' df %>% #' unnest_wider(metadata) %>% #' unnest_longer(films) # #' # unnest_longer() is useful when each component of the list should #' # form a row #' df <- tibble( #' x = 1:3, #' y = list(NULL, 1:3, 4:5) #' ) #' df %>% unnest_longer(y) #' # Automatically creates names if widening #' df %>% unnest_wider(y) #' #' # And similarly if the vectors are named #' df <- tibble( #' x = 1:2, #' y = list(c(a = 1, b = 2), c(a = 10, b = 11, c = 12)) #' ) #' df %>% unnest_wider(y) #' df %>% unnest_longer(y) #' #' @export hoist hoist <- function(.data, .col, ..., .remove = TRUE, .simplify = TRUE, .ptype = list()) { .col <- tidyselect::vars_pull(names(.data), !!enquo(.col)) x <- .data[[.col]] if (!is.list(x)) { abort("`col` must be a list-column") } pluckers <- list(...) if (!is_named(pluckers)) { stop("All elements of `...` must be named", call. = FALSE) } new_cols <- map(pluckers, function(idx) { map(x, ~ purrr::pluck(.x, !!!idx)) }) new_cols <- map2( new_cols, .ptype[names(new_cols)], simplify_col, simplify = .simplify, keep_empty = TRUE ) # Place new columns before old column out <- append_df(.data, new_cols, after = match(.col, names(.data)) - 1L) if (!.remove) { return(out) } x <- map(x, function(x) { # rev() is sneaky hack assuming that most people will remove in # numeric order, so this should avoid most order problems. A full # resolution will be considerably more work. for (plucker in rev(pluckers)) { x <- strike(x, plucker) } x }) if (every(x, vec_is_empty)) { x <- NULL } out[[.col]] <- x out } #' @export #' @rdname hoist #' @param values_to Name of column to store vector values. Defaults to `col`. #' @param indices_to A string giving the name of column which will contain the #' inner names or position (if not named) of the values. Defaults to `col` #' with `_id` suffix #' @param indices_include Add an index column? Defaults to `TRUE` when `col` #' has inner names. #' @inheritParams unnest unnest_longer <- function(data, col, values_to = NULL, indices_to = NULL, indices_include = NULL, names_repair = "check_unique", simplify = TRUE, ptype = list() ) { col <- tidyselect::vars_pull(names(data), !!enquo(col)) values_to <- values_to %||% col if (!is.null(indices_to)) { indices_include <- indices_include %||% TRUE } else { indices_to <- paste0(col, "_id") } data[[col]][] <- map( data[[col]], vec_to_long, col = col, values_to = values_to, indices_to = indices_to, indices_include = indices_include ) data <- unchop(data, !!col, keep_empty = TRUE) inner_cols <- names(data[[col]]) data[[col]][] <- map2( data[[col]], ptype[inner_cols], simplify_col, keep_empty = TRUE, simplify = simplify ) unpack(data, !!col, names_repair = names_repair) } #' @export #' @rdname hoist #' @param simplify If `TRUE`, will attempt to simplify lists of length-1 #' vectors to an atomic vector unnest_wider <- function(data, col, names_sep = NULL, simplify = TRUE, names_repair = "check_unique", ptype = list()) { col <- tidyselect::vars_select(tbl_vars(data), !!enquo(col)) data[[col]][] <- map(data[[col]], vec_to_wide, col = col) data <- unchop(data, !!col, keep_empty = TRUE) inner_cols <- names(data[[col]]) data[[col]][] <- map2( data[[col]], ptype[inner_cols], simplify_col, keep_empty = TRUE, simplify = simplify ) unpack(data, !!col, names_sep = names_sep, names_repair = names_repair) } #' @export #' @rdname hoist unnest_auto <- function(data, col) { col <- tidyselect::vars_select(tbl_vars(data), !!enquo(col)) x <- data[[col]] dir <- guess_dir(x, col) switch(dir, longer = unnest_longer(data, col, indices_include = FALSE), longer_idx = unnest_longer(data, col, indices_include = TRUE), wider = unnest_wider(data, col, names_repair = "unique") ) } guess_dir <- function(x, col) { names <- map(x, names) is_null <- unique(map_lgl(names, is.null)) if (identical(is_null, TRUE)) { # all unnamed code <- glue::glue("unnest_longer({col})") reason <- "no element has names" out <- "longer" } else if (identical(is_null, FALSE)) { # all named common <- reduce(names, intersect) n_common <- length(common) if (n_common == 0) { code <- glue::glue("unnest_longer({col}, indices_include = TRUE)") reason <- "elements are named, but have no names in common" out <- "longer_idx" } else { code <- glue::glue("unnest_wider({col})") reason <- glue::glue("elements have {n_common} names in common") out <- "wider" } } else { code <- glue::glue("unnest_longer({col})") reason <- "mix of named and unnamed elements" out <- "longer" } message(glue::glue("Using `{code}`; {reason}")) out } # Helpers ----------------------------------------------------------------- strike <- function(x, idx) { if (length(idx) == 0) ( x ) else if (length(idx) == 1) { if (is.list(idx)) { idx <- idx[[1]] } if (is.numeric(idx)) { x[-idx] } else if (is.character(idx)) { if (has_name(x, idx)) { x[setdiff(names(x), idx)] } else { x } } else { x } } else { cur_idx <- idx[[1]] idx <- idx[-1] if (is.numeric(cur_idx)) { if (cur_idx > length(x)) { x } else { x[[cur_idx]] <- strike(x[[cur_idx]], idx) x } } else if (is.character(cur_idx)) { if (!has_name(x, cur_idx)) { x } else { x[[cur_idx]] <- strike(x[[cur_idx]], idx) x } } else { x } } } simplify_col <- function(x, ptype, keep_empty = FALSE, simplify = FALSE) { if (!is.list(x) || is.data.frame(x)) { return(x) } if (is_empty(x)) { return(attr(x, "ptype") %||% unspecified(0)) } if (keep_empty) { x[] <- map(x, init_col) } if (!is.null(ptype)) { x <- vec_cast(x, ptype) } else if (simplify) { x <- vec_simplify(x) } x } vec_simplify <- function(x) { n <- map_int(x, vec_size) if (!all(n == 1)) { return(x) } # Don't simplify lists of lists, because that typically indicates that # there might be multiple values. is_list <- map_lgl(x, is.list) if (any(is_list)) { return(x) } tryCatch( vec_c(!!!x), vctrs_error_incompatible_type = function(e) x ) } # 1 row; n cols vec_to_wide <- function(x, col) { if (is.null(x)) { NULL } else if (is.data.frame(x)) { as_tibble(map(x, list)) } else if (vec_is(x)) { if (is.list(x)) { x <- purrr::compact(x) x <- map(x, list) } else { x <- as.list(x) } as_tibble(x, .name_repair = "unique", .rows = 1L) } else { stop("Input must be list of vectors", call. = FALSE) } } # 1 col; n rows vec_to_long <- function(x, col, values_to, indices_to, indices_include = NULL) { if (is.null(x)) { NULL } else if (is.data.frame(x)) { tibble(!!col := x) } else if (vec_is(x)) { indices_include <- indices_include %||% !is.null(names(x)) if (isTRUE(indices_include)) { tibble( !!values_to := x, !!indices_to := index(x) ) } else { tibble(!!values_to := x) } } else { stop("Input must be list of vectors", call. = FALSE) } } index <- function(x) { names(x) %||% seq_along(x) } tidyr/R/expand.R0000644000176200001440000001631413612142023013207 0ustar liggesusers#' Expand data frame to include all combinations of values #' #' `expand()` is often useful in conjunction with `left_join()` if #' you want to convert implicit missing values to explicit missing values. #' Or you can use it in conjunction with `anti_join()` to figure #' out which combinations are missing. #' #' `crossing()` is a wrapper around [expand_grid()] that deduplicates and sorts #' each input. `nesting()` is the complement to `crossing()`: it only keeps #' combinations of values that appear in the data. #' #' @param data A data frame. #' @param ... Specification of columns to expand. Columns can be atomic vectors #' or lists. #' #' To find all unique combinations of x, y and z, including those not #' found in the data, supply each variable as a separate argument. #' To find only the combinations that occur in the data, use nest: #' `expand(df, nesting(x, y, z))`. #' #' You can combine the two forms. For example, #' `expand(df, nesting(school_id, student_id), date)` would produce #' a row for every student for each date. #' #' For factors, the full set of levels (not just those that appear in the #' data) are used. For continuous variables, you may need to fill in values #' that don't appear in the data: to do so use expressions like #' `year = 2010:2020` or `year = \link{full_seq}(year,1)`. #' #' Length-zero (empty) elements are automatically dropped. #' @seealso [complete()] for a common application of `expand`: #' completing a data frame with missing combinations. [expand_grid()] #' is low-level that doesn't deduplicate or sort values. #' @export #' @examples #' library(dplyr) #' # All possible combinations of vs & cyl, even those that aren't #' # present in the data #' expand(mtcars, vs, cyl) #' #' # Only combinations of vs and cyl that appear in the data #' expand(mtcars, nesting(vs, cyl)) #' #' # Implicit missings --------------------------------------------------------- #' df <- tibble( #' year = c(2010, 2010, 2010, 2010, 2012, 2012, 2012), #' qtr = c( 1, 2, 3, 4, 1, 2, 3), #' return = rnorm(7) #' ) #' df %>% expand(year, qtr) #' df %>% expand(year = 2010:2012, qtr) #' df %>% expand(year = full_seq(year, 1), qtr) #' df %>% complete(year = full_seq(year, 1), qtr) #' #' # Nesting ------------------------------------------------------------------- #' # Each person was given one of two treatments, repeated three times #' # But some of the replications haven't happened yet, so we have #' # incomplete data: #' experiment <- tibble( #' name = rep(c("Alex", "Robert", "Sam"), c(3, 2, 1)), #' trt = rep(c("a", "b", "a"), c(3, 2, 1)), #' rep = c(1, 2, 3, 1, 2, 1), #' measurement_1 = runif(6), #' measurement_2 = runif(6) #' ) #' #' # We can figure out the complete set of data with expand() #' # Each person only gets one treatment, so we nest name and trt together: #' all <- experiment %>% expand(nesting(name, trt), rep) #' all #' #' # We can use anti_join to figure out which observations are missing #' all %>% anti_join(experiment) #' #' # And use right_join to add in the appropriate missing values to the #' # original data #' experiment %>% right_join(all) #' # Or use the complete() short-hand #' experiment %>% complete(nesting(name, trt), rep) #' #' # Generate all combinations with expand(): #' formulas <- list( #' formula1 = Sepal.Length ~ Sepal.Width, #' formula2 = Sepal.Length ~ Sepal.Width + Petal.Width, #' formula3 = Sepal.Length ~ Sepal.Width + Petal.Width + Petal.Length #' ) #' data <- split(iris, iris$Species) #' crossing(formula = formulas, data) expand <- function(data, ...) { UseMethod("expand") } #' @export expand.data.frame <- function(data, ...) { cols <- dots_cols(..., `_data` = data) cols[] <- map(cols, sorted_unique) out <- expand_grid(!!!cols) out <- flatten_nested(out, attr(cols, "named")) reconstruct_tibble(data, out) } #' @export expand.grouped_df <- function(data, ...) { dplyr::do(data, expand(., ...)) } # Nesting & crossing ------------------------------------------------------ #' @rdname expand #' @export crossing <- function(...) { cols <- dots_cols(...) cols[] <- map(cols, sorted_unique) out <- expand_grid(!!!cols) flatten_nested(out, attr(cols, "named")) } sorted_unique <- function(x) { if (is.factor(x)) { # forcats::fct_unique factor(levels(x), levels(x), exclude = NULL, ordered = is.ordered(x)) } else if (is_bare_list(x)) { vec_unique(x) } else { vec_sort(vec_unique(x)) } } #' @rdname expand #' @export nesting <- function(...) { cols <- dots_cols(...) out <- sorted_unique(tibble(!!!cols)) flatten_nested(out, attr(cols, "named")) } # expand_grid ------------------------------------------------------------- #' Create a tibble from all combinations of inputs #' #' @section Compared to [expand.grid]: #' * Varies the first element fastest. #' * Never converts strings to factors. #' * Does not add any additional attributes. #' * Returns a tibble, not a data frame. #' * Can expand any generalised vector, including data frames. #' @param ... Name-value pairs. The name will become the column name in the #' output. #' @return A tibble with one column for each input in `...`. The output #' will have one row for each combination of the inputs, i.e. the size #' be equal to the product of the sizes of the inputs. This implies #' that if any input has length 0, the output will have zero rows. #' @export #' @examples #' expand_grid(x = 1:3, y = 1:2) #' expand_grid(l1 = letters, l2 = LETTERS) #' #' # Can also expand data frames #' expand_grid(df = data.frame(x = 1:2, y = c(2, 1)), z = 1:3) #' # And matrices #' expand_grid(x1 = matrix(1:4, nrow = 2), x2 = matrix(5:8, nrow = 2)) expand_grid <- function(...) { dots <- dots_cols(...) # Generate sequence of indices ns <- map_int(dots, vec_size) n <- prod(ns) if (n == 0) { out <- map(dots, vec_slice, integer()) } else { each <- n / cumprod(ns) times <- n / each / ns out <- pmap(list(x = dots, each = each, times = times), vec_repeat) } out <- as_tibble(out) flatten_nested(out, attr(dots, "named")) } # Helpers ----------------------------------------------------------------- dots_cols <- function(..., `_data` = NULL) { dots <- enquos(...) named <- names(dots) != "" dots <- quos_auto_name(dots) dots <- map(dots, eval_tidy, data = `_data`) is_null <- map_lgl(dots, is.null) if (any(is_null)) { dots <- dots[!is_null] named <- named[!is_null] } structure(dots, named = named) } # flatten unnamed nested data frames to preserve existing behaviour flatten_nested <- function(x, named) { to_flatten <- !named & unname(map_lgl(x, is.data.frame)) out <- flatten_at(x, to_flatten) as_tibble(out) } flatten_at <- function(x, to_flatten) { if (!any(to_flatten)) { return(x) } cols <- rep(1L, length(x)) cols[to_flatten] <- map_int(x[to_flatten], length) out <- vector("list", sum(cols)) names <- vector("character", sum(cols)) j <- 1 for (i in seq_along(x)) { if (cols[[i]] == 0) { next } if (to_flatten[[i]]) { out[j:(j + cols[[i]] - 1)] <- x[[i]] names[j:(j + cols[[i]] - 1)] <- names(x[[i]]) } else { out[[j]] <- x[[i]] names[[j]] <- names(x)[[i]] } j <- j + cols[[i]] } names(out) <- names out } tidyr/NEWS.md0000644000176200001440000006642313612357412012522 0ustar liggesusers# tidyr 1.0.2 # tidyr 1.0.1 * Minor fixes for dev versions of rlang, tidyselect, and tibble. # tidyr 1.0.0 ## Breaking changes See `vignette("in-packages")` for a detailed transition guide. * `nest()` and `unnest()` have new syntax. The majority of existing usage should be automatically translated to the new syntax with a warning. If that doesn't work, put this in your script to use the old versions until you can take a closer look and update your code: ```r library(tidyr) nest <- nest_legacy unnest <- unnest_legacy ``` * `nest()` now preserves grouping, which has implications for downstream calls to group-aware functions, such as `dplyr::mutate()` and `filter()`. * The first argument of `nest()` has changed from `data` to `.data`. * `unnest()` uses the [emerging tidyverse standard](https://www.tidyverse.org/articles/2019/01/tibble-2.0.1/#name-repair) to disambiguate unique names. Use `names_repair = tidyr_legacy` to request the previous approach. * `unnest_()`/`nest_()` and the lazyeval methods for `unnest()`/`nest()` are now defunct. They have been deprecated for some time, and, since the interface has changed, package authors will need to update to avoid deprecation warnings. I think one clean break should be less work for everyone. All other lazyeval functions have been formally deprecated, and will be made defunct in the next major release. (See [lifecycle vignette](https://lifecycle.r-lib.org/articles/lifecycle.html) for details on deprecation stages). * `crossing()` and `nesting()` now return 0-row outputs if any input is a length-0 vector. If you want to preserve the previous behaviour which silently dropped these inputs, you should convert empty vectors to `NULL`. (More discussion on this general pattern at https://github.com/tidyverse/principles/issues/24) ## Pivoting New `pivot_longer()` and `pivot_wider()` provide modern alternatives to `spread()` and `gather()`. They have been carefully redesigned to be easier to learn and remember, and include many new features. Learn more in `vignette("pivot")`. These functions resolve multiple existing issues with `spread()`/`gather()`. Both functions now handle mulitple value columns (#149/#150), support more vector types (#333), use tidyverse conventions for duplicated column names (#496, #478), and are symmetric (#453). `pivot_longer()` gracefully handles duplicated column names (#472), and can directly split column names into multiple variables. `pivot_wider()` can now aggregate (#474), select keys (#572), and has control over generated column names (#208). To demonstrate how these functions work in practice, tidyr has gained several new datasets: `relig_income`, `construction`, `billboard`, `us_rent_income`, `fish_encounters` and `world_bank_pop`. Finally, tidyr demos have been removed. They are dated, and have been superseded by `vignette("pivot")`. ## Rectangling tidyr contains four new functions to support **rectangling**, turning a deeply nested list into a tidy tibble: `unnest_longer()`, `unnest_wider()`, `unnest_auto()`, and `hoist()`. They are documented in a new vignette: `vignette("rectangle")`. `unnest_longer()` and `unnest_wider()` make it easier to unnest list-columns of vectors into either rows or columns (#418). `unnest_auto()` automatically picks between `_longer()` and `_wider()` using heuristics based on the presence of common names. New `hoist()` provides a convenient way of plucking components of a list-column out into their own top-level columns (#341). This is particularly useful when you are working with deeply nested JSON, because it provides a convenient shortcut for the `mutate()` + `map()` pattern: ```{r} df %>% hoist(metadata, name = "name") # shortcut for df %>% mutate(name = map_chr(metadata, "name")) ``` ## Nesting `nest()` and `unnest()` have been updated with new interfaces that are more closely aligned to evolving tidyverse conventions. They use the theory developed in [vctrs](https://vctrs.r-lib.org) to more consistently handle mixtures of input types, and their arguments have been overhauled based on the last few years of experience. They are supported by a new `vignette("nest")`, which outlines some of the main ideas of nested data (it's still very rough, but will get better over time). The biggest change is to their operation with multiple columns: `df %>% unnest(x, y, z)` becomes `df %>% unnest(c(x, y, z))` and `df %>% nest(x, y, z)` becomes `df %>% nest(data = c(x, y, z))`. I have done my best to ensure that common uses of `nest()` and `unnest()` will continue to work, generating an informative warning telling you precisely how you need to update your code. Please [file an issue](https://github.com/tidyverse/tidyr/issues/new) if I've missed an important use case. `unnest()` has been overhauled: * New `keep_empty` parameter ensures that every row in the input gets at least one row in the output, inserting missing values as needed (#358). * Provides `names_sep` argument to control how inner and outer column names are combined. * Uses standard tidyverse name-repair rules, so by default you will get an error if the output would contain multiple columns with the same name. You can override by using `name_repair` (#514). * Now supports `NULL` entries (#436). ## Packing and chopping Under the hood, `nest()` and `unnest()` are implemented with `chop()`, `pack()`, `unchop()`, and `unpack()`: * `pack()` and `unpack()` allow you to pack and unpack columns into data frame columns (#523). * `chop()` and `unchop()` chop up rows into sets of list-columns. Packing and chopping are interesting primarily because they are the atomic operations underlying nesting (and similarly, unchop and unpacking underlie unnesting), and I don't expect them to be used directly very often. ## New features * New `expand_grid()`, a tidy version of `expand.grid()`, is lower-level than the existing `expand()` and `crossing()` functions, as it takes individual vectors, and does not sort or uniquify them. * `crossing()`, `nesting()`, and `expand()` have been rewritten to use the vctrs package. This should not affect much existing code, but considerably simplies the implementation and ensures that these functions work consistently across all generalised vectors (#557). As part of this alignment, these functions now only drop `NULL` inputs, not any 0-length vector. ## Bug fixes and minor improvements * `full_seq()` now also works when gaps between observations are shorter than the given `period`, but are within the tolerance given by `tol`. Previously, gaps between consecutive observations had to be in the range [`period`, `period + tol`]; gaps can now be in the range [`period - tol`, `period + tol`] (@ha0ye, #657). * tidyr now re-exports `tibble()`, `as_tibble()`, and `tribble()`, as well as the tidyselect helpers (`starts_with()`, `ends_width()`, ...). This makes generating documentation, reprexes, and tests easier, and makes tidyr easier to use without also attaching dplyr. * All functions that take `...` have been instrumented with functions from the [ellipsis](https://github.com/r-lib/ellipsis/) package to warn if you've supplied arguments that are ignored (typically because you've misspelled an argument name) (#573). * `complete()` now uses `full_join()` so that all levels are preserved even when not all levels are specified (@Ryo-N7, #493). * `crossing()` now takes the unique values of data frame inputs, not just vector inputs (#490). * `gather()` throws an error if a column is a data frame (#553). * `extract()` (and hence `pivot_longer()`) can extract multiple input values into a single output column (#619). * `fill()` is now implemented using `dplyr::mutate_at()`. This radically simplifies the implementation and considerably improves performance when working with grouped data (#520). * `fill()` now accepts `downup` and `updown` as fill directions (@coolbutuseless, #505). * `unite()` gains `na.rm` argument, making it easier to remove missing values prior to uniting values together (#203) # tidyr 0.8.3 * `crossing()` preserves factor levels (#410), now works with list-columns (#446, @SamanthaToet). (These also help `expand()` which is built on top of `crossing()`) * `nest()` is compatible with dplyr 0.8.0. * `spread()` works when the id variable has names (#525). * `unnest()` preserves column being unnested when input is zero-length (#483), using `list_of()` attribute to correctly restore columns, where possible. * `unnest()` will run with named and unnamed list-columns of same length (@hlendway, #460). # tidyr 0.8.2 * `separate()` now accepts `NA` as a column name in the `into` argument to denote columns which are omitted from the result. (@markdly, #397). * Minor updates to ensure compatibility with dependencies. # tidyr 0.8.1 * `unnest()` weakens test of "atomicity" to restore previous behaviour when unnesting factors and dates (#407). # tidyr 0.8.0 ## Breaking changes * There are no deliberate breaking changes in this release. However, a number of packages are failing with errors related to numbers of elements in columns, and row names. It is possible that these are accidental API changes or new bugs. If you see such an error in your package, I would sincerely appreciate a minimal reprex. * `separate()` now correctly uses -1 to refer to the far right position, instead of -2. If you depended on this behaviour, you'll need to switch on `packageVersion("tidyr") > "0.7.2"` ## New features * Increased test coverage from 84% to 99%. * `uncount()` performs the inverse operation of `dplyr::count()` (#279) ## Bug fixes and minor improvements * `complete(data)` now returns `data` rather than throwing an error (#390). `complete()` with zero-length completions returns original input (#331). * `crossing()` preserves `NA`s (#364). * `expand()` with empty input gives empty data frame instead of `NULL` (#331). * `expand()`, `crossing()`, and `complete()` now complete empty factors instead of dropping them (#270, #285) * `extract()` has a better error message if `regex` does not contain the expected number of groups (#313). * `drop_na()` no longer drops columns (@jennybryan, #245), and works with list-cols (#280). Equivalent of `NA` in a list column is any empty (length 0) data structure. * `nest()` is now faster, especially when a long data frame is collapsed into a nested data frame with few rows. * `nest()` on a zero-row data frame works as expected (#320). * `replace_na()` no longer complains if you try and replace missing values in variables not present in the data (#356). * `replace_na()` now also works with vectors (#342, @flying-sheep), and can replace `NULL` in list-columns. It throws a better error message if you attempt to replace with something other than length 1. * `separate()` no longer checks that `...` is empty, allowing methods to make use of it. This check was added in tidyr 0.4.0 (2016-02-02) to deprecate previous behaviour where `...` was passed to `strsplit()`. * `separate()` and `extract()` now insert columns in correct position when `drop = TRUE` (#394). * `separate()` now works correctly counts from RHS when using negative integer `sep` values (@markdly, #315). * `separate()` gets improved warning message when pieces aren't as expected (#375). * `separate_rows()` supports list columns (#321), and works with empty tibbles. * `spread()` now consistently returns 0 row outputs for 0 row inputs (#269). * `spread()` now works when `key` column includes `NA` and `drop` is `FALSE` (#254). * `spread()` no longer returns tibbles with row names (#322). * `spread()`, `separate()`, `extract()` (#255), and `gather()` (#347) now replace existing variables rather than creating an invalid data frame with duplicated variable names (matching the semantics of mutate). * `unite()` now works (as documented) if you don't supply any variables (#355). * `unnest()` gains `preserve` argument which allows you to preserve list columns without unnesting them (#328). * `unnest()` can unnested list-columns contains lists of lists (#278). * `unnest(df)` now works if `df` contains no list-cols (#344) # tidyr 0.7.2 * The SE variants `gather_()`, `spread_()` and `nest_()` now treat non-syntactic names in the same way as pre tidy eval versions of tidyr (#361). * Fix tidyr bug revealed by R-devel. # tidyr 0.7.1 This is a hotfix release to account for some tidyselect changes in the unit tests. Note that the upcoming version of tidyselect backtracks on some of the changes announced for 0.7.0. The special evaluation semantics for selection have been changed back to the old behaviour because the new rules were causing too much trouble and confusion. From now on data expressions (symbols and calls to `:` and `c()`) can refer to both registered variables and to objects from the context. However the semantics for context expressions (any calls other than to `:` and `c()`) remain the same. Those expressions are evaluated in the context only and cannot refer to registered variables. If you're writing functions and refer to contextual objects, it is still a good idea to avoid data expressions by following the advice of the 0.7.0 release notes. # tidyr 0.7.0 This release includes important changes to tidyr internals. Tidyr now supports the new tidy evaluation framework for quoting (NSE) functions. It also uses the new tidyselect package as selecting backend. ## Breaking changes - If you see error messages about objects or functions not found, it is likely because the selecting functions are now stricter in their arguments An example of selecting function is `gather()` and its `...` argument. This change makes the code more robust by disallowing ambiguous scoping. Consider the following code: ``` x <- 3 df <- tibble(w = 1, x = 2, y = 3) gather(df, "variable", "value", 1:x) ``` Does it select the first three columns (using the `x` defined in the global environment), or does it select the first two columns (using the column named `x`)? To solve this ambiguity, we now make a strict distinction between data and context expressions. A data expression is either a bare name or an expression like `x:y` or `c(x, y)`. In a data expression, you can only refer to columns from the data frame. Everything else is a context expression in which you can only refer to objects that you have defined with `<-`. In practice this means that you can no longer refer to contextual objects like this: ``` mtcars %>% gather(var, value, 1:ncol(mtcars)) x <- 3 mtcars %>% gather(var, value, 1:x) mtcars %>% gather(var, value, -(1:x)) ``` You now have to be explicit about where to find objects. To do so, you can use the quasiquotation operator `!!` which will evaluate its argument early and inline the result: ```{r} mtcars %>% gather(var, value, !! 1:ncol(mtcars)) mtcars %>% gather(var, value, !! 1:x) mtcars %>% gather(var, value, !! -(1:x)) ``` An alternative is to turn your data expression into a context expression by using `seq()` or `seq_len()` instead of `:`. See the section on tidyselect for more information about these semantics. - Following the switch to tidy evaluation, you might see warnings about the "variable context not set". This is most likely caused by supplyng helpers like `everything()` to underscored versions of tidyr verbs. Helpers should be always be evaluated lazily. To fix this, just quote the helper with a formula: `drop_na(df, ~everything())`. - The selecting functions are now stricter when you supply integer positions. If you see an error along the lines of ``` `-0.949999999999999`, `-0.940000000000001`, ... must resolve to integer column positions, not a double vector ``` please round the positions before supplying them to tidyr. Double vectors are fine as long as they are rounded. ## Switch to tidy evaluation tidyr is now a tidy evaluation grammar. See the [programming vignette](http://dplyr.tidyverse.org/articles/programming.html) in dplyr for practical information about tidy evaluation. The tidyr port is a bit special. While the philosophy of tidy evaluation is that R code should refer to real objects (from the data frame or from the context), we had to make some exceptions to this rule for tidyr. The reason is that several functions accept bare symbols to specify the names of _new_ columns to create (`gather()` being a prime example). This is not tidy because the symbol do not represent any actual object. Our workaround is to capture these arguments using `rlang::quo_name()` (so they still support quasiquotation and you can unquote symbols or strings). This type of NSE is now discouraged in the tidyverse: symbols in R code should represent real objects. Following the switch to tidy eval the underscored variants are softly deprecated. However they will remain around for some time and without warning for backward compatibility. ## Switch to the tidyselect backend The selecting backend of dplyr has been extracted in a standalone package tidyselect which tidyr now uses for selecting variables. It is used for selecting multiple variables (in `drop_na()`) as well as single variables (the `col` argument of `extract()` and `separate()`, and the `key` and `value` arguments of `spread()`). This implies the following changes: * The arguments for selecting a single variable now support all features from `dplyr::pull()`. You can supply a name or a position, including negative positions. * Multiple variables are now selected a bit differently. We now make a strict distinction between data and context expressions. A data expression is either a bare name of an expression like `x:y` or `c(x, y)`. In a data expression, you can only refer to columns from the data frame. Everything else is a context expression in which you can only refer to objects that you have defined with `<-`. You can still refer to contextual objects in a data expression by being explicit. One way of being explicit is to unquote a variable from the environment with the tidy eval operator `!!`: ```r x <- 2 drop_na(df, 2) # Works fine drop_na(df, x) # Object 'x' not found drop_na(df, !! x) # Works as if you had supplied 2 ``` On the other hand, select helpers like `start_with()` are context expressions. It is therefore easy to refer to objects and they will never be ambiguous with data columns: ```{r} x <- "d" drop_na(df, starts_with(x)) ``` While these special rules is in contrast to most dplyr and tidyr verbs (where both the data and the context are in scope) they make sense for selecting functions and should provide more robust and helpful semantics. # tidyr 0.6.3 * Patch tests to be compatible with dev tibble # tidyr 0.6.2 * Register C functions * Added package docs * Patch tests to be compatible with dev dplyr. # tidyr 0.6.1 * Patch test to be compatible with dev tibble * Changed deprecation message of `extract_numeric()` to point to `readr::parse_number()` rather than `readr::parse_numeric()` # tidyr 0.6.0 ## API changes * `drop_na()` removes observations which have `NA` in the given variables. If no variables are given, all variables are considered (#194, @janschulz). * `extract_numeric()` has been deprecated (#213). * Renamed `table4` and `table5` to `table4a` and `table4b` to make their connection more clear. The `key` and `value` variables in `table2` have been renamed to `type` and `count`. ## Bug fixes and minor improvements * `expand()`, `crossing()`, and `nesting()` now silently drop zero-length inputs. * `crossing_()` and `nesting_()` are versions of `crossing()` and `nesting()` that take a list as input. * `full_seq()` works correctly for dates and date/times. # tidyr 0.5.1 * Restored compatibility with R < 3.3.0 by avoiding `getS3method(envir = )` (#205, @krlmlr). # tidyr 0.5.0 ## New functions * `separate_rows()` separates observations with multiple delimited values into separate rows (#69, @aaronwolen). ## Bug fixes and minor improvements * `complete()` preserves grouping created by dplyr (#168). * `expand()` (and hence `complete()`) preserves the ordered attribute of factors (#165). * `full_seq()` preserve attributes for dates and date/times (#156), and sequences no longer need to start at 0. * `gather()` can now gather together list columns (#175), and `gather_.data.frame(na.rm = TRUE)` now only removes missing values if they're actually present (#173). * `nest()` returns correct output if every variable is nested (#186). * `separate()` fills from right-to-left (not left-to-right!) when fill = "left" (#170, @dgrtwo). * `separate()` and `unite()` now automatically drop removed variables from grouping (#159, #177). * `spread()` gains a `sep` argument. If not-null, this will name columns as "keyvalue". Additionally, if sep is `NULL` missing values will be converted to `` (#68). * `spread()` works in the presence of list-columns (#199) * `unnest()` works with non-syntactic names (#190). * `unnest()` gains a `sep` argument. If non-null, this will rename the columns of nested data frames to include both the original column name, and the nested column name, separated by `.sep` (#184). * `unnest()` gains `.id` argument that works the same way as `bind_rows()`. This is useful if you have a named list of data frames or vectors (#125). * Moved in useful sample datasets from the DSR package. * Made compatible with both dplyr 0.4 and 0.5. * tidyr functions that create new columns are more aggresive about re-encoding the column names as UTF-8. # tidyr 0.4.1 * Fixed bug in `nest()` where nested data was ending up in the wrong row (#158). # tidyr 0.4.0 ## Nested data frames `nest()` and `unnest()` have been overhauled to support a useful way of structuring data frames: the __nested__ data frame. In a grouped data frame, you have one row per observation, and additional metadata define the groups. In a nested data frame, you have one __row__ per group, and the individual observations are stored in a column that is a list of data frames. This is a useful structure when you have lists of other objects (like models) with one element per group. * `nest()` now produces a single list of data frames called "data" rather than a list column for each variable. Nesting variables are not included in nested data frames. It also works with grouped data frames made by `dplyr::group_by()`. You can override the default column name with `.key`. * `unnest()` gains a `.drop` argument which controls what happens to other list columns. By default, they're kept if the output doesn't require row duplication; otherwise they're dropped. * `unnest()` now has `mutate()` semantics for `...` - this allows you to unnest transformed columns more easily. (Previously it used select semantics). ## Expanding * `expand()` once again allows you to evaluate arbitrary expressions like `full_seq(year)`. If you were previously using `c()` to created nested combinations, you'll now need to use `nesting()` (#85, #121). * `nesting()` and `crossing()` allow you to create nested and crossed data frames from individual vectors. `crossing()` is similar to `base::expand.grid()` * `full_seq(x, period)` creates the full sequence of values from `min(x)` to `max(x)` every `period` values. ## Minor bug fixes and improvements * `fill()` fills in `NULL`s in list-columns. * `fill()` gains a direction argument so that it can fill either upwards or downwards (#114). * `gather()` now stores the key column as character, by default. To revert to the previous behaviour of using a factor (which allows you to preserve the ordering of the columns), use `key_factor = TRUE` (#96). * All tidyr verbs do the right thing for grouped data frames created by `group_by()` (#122, #129, #81). * `seq_range()` has been removed. It was never used or announced. * `spread()` once again creates columns of mixed type when `convert = TRUE` (#118, @jennybc). `spread()` with `drop = FALSE` handles zero-length factors (#56). `spread()`ing a data frame with only key and value columns creates a one row output (#41). * `unite()` now removes old columns before adding new (#89, @krlmlr). * `separate()` now warns if defunct ... argument is used (#151, @krlmlr). # tidyr 0.3.1 * Fixed bug where attributes of non-gather columns were lost (#104) # tidyr 0.3.0 ## New features * New `complete()` provides a wrapper around `expand()`, `left_join()` and `replace_na()` for a common task: completing a data frame with missing combinations of variables. * `fill()` fills in missing values in a column with the last non-missing value (#4). * New `replace_na()` makes it easy to replace missing values with something meaningful for your data. * `nest()` is the complement of `unnest()` (#3). * `unnest()` can now work with multiple list-columns at the same time. If you don't supply any columns names, it will unlist all list-columns (#44). `unnest()` can also handle columns that are lists of data frames (#58). ## Bug fixes and minor improvements * tidyr no longer depends on reshape2. This should fix issues if you also try to load reshape (#88). * `%>%` is re-exported from magrittr. * `expand()` now supports nesting and crossing (see examples for details). This comes at the expense of creating new variables inline (#46). * `expand_` does SE evaluation correctly so you can pass it a character vector of columns names (or list of formulas etc) (#70). * `extract()` is 10x faster because it now uses stringi instead of base R regular expressions. It also returns NA instead of throwing an error if the regular expression doesn't match (#72). * `extract()` and `separate()` preserve character vectors when `convert` is TRUE (#99). * The internals of `spread()` have been rewritten, and now preserve all attributes of the input `value` column. This means that you can now spread date (#62) and factor (#35) inputs. * `spread()` gives a more informative error message if `key` or `value` don't exist in the input data (#36). * `separate()` only displays the first 20 failures (#50). It has finer control over what happens if there are two few matches: you can fill with missing values on either the "left" or the "right" (#49). `separate()` no longer throws an error if the number of pieces aren't as expected - instead it uses drops extra values and fills on the right and gives a warning. * If the input is NA `separate()` and `extract()` both return silently return NA outputs, rather than throwing an error. (#77) * Experimental `unnest()` method for lists has been removed. # tidyr 0.2.0 ## New functions * Experimental `expand()` function (#21). * Experiment `unnest()` function for converting named lists into data frames. (#3, #22) ## Bug fixes and minor improvements * `extract_numeric()` preserves negative signs (#20). * `gather()` has better defaults if `key` and `value` are not supplied. If `...` is ommitted, `gather()` selects all columns (#28). Performance is now comparable to `reshape2::melt()` (#18). * `separate()` gains `extra` argument which lets you control what happens to extra pieces. The default is to throw an "error", but you can also "merge" or "drop". * `spread()` gains `drop` argument, which allows you to preserve missing factor levels (#25). It converts factor value variables to character vectors, instead of embedding a matrix inside the data frame (#35). tidyr/MD50000644000176200001440000002011013612577552011724 0ustar liggesusers4f403f5f26a524af07582abd965f230f *DESCRIPTION 1734bf7b2a958fa874a85d6417f4a0e0 *LICENSE 820711ee95feda6ebdd1fde33ccd0fea *NAMESPACE 09c0bf941f80fb44304f4e7b1f514379 *NEWS.md d5af2bc872fd256dd82f2607ea2aff67 *R/RcppExports.R 2db49234dd351d31a79a8aaca381b7e9 *R/append.R 36612396f24392707e0dd32e3f26cb2b *R/chop.R fe2b083cb49e6a80aedf7695b7b0ba07 *R/compat-lazyeval.R e67d190299bbd7e50197fd5540522f19 *R/complete.R 3228816de26759ca4d57802f776ac828 *R/data.R c89e18ec23c33ed2e334f4b07202d20b *R/dep-extract.R 4d7eb7cc7e93fd155919529842947319 *R/dep-lazyeval.R e7150b4492b66f905e926f926a618ac0 *R/drop-na.R beaf24baa45e1bb5fa4726fa936a3957 *R/expand.R f386413d74fa08012410ca801487283f *R/extract.R 24d433b87081bb70df46660c3006b36e *R/fill.R b47fd120dffa5c2db90c6cf2709fc289 *R/gather.R faf4cef85b8df21118c37e7314e3699a *R/id.R 4fd19883d7eaa34237161111874ef7d0 *R/nest-legacy.R 249bdf531da9fd9e4e4323ee7fd32023 *R/nest.R e68c12ef339d4782ebcf601988a04cd1 *R/pack.R b0d04dcdcec8983730621dc240cc6820 *R/pivot-long.R df8cebf2399f17aca199c9ade9d2d4d6 *R/pivot-wide.R 5036f8d03809a1b9a9cd2b7e1481cdcd *R/pivot.R 27bb27cc7b7e170692ee43021e35e5c0 *R/rectangle.R add011239592662aec2288ff521bdc11 *R/replace_na.R 65a23d6a5c00cfc7d640a805ab8a66e5 *R/separate-rows.R 5cfc7d7d38d4c301e6fd970be2da0cae *R/separate.R 39a3ffda8804d8fb47d694ea8ff6cd77 *R/seq.R b77e857fcd39084b0a805c2117cedf27 *R/spread.R 2df1fb37285ec4061dbf3d1394716f79 *R/tidyr.R 454b92ff77ec906d0fd8f7e5a9d4bf61 *R/uncount.R 0e107b98544835e25a65d6a52076d43f *R/unite.R 54204d278a4e90550cffedeaff443dee *R/utils.R 2ecc1c8793b2a523a18e06a8b6c1c662 *README.md baeb4ae14b73ac7735e354b4ea34a134 *build/tidyr.pdf 5ecae20a28254c881ebcacaeb3dd55ed *build/vignette.rds 004c7b043900c5ff8f53e8360c4586a4 *data/billboard.rda 0126bd21169bfabf5da3819e730123ec *data/construction.rda 8362878900fb7607978b89e1e5bf5d32 *data/fish_encounters.rda 4c2c3340bd4f8199e23710ccef6f1f63 *data/population.rdata ad125c15e380edfda719651a513aa11a *data/relig_income.rda 9676be6a02d57f111e0fff2c0c33b6b6 *data/smiths.rda e6228478eb819186592e71cfe1bd76c1 *data/table1.rdata 7654b57de4528d7af8501824dd07c5bb *data/table2.rdata b5c083e37ccec12b889b7af560d53374 *data/table3.rdata 97f4e128800cb57ababdde2b3eb4e390 *data/table4a.rdata 23958dfa99d6e541bdc7a5d196715e1b *data/table4b.rdata 5efa88eb572223c28f68f5d9d4e64f9b *data/table5.rdata 79d6dcf56c3d1149c82ee5ffdee30649 *data/us_rent_income.rda 077afe9ffbead5f5a954d0d1f04b2d8c *data/who.rdata 4bb9e62032e8d6c876d8db4399c4252d *data/world_bank_pop.rda 55446b27f3af26e179c3fc9812ddd2c7 *inst/doc/in-packages.R 163f9f491794625b5ae7484a665695ff *inst/doc/in-packages.Rmd 5207c333404e9821f8fc6270847bbbc9 *inst/doc/in-packages.html 854b04eba948ba49e2add5348cadab9e *inst/doc/nest.R a9656be34426fcd6a025088ec8da54d1 *inst/doc/nest.Rmd 3fb0feb46006314ab02b366376ba71bc *inst/doc/nest.html 325492f3c5806e8a7e669e1b5eca2923 *inst/doc/pivot.R accb6feb146d94d76d07af2db918665f *inst/doc/pivot.Rmd 14b99bb523754d389e036f7a139e100b *inst/doc/pivot.html c2037074af6279fa2c637902a9ac0b02 *inst/doc/rectangle.R c7ba3d3e00cd9561367d915cc382abbc *inst/doc/rectangle.Rmd 49fe5a70f57646fb8f057d4fbc605976 *inst/doc/rectangle.html 9dd6a3ff61ce00e5e5c5e5191cc256f1 *inst/doc/tidy-data.R 99f56b2ae7a7ea1adceb907f8c465b68 *inst/doc/tidy-data.Rmd 501e85200a39bcb0fb632e098059fd6e *inst/doc/tidy-data.html 5b2e80c9e3cf9b25745021e38f1ff1b6 *man/billboard.Rd da1d32444e64f70258d3e4222e2d42f3 *man/chop.Rd 7acb849ccc4452c9f053596496158302 *man/complete.Rd b0d5d9240882827d266edab5787ad9b4 *man/construction.Rd b85ea2e1a904be1ec2c57abcd8917b35 *man/deprecated-se.Rd 16cf924885b418367124ebb341134ffb *man/drop_na.Rd 9cdae1c4f52c2038483958b7c2aaa3fa *man/expand.Rd 71454ceaafb357bef3f9aa2d9364f738 *man/expand_grid.Rd 630e89f3cbf9fa76e527c5f9276ec7d8 *man/extract.Rd 602508d0d844a2293cb4f980619d9da9 *man/extract_numeric.Rd cb1e46f469cfbbbde29c8b5113e1d789 *man/figures/lifecycle-archived.svg c0d2e5a54f1fa4ff02bf9533079dd1f7 *man/figures/lifecycle-defunct.svg a1b8c987c676c16af790f563f96cbb1f *man/figures/lifecycle-deprecated.svg c3978703d8f40f2679795335715e98f4 *man/figures/lifecycle-experimental.svg 952b59dc07b171b97d5d982924244f61 *man/figures/lifecycle-maturing.svg 27b879bf3677ea76e3991d56ab324081 *man/figures/lifecycle-questioning.svg 46de21252239c5a23d400eae83ec6b2d *man/figures/lifecycle-retired.svg 6902bbfaf963fbc4ed98b86bda80caa2 *man/figures/lifecycle-soft-deprecated.svg 53b3f893324260b737b3c46ed2a0e643 *man/figures/lifecycle-stable.svg 864d317571951416e99a345c0d15850d *man/figures/logo.png d4c2920c001fc72280606e5516f25a1f *man/fill.Rd c0d93ea931d1cd642e9224388fd79dbf *man/fish_encounters.Rd 2ce354fda112b944beb91a8c27d989db *man/full_seq.Rd 1bd0788ccff9e4ddbb5575c00e5ce039 *man/gather.Rd 64d5cbc2e2d075f5c171e9b63966ae80 *man/hoist.Rd 93f657f22e54b3b262caf4abdfea5f13 *man/nest.Rd 917c660d6dcccd524cd3d2a12608e35c *man/nest_legacy.Rd 9af52ae4026cc464b2bab2e29c671eac *man/pack.Rd 0f020b37daf27c2fd4c78c574285ef1b *man/pipe.Rd 34531f61d40d25d50e732b17c865f148 *man/pivot_longer.Rd c8f23081f098c1d878a75c5f3f05778d *man/pivot_longer_spec.Rd 4ba135b0446dccac6a250c20311c63e8 *man/pivot_wider.Rd 20debcc7145f4d8a274c4e01a358d070 *man/pivot_wider_spec.Rd 63ab71439c8727983f9e485339bf42e2 *man/reexports.Rd 9893f49a5f1ea0eceefbc6d1843a892f *man/relig_income.Rd 4afad8f2874906211c17363b7e916f07 *man/replace_na.Rd b607dd79199a68e85b0b3d679eb1d9b7 *man/separate.Rd 3edd5554c24297e156aa1c25f7299aed *man/separate_rows.Rd 1d6d71b6e2e94dc2233c2f1a2b1af4a7 *man/smiths.Rd 46d0ee325ebdea7319ae0f8691658001 *man/spread.Rd f462b00b5c3fa6b318b938c1441ed1c5 *man/table1.Rd 36344b5f653dcbe7e31bbd73f6a04a89 *man/tidyr-package.Rd 7459c950bc3dd1a5b03a44e9e8dbee18 *man/tidyr_legacy.Rd f31f4decdf646f2351149685dc031d71 *man/uncount.Rd 23844549c1f76c84f16641a9b5d4695f *man/unite.Rd 4c5ebeb0033ea8044be20cafe8c9fc65 *man/us_rent_income.Rd 746d1017dc883fd2e1a442641f8f166d *man/who.Rd 1c68cf0a13bf4f303b84e0e8c30ec82e *man/world_bank_pop.Rd aa56ef8384b525ea2846f3cdb59b92e5 *src/RcppExports.cpp 81db5dd38227b4cab4713128f04f46c1 *src/fill.cpp 0efc4de5d6c516a021301868fdb78861 *src/melt.cpp 32534931093398158fef10463826e304 *src/simplifyPieces.cpp 14fd04cc33329083bbe4c25bdd2f0531 *tests/testthat.R 5c094e1d4c2d7c467ec2607e4c8409df *tests/testthat/test-append.R d9f9ad496c9bdad60cd556482c17041a *tests/testthat/test-chop.R c606b8a26372c6b128de47024e618d28 *tests/testthat/test-complete.R bf8eb3cb397095c72da38bf8c732f1aa *tests/testthat/test-drop-na.R 072d48b5a2a836ed11e789487f1a6772 *tests/testthat/test-expand.R 53d581917747c258f69777ce0d57d992 *tests/testthat/test-extract.R 2aee4f1a75b445da027618a0667943dd *tests/testthat/test-fill.R 2a4ae8889f6df878414f7251e60e590c *tests/testthat/test-full_seq.R b13b1660272722cd32ba49234eb01873 *tests/testthat/test-gather.R 98a06fa1e6e99aba1b2fca0ea21448cd *tests/testthat/test-id.R f4e73bcd71e301e66e26f17fba8bcb6c *tests/testthat/test-nest-legacy.R 2a4a1307a19a0d474eef7d0c8f0cc554 *tests/testthat/test-nest.R 64f64b783191613c1d48199b234c54e1 *tests/testthat/test-pack.R c63ace95506437bc6bdc93feeea5b891 *tests/testthat/test-pivot-long.R 53d2ea41148deca9ba1e33d9b5d4d264 *tests/testthat/test-pivot-wide.R d303823e7ac89dfe222dc1d2f93ec957 *tests/testthat/test-pivot.R 9ea34347616e013067fc5996df340a14 *tests/testthat/test-rectangle.R 880254e6ece164d08760766e548b58c7 *tests/testthat/test-replace_na.R e1b460b6e942f7d4c0698932833c0932 *tests/testthat/test-separate-rows.R a925972c7a39e68fe654995fb36a4eb0 *tests/testthat/test-separate.R 924c87e35cd65cf5957aed84c83f3e91 *tests/testthat/test-spread.R 2981dbb0e47db85fa329575207b72b81 *tests/testthat/test-uncount.R a5b887ea993742d51ed038d695eb5ead *tests/testthat/test-unite.R 6a6989f5b3e31fb3c876b42957275713 *tests/testthat/test-utils.R 163f9f491794625b5ae7484a665695ff *vignettes/in-packages.Rmd a9656be34426fcd6a025088ec8da54d1 *vignettes/nest.Rmd accb6feb146d94d76d07af2db918665f *vignettes/pivot.Rmd 8874e836f5787180dad68e7fa8105072 *vignettes/preg.csv c1bd3e72fdd27a35421e84636cb127a0 *vignettes/preg2.csv c7ba3d3e00cd9561367d915cc382abbc *vignettes/rectangle.Rmd 6144ebd1068581258c02ed88fff198c3 *vignettes/tb.csv 99f56b2ae7a7ea1adceb907f8c465b68 *vignettes/tidy-data.Rmd f85f432d796495a2df1fedfcbd15ad7d *vignettes/weather.csv tidyr/inst/0000755000176200001440000000000013612357526012374 5ustar liggesuserstidyr/inst/doc/0000755000176200001440000000000013612357526013141 5ustar liggesuserstidyr/inst/doc/nest.html0000644000176200001440000004711613612357514015006 0ustar liggesusers Nested data

Nested data

library(tidyr)
library(dplyr)
library(purrr)

Basics

A nested data frame is a data frame where one (or more) columns is a list of data frames. You can create simple nested data frames by hand:

df1 <- tibble(
  g = c(1, 2, 3),
  data = list(
    tibble(x = 1, y = 2),
    tibble(x = 4:5, y = 6:7),
    tibble(x = 10)
  )
)

df1
#> # A tibble: 3 x 2
#>       g data            
#>   <dbl> <list>          
#> 1     1 <tibble [1 × 2]>
#> 2     2 <tibble [2 × 2]>
#> 3     3 <tibble [1 × 1]>

(It is possible to create list-columns in regular data frames, not just in tibbles, but it’s considerably more work because the default behaviour of data.frame() is to treat lists as lists of columns.)

But more commonly you’ll create them with tidyr::nest():

df2 <- tribble(
  ~g, ~x, ~y,
   1,  1,  2,
   2,  4,  6,
   2,  5,  7,
   3, 10,  NA
)
df2 %>% nest(data = c(x, y))
#> # A tibble: 3 x 2
#>       g data            
#>   <dbl> <list>          
#> 1     1 <tibble [1 × 2]>
#> 2     2 <tibble [2 × 2]>
#> 3     3 <tibble [1 × 2]>

nest() specifies which variables should be nested inside; an alternative is to use dplyr::group_by() to describe which variables should be kept outside.

df2 %>% group_by(g) %>% nest()
#> # A tibble: 3 x 2
#> # Groups:   g [3]
#>       g data            
#>   <dbl> <list>          
#> 1     1 <tibble [1 × 2]>
#> 2     2 <tibble [2 × 2]>
#> 3     3 <tibble [1 × 2]>

I think nesting is easiest to understand in connection to grouped data: each row in the output corresponds to one group in the input. We’ll see shortly this is particularly convenient when you have other per-group objects.

The opposite of nest() is unnest(). You give it the name of a list-column containing data frames, and it row-binds the data frames together, repeating the outer columns the right number of times to line up.

df1 %>% unnest(data)
#> # A tibble: 4 x 3
#>       g     x     y
#>   <dbl> <dbl> <dbl>
#> 1     1     1     2
#> 2     2     4     6
#> 3     2     5     7
#> 4     3    10    NA

Nested data and models

Nested data is a great fit for problems where you have one of something for each group. A common place this arises is when you’re fitting multiple models.

mtcars_nested <- mtcars %>% 
  group_by(cyl) %>% 
  nest()

mtcars_nested
#> # A tibble: 3 x 2
#> # Groups:   cyl [3]
#>     cyl data              
#>   <dbl> <list>            
#> 1     6 <tibble [7 × 10]> 
#> 2     4 <tibble [11 × 10]>
#> 3     8 <tibble [14 × 10]>

Once you have a list of data frames, it’s very natural to produce a list of models:

mtcars_nested <- mtcars_nested %>% 
  mutate(model = map(data, function(df) lm(mpg ~ wt, data = df)))
mtcars_nested
#> # A tibble: 3 x 3
#> # Groups:   cyl [3]
#>     cyl data               model 
#>   <dbl> <list>             <list>
#> 1     6 <tibble [7 × 10]>  <lm>  
#> 2     4 <tibble [11 × 10]> <lm>  
#> 3     8 <tibble [14 × 10]> <lm>

And then you could even produce a list of predictions:

mtcars_nested <- mtcars_nested %>% 
  mutate(model = map(model, predict))
mtcars_nested  
#> # A tibble: 3 x 3
#> # Groups:   cyl [3]
#>     cyl data               model     
#>   <dbl> <list>             <list>    
#> 1     6 <tibble [7 × 10]>  <dbl [7]> 
#> 2     4 <tibble [11 × 10]> <dbl [11]>
#> 3     8 <tibble [14 × 10]> <dbl [14]>

This workflow works particularly well in conjunction with broom, which makes it easy to turn models into tidy data frames which can then be unnest()ed to get back to flat data frames. You can see a bigger example in the broom and dplyr vignette.

tidyr/inst/doc/tidy-data.Rmd0000644000176200001440000005077613612142023015464 0ustar liggesusers--- title: "Tidy data" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Tidy data} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, echo = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>") set.seed(1014) options(dplyr.print_max = 10) ``` (This is an informal and code heavy version of the full [tidy data paper](https://vita.had.co.nz/papers/tidy-data.html). Please refer to that for more details.) # Data tidying It is often said that 80% of data analysis is spent on the cleaning and preparing data. And it's not just a first step, but it must be repeated many times over the course of analysis as new problems come to light or new data is collected. To get a handle on the problem, this paper focuses on a small, but important, aspect of data cleaning that I call data **tidying**: structuring datasets to facilitate analysis. The principles of tidy data provide a standard way to organise data values within a dataset. A standard makes initial data cleaning easier because you don't need to start from scratch and reinvent the wheel every time. The tidy data standard has been designed to facilitate initial exploration and analysis of the data, and to simplify the development of data analysis tools that work well together. Current tools often require translation. You have to spend time munging the output from one tool so you can input it into another. Tidy datasets and tidy tools work hand in hand to make data analysis easier, allowing you to focus on the interesting domain problem, not on the uninteresting logistics of data. # Defining tidy data {#sec:defining} > Happy families are all alike; every unhappy family is unhappy in its own way > --- Leo Tolstoy Like families, tidy datasets are all alike but every messy dataset is messy in its own way. Tidy datasets provide a standardized way to link the structure of a dataset (its physical layout) with its semantics (its meaning). In this section, I'll provide some standard vocabulary for describing the structure and semantics of a dataset, and then use those definitions to define tidy data. ## Data structure Most statistical datasets are data frames made up of **rows** and **columns**. The columns are almost always labeled and the rows are sometimes labeled. The following code provides some data about an imaginary experiment in a format commonly seen in the wild. The table has two columns and three rows, and both rows and columns are labeled. ```{r} preg <- read.csv("preg.csv", stringsAsFactors = FALSE) preg ``` There are many ways to structure the same underlying data. The following table shows the same data as above, but the rows and columns have been transposed. ```{r} read.csv("preg2.csv", stringsAsFactors = FALSE) ``` The data is the same, but the layout is different. Our vocabulary of rows and columns is simply not rich enough to describe why the two tables represent the same data. In addition to appearance, we need a way to describe the underlying semantics, or meaning, of the values displayed in the table. ## Data semantics A dataset is a collection of **values**, usually either numbers (if quantitative) or strings (if qualitative). Values are organised in two ways. Every value belongs to a **variable** and an **observation**. A variable contains all values that measure the same underlying attribute (like height, temperature, duration) across units. An observation contains all values measured on the same unit (like a person, or a day, or a race) across attributes. A tidy version of the pregnancy data looks like this: (you'll learn how the functions work a little later) ```{r, message = FALSE} library(tidyr) library(dplyr) preg2 <- preg %>% gather(treatment, n, treatmenta:treatmentb) %>% mutate(treatment = gsub("treatment", "", treatment)) %>% arrange(name, treatment) preg2 ``` This makes the values, variables and observations more clear. The dataset contains 18 values representing three variables and six observations. The variables are: 1. `name`, with three possible values (John, Mary, and Jane). 2. `treatment`, with two possible values (a and b). 3. `n`, with five or six values depending on how you think of the missing value (`r sort(preg2$n, na.last = TRUE)`) The experimental design tells us more about the structure of the observations. In this experiment, every combination of of `name` and `treatment` was measured, a completely crossed design. The experimental design also determines whether or not missing values can be safely dropped. In this experiment, the missing value represents an observation that should have been made, but wasn't, so it's important to keep it. Structural missing values, which represent measurements that can't be made (e.g., the count of pregnant males) can be safely removed. For a given dataset, it's usually easy to figure out what are observations and what are variables, but it is surprisingly difficult to precisely define variables and observations in general. For example, if the columns in the pregnancy data were `height` and `weight` we would have been happy to call them variables. If the columns were `height` and `width`, it would be less clear cut, as we might think of height and width as values of a `dimension` variable. If the columns were `home phone` and `work phone`, we could treat these as two variables, but in a fraud detection environment we might want variables `phone number` and `number type` because the use of one phone number for multiple people might suggest fraud. A general rule of thumb is that it is easier to describe functional relationships between variables (e.g., `z` is a linear combination of `x` and `y`, `density` is the ratio of `weight` to `volume`) than between rows, and it is easier to make comparisons between groups of observations (e.g., average of group a vs. average of group b) than between groups of columns. In a given analysis, there may be multiple levels of observation. For example, in a trial of new allergy medication we might have three observational types: demographic data collected from each person (`age`, `sex`, `race`), medical data collected from each person on each day (`number of sneezes`, `redness of eyes`), and meteorological data collected on each day (`temperature`, `pollen count`). Variables may change over the course of analysis. Often the variables in the raw data are very fine grained, and may add extra modelling complexity for little explanatory gain. For example, many surveys ask variations on the same question to better get at an underlying trait. In early stages of analysis, variables correspond to questions. In later stages, you change focus to traits, computed by averaging together multiple questions. This considerably simplifies analysis because you don't need a hierarchical model, and you can often pretend that the data is continuous, not discrete. ## Tidy data Tidy data is a standard way of mapping the meaning of a dataset to its structure. A dataset is messy or tidy depending on how rows, columns and tables are matched up with observations, variables and types. In **tidy data**: 1. Each variable forms a column. 2. Each observation forms a row. 3. Each type of observational unit forms a table. This is Codd's 3rd normal form, but with the constraints framed in statistical language, and the focus put on a single dataset rather than the many connected datasets common in relational databases. **Messy data** is any other arrangement of the data. Tidy data makes it easy for an analyst or a computer to extract needed variables because it provides a standard way of structuring a dataset. Compare the different versions of the pregnancy data: in the messy version you need to use different strategies to extract different variables. This slows analysis and invites errors. If you consider how many data analysis operations involve all of the values in a variable (every aggregation function), you can see how important it is to extract these values in a simple, standard way. Tidy data is particularly well suited for vectorised programming languages like R, because the layout ensures that values of different variables from the same observation are always paired. While the order of variables and observations does not affect analysis, a good ordering makes it easier to scan the raw values. One way of organising variables is by their role in the analysis: are values fixed by the design of the data collection, or are they measured during the course of the experiment? Fixed variables describe the experimental design and are known in advance. Computer scientists often call fixed variables dimensions, and statisticians usually denote them with subscripts on random variables. Measured variables are what we actually measure in the study. Fixed variables should come first, followed by measured variables, each ordered so that related variables are contiguous. Rows can then be ordered by the first variable, breaking ties with the second and subsequent (fixed) variables. This is the convention adopted by all tabular displays in this paper. # Tidying messy datasets {#sec:tidying} Real datasets can, and often do, violate the three precepts of tidy data in almost every way imaginable. While occasionally you do get a dataset that you can start analysing immediately, this is the exception, not the rule. This section describes the five most common problems with messy datasets, along with their remedies: - Column headers are values, not variable names. - Multiple variables are stored in one column. - Variables are stored in both rows and columns. - Multiple types of observational units are stored in the same table. - A single observational unit is stored in multiple tables. Surprisingly, most messy datasets, including types of messiness not explicitly described above, can be tidied with a small set of tools: gathering, separating and spreading. The following sections illustrate each problem with a real dataset that I have encountered, and show how to tidy them. ## Column headers are values, not variable names A common type of messy dataset is tabular data designed for presentation, where variables form both the rows and columns, and column headers are values, not variable names. While I would call this arrangement messy, in some cases it can be extremely useful. It provides efficient storage for completely crossed designs, and it can lead to extremely efficient computation if desired operations can be expressed as matrix operations. The following code shows a subset of a typical dataset of this form. This dataset explores the relationship between income and religion in the US. It comes from a report produced by the Pew Research Center, an American think-tank that collects data on attitudes to topics ranging from religion to the internet, and produces many reports that contain datasets in this format. ```{r} relig_income ``` This dataset has three variables, `religion`, `income` and `frequency`. To tidy it, we need to **gather** the non-variable columns into a two-column key-value pair. This action is often described as making a wide dataset long (or tall), but I'll avoid those terms because they're imprecise. When gathering variables, we need to provide the name of the new key-value columns to create. The first argument, is the name of the key column, which is the name of the variable defined by the values of the column headings. In this case, it's `income`. The second argument is the name of the value column, `frequency`. The third argument defines the columns to gather, here, every column except religion. ```{r} relig_income %>% gather(income, frequency, -religion) ``` This form is tidy because each column represents a variable and each row represents an observation, in this case a demographic unit corresponding to a combination of `religion` and `income`. This format is also used to record regularly spaced observations over time. For example, the Billboard dataset shown below records the date a song first entered the billboard top 100. It has variables for `artist`, `track`, `date.entered`, `rank` and `week`. The rank in each week after it enters the top 100 is recorded in 75 columns, `wk1` to `wk75`. This form of storage is not tidy, but it is useful for data entry. It reduces duplication since otherwise each song in each week would need its own row, and song metadata like title and artist would need to be repeated. This will be discussed in more depth in [multiple types](#multiple-types). ```{r} billboard ``` To tidy this dataset, we first gather together all the `wk` columns. The column names give the `week` and the values are the `rank`s: ```{r} billboard2 <- billboard %>% gather(week, rank, wk1:wk76, na.rm = TRUE) billboard2 ``` Here we use `na.rm` to drop any missing values from the gather columns. In this data, missing values represent weeks that the song wasn't in the charts, so can be safely dropped. In this case it's also nice to do a little cleaning, converting the week variable to a number, and figuring out the date corresponding to each week on the charts: ```{r} billboard3 <- billboard2 %>% mutate( week = extract_numeric(week), date = as.Date(date.entered) + 7 * (week - 1)) %>% select(-date.entered) billboard3 ``` Finally, it's always a good idea to sort the data. We could do it by artist, track and week: ```{r} billboard3 %>% arrange(artist, track, week) ``` Or by date and rank: ```{r} billboard3 %>% arrange(date, rank) ``` ## Multiple variables stored in one column After gathering columns, the key column is sometimes a combination of multiple underlying variable names. This happens in the `tb` (tuberculosis) dataset, shown below. This dataset comes from the World Health Organisation, and records the counts of confirmed tuberculosis cases by `country`, `year`, and demographic group. The demographic groups are broken down by `sex` (m, f) and `age` (0-14, 15-25, 25-34, 35-44, 45-54, 55-64, unknown). ```{r} tb <- as_tibble(read.csv("tb.csv", stringsAsFactors = FALSE)) tb ``` First we gather up the non-variable columns: ```{r} tb2 <- tb %>% gather(demo, n, -iso2, -year, na.rm = TRUE) tb2 ``` Column headers in this format are often separated by a non-alphanumeric character (e.g. `.`, `-`, `_`, `:`), or have a fixed width format, like in this dataset. `separate()` makes it easy to split a compound variables into individual variables. You can either pass it a regular expression to split on (the default is to split on non-alphanumeric columns), or a vector of character positions. In this case we want to split after the first character: ```{r} tb3 <- tb2 %>% separate(demo, c("sex", "age"), 1) tb3 ``` Storing the values in this form resolves a problem in the original data. We want to compare rates, not counts, which means we need to know the population. In the original format, there is no easy way to add a population variable. It has to be stored in a separate table, which makes it hard to correctly match populations to counts. In tidy form, adding variables for population and rate is easy because they're just additional columns. ## Variables are stored in both rows and columns The most complicated form of messy data occurs when variables are stored in both rows and columns. The code below loads daily weather data from the Global Historical Climatology Network for one weather station (MX17004) in Mexico for five months in 2010. ```{r} weather <- as_tibble(read.csv("weather.csv", stringsAsFactors = FALSE)) weather ``` It has variables in individual columns (`id`, `year`, `month`), spread across columns (`day`, d1-d31) and across rows (`tmin`, `tmax`) (minimum and maximum temperature). Months with fewer than 31 days have structural missing values for the last day(s) of the month. To tidy this dataset we first gather the day columns: ```{r} weather2 <- weather %>% gather(day, value, d1:d31, na.rm = TRUE) weather2 ``` For presentation, I've dropped the missing values, making them implicit rather than explicit. This is ok because we know how many days are in each month and can easily reconstruct the explicit missing values. We'll also do a little cleaning: ```{r} weather3 <- weather2 %>% mutate(day = extract_numeric(day)) %>% select(id, year, month, day, element, value) %>% arrange(id, year, month, day) weather3 ``` This dataset is mostly tidy, but the `element` column is not a variable; it stores the names of variables. (Not shown in this example are the other meteorological variables `prcp` (precipitation) and `snow` (snowfall)). Fixing this requires the spread operation. This performs the inverse of gathering by spreading the `element` and `value` columns back out into the columns: ```{r} weather3 %>% spread(element, value) ``` This form is tidy: there's one variable in each column, and each row represents one day. ## Multiple types in one table {#multiple-types} Datasets often involve values collected at multiple levels, on different types of observational units. During tidying, each type of observational unit should be stored in its own table. This is closely related to the idea of database normalisation, where each fact is expressed in only one place. It's important because otherwise inconsistencies can arise. The billboard dataset actually contains observations on two types of observational units: the song and its rank in each week. This manifests itself through the duplication of facts about the song: `artist` is repeated many times. This dataset needs to be broken down into two pieces: a song dataset which stores `artist` and `song name`, and a ranking dataset which gives the `rank` of the `song` in each `week`. We first extract a `song` dataset: ```{r} song <- billboard3 %>% select(artist, track) %>% unique() %>% mutate(song_id = row_number()) song ``` Then use that to make a `rank` dataset by replacing repeated song facts with a pointer to song details (a unique song id): ```{r} rank <- billboard3 %>% left_join(song, c("artist", "track")) %>% select(song_id, date, week, rank) %>% arrange(song_id, date) rank ``` You could also imagine a `week` dataset which would record background information about the week, maybe the total number of songs sold or similar "demographic" information. Normalisation is useful for tidying and eliminating inconsistencies. However, there are few data analysis tools that work directly with relational data, so analysis usually also requires denormalisation or the merging the datasets back into one table. ## One type in multiple tables It's also common to find data values about a single type of observational unit spread out over multiple tables or files. These tables and files are often split up by another variable, so that each represents a single year, person, or location. As long as the format for individual records is consistent, this is an easy problem to fix: 1. Read the files into a list of tables. 2. For each table, add a new column that records the original file name (the file name is often the value of an important variable). 3. Combine all tables into a single table. Purrr makes this straightforward in R. The following code generates a vector of file names in a directory (`data/`) which match a regular expression (ends in `.csv`). Next we name each element of the vector with the name of the file. We do this because will preserve the names in the following step, ensuring that each row in the final data frame is labeled with its source. Finally, `map_dfr()` loops over each path, reading in the csv file and combining the results into a single data frame. ```{r, eval = FALSE} library(purrr) paths <- dir("data", pattern = "\\.csv$", full.names = TRUE) names(paths) <- basename(paths) map_dfr(paths, read.csv, stringsAsFactors = FALSE, .id = "filename") ``` Once you have a single table, you can perform additional tidying as needed. An example of this type of cleaning can be found at which takes 129 yearly baby name tables provided by the US Social Security Administration and combines them into a single file. A more complicated situation occurs when the dataset structure changes over time. For example, the datasets may contain different variables, the same variables with different names, different file formats, or different conventions for missing values. This may require you to tidy each file to individually (or, if you're lucky, in small groups) and then combine them once tidied. An example of this type of tidying is illustrated in , which shows the tidying of epa fuel economy data for over 50,000 cars from 1978 to 2008. The raw data is available online, but each year is stored in a separate file and there are four major formats with many minor variations, making tidying this dataset a considerable challenge. tidyr/inst/doc/nest.Rmd0000644000176200001440000000517713534721204014557 0ustar liggesusers--- title: "Nested data" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{nest} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup, message = FALSE} library(tidyr) library(dplyr) library(purrr) ``` ## Basics A nested data frame is a data frame where one (or more) columns is a list of data frames. You can create simple nested data frames by hand: ```{r} df1 <- tibble( g = c(1, 2, 3), data = list( tibble(x = 1, y = 2), tibble(x = 4:5, y = 6:7), tibble(x = 10) ) ) df1 ``` (It is possible to create list-columns in regular data frames, not just in tibbles, but it's considerably more work because the default behaviour of `data.frame()` is to treat lists as lists of columns.) But more commonly you'll create them with `tidyr::nest()`: ```{r} df2 <- tribble( ~g, ~x, ~y, 1, 1, 2, 2, 4, 6, 2, 5, 7, 3, 10, NA ) df2 %>% nest(data = c(x, y)) ``` `nest()` specifies which variables should be nested inside; an alternative is to use `dplyr::group_by()` to describe which variables should be kept outside. ```{r} df2 %>% group_by(g) %>% nest() ``` I think nesting is easiest to understand in connection to grouped data: each row in the output corresponds to one _group_ in the input. We'll see shortly this is particularly convenient when you have other per-group objects. The opposite of `nest()` is `unnest()`. You give it the name of a list-column containing data frames, and it row-binds the data frames together, repeating the outer columns the right number of times to line up. ```{r} df1 %>% unnest(data) ``` ## Nested data and models Nested data is a great fit for problems where you have one of _something_ for each group. A common place this arises is when you're fitting multiple models. ```{r} mtcars_nested <- mtcars %>% group_by(cyl) %>% nest() mtcars_nested ``` Once you have a list of data frames, it's very natural to produce a list of models: ```{r} mtcars_nested <- mtcars_nested %>% mutate(model = map(data, function(df) lm(mpg ~ wt, data = df))) mtcars_nested ``` And then you could even produce a list of predictions: ```{r} mtcars_nested <- mtcars_nested %>% mutate(model = map(model, predict)) mtcars_nested ``` This workflow works particularly well in conjunction with [broom](https://broom.tidyverse.org/), which makes it easy to turn models into tidy data frames which can then be `unnest()`ed to get back to flat data frames. You can see a bigger example in the [broom and dplyr vignette](https://broom.tidyverse.org/articles/broom_and_dplyr.html). tidyr/inst/doc/tidy-data.R0000644000176200001440000000665013612357525015152 0ustar liggesusers## ---- echo = FALSE------------------------------------------------------------ knitr::opts_chunk$set(collapse = TRUE, comment = "#>") set.seed(1014) options(dplyr.print_max = 10) ## ----------------------------------------------------------------------------- preg <- read.csv("preg.csv", stringsAsFactors = FALSE) preg ## ----------------------------------------------------------------------------- read.csv("preg2.csv", stringsAsFactors = FALSE) ## ---- message = FALSE--------------------------------------------------------- library(tidyr) library(dplyr) preg2 <- preg %>% gather(treatment, n, treatmenta:treatmentb) %>% mutate(treatment = gsub("treatment", "", treatment)) %>% arrange(name, treatment) preg2 ## ----------------------------------------------------------------------------- relig_income ## ----------------------------------------------------------------------------- relig_income %>% gather(income, frequency, -religion) ## ----------------------------------------------------------------------------- billboard ## ----------------------------------------------------------------------------- billboard2 <- billboard %>% gather(week, rank, wk1:wk76, na.rm = TRUE) billboard2 ## ----------------------------------------------------------------------------- billboard3 <- billboard2 %>% mutate( week = extract_numeric(week), date = as.Date(date.entered) + 7 * (week - 1)) %>% select(-date.entered) billboard3 ## ----------------------------------------------------------------------------- billboard3 %>% arrange(artist, track, week) ## ----------------------------------------------------------------------------- billboard3 %>% arrange(date, rank) ## ----------------------------------------------------------------------------- tb <- as_tibble(read.csv("tb.csv", stringsAsFactors = FALSE)) tb ## ----------------------------------------------------------------------------- tb2 <- tb %>% gather(demo, n, -iso2, -year, na.rm = TRUE) tb2 ## ----------------------------------------------------------------------------- tb3 <- tb2 %>% separate(demo, c("sex", "age"), 1) tb3 ## ----------------------------------------------------------------------------- weather <- as_tibble(read.csv("weather.csv", stringsAsFactors = FALSE)) weather ## ----------------------------------------------------------------------------- weather2 <- weather %>% gather(day, value, d1:d31, na.rm = TRUE) weather2 ## ----------------------------------------------------------------------------- weather3 <- weather2 %>% mutate(day = extract_numeric(day)) %>% select(id, year, month, day, element, value) %>% arrange(id, year, month, day) weather3 ## ----------------------------------------------------------------------------- weather3 %>% spread(element, value) ## ----------------------------------------------------------------------------- song <- billboard3 %>% select(artist, track) %>% unique() %>% mutate(song_id = row_number()) song ## ----------------------------------------------------------------------------- rank <- billboard3 %>% left_join(song, c("artist", "track")) %>% select(song_id, date, week, rank) %>% arrange(song_id, date) rank ## ---- eval = FALSE------------------------------------------------------------ # library(purrr) # paths <- dir("data", pattern = "\\.csv$", full.names = TRUE) # names(paths) <- basename(paths) # map_dfr(paths, read.csv, stringsAsFactors = FALSE, .id = "filename") tidyr/inst/doc/rectangle.html0000644000176200001440000030717713612357525016011 0ustar liggesusers Rectangling

Rectangling

Introduction

Rectangling is the art and craft of taking a deeply nested list (often sourced from wild caught JSON or XML) and taming it into a tidy data set of rows and columns. There are three functions from tidyr that are particularly useful for rectangling:

  • unnest_longer() takes each element of a list-column and makes a new row.
  • unnest_wider() takes each element of a list-column and makes a new column.
  • unnest_auto() guesses whether you want unnest_longer() or unnest_wider().
  • hoist() is similar to unnest_wider() but only plucks out selected components, and can reach down multiple levels.

A very large number of data rectangling problems can be solved by combining these functions with a splash of dplyr (largely eliminating prior approaches that combined mutate() with multiple purrr::map()s).

To illustrate these techniques, we’ll use the repurrrsive package, which provides a number deeply nested lists originally mostly captured from web APIs.

library(tidyr)
library(dplyr)
library(repurrrsive)

GitHub users

We’ll start with gh_users, a list which contains information about six GitHub users. To begin, we put the gh_users list into a data frame:

users <- tibble(user = gh_users)

This seems a bit counter-intuitive: why is the first step in making a list simpler to make it more complicated? But a data frame has a big advantage: it bundles together multiple vectors so that everything is tracked together in a single object.

Each user is a named list, where each element represents a column.

names(users$user[[1]])
#>  [1] "login"               "id"                  "avatar_url"         
#>  [4] "gravatar_id"         "url"                 "html_url"           
#>  [7] "followers_url"       "following_url"       "gists_url"          
#> [10] "starred_url"         "subscriptions_url"   "organizations_url"  
#> [13] "repos_url"           "events_url"          "received_events_url"
#> [16] "type"                "site_admin"          "name"               
#> [19] "company"             "blog"                "location"           
#> [22] "email"               "hireable"            "bio"                
#> [25] "public_repos"        "public_gists"        "followers"          
#> [28] "following"           "created_at"          "updated_at"

There are two ways to turn the list components into columns. unnest_wider() takes every component and makes a new column:

users %>% unnest_wider(user)
#> # A tibble: 6 x 30
#>   login     id avatar_url gravatar_id url   html_url followers_url following_url
#>   <chr>  <int> <chr>      <chr>       <chr> <chr>    <chr>         <chr>        
#> 1 gabo… 6.60e5 https://a… ""          http… https:/… https://api.… https://api.…
#> 2 jenn… 5.99e5 https://a… ""          http… https:/… https://api.… https://api.…
#> 3 jtle… 1.57e6 https://a… ""          http… https:/… https://api.… https://api.…
#> 4 juli… 1.25e7 https://a… ""          http… https:/… https://api.… https://api.…
#> 5 leep… 3.51e6 https://a… ""          http… https:/… https://api.… https://api.…
#> 6 masa… 8.36e6 https://a… ""          http… https:/… https://api.… https://api.…
#> # … with 22 more variables: gists_url <chr>, starred_url <chr>,
#> #   subscriptions_url <chr>, organizations_url <chr>, repos_url <chr>,
#> #   events_url <chr>, received_events_url <chr>, type <chr>, site_admin <lgl>,
#> #   name <chr>, company <chr>, blog <chr>, location <chr>, email <chr>,
#> #   public_repos <int>, public_gists <int>, followers <int>, following <int>,
#> #   created_at <chr>, updated_at <chr>, bio <chr>, hireable <lgl>

But in this case, there are many components and we don’t need most of them so we can instead use hoist(). hoist() allows us to pull out selected components using the same syntax as purrr::pluck():

users %>% hoist(user, 
  followers = "followers", 
  login = "login", 
  url = "html_url"
)
#> # A tibble: 6 x 4
#>   followers login       url                            user             
#>       <int> <chr>       <chr>                          <list>           
#> 1       303 gaborcsardi https://github.com/gaborcsardi <named list [27]>
#> 2       780 jennybc     https://github.com/jennybc     <named list [27]>
#> 3      3958 jtleek      https://github.com/jtleek      <named list [27]>
#> 4       115 juliasilge  https://github.com/juliasilge  <named list [27]>
#> 5       213 leeper      https://github.com/leeper      <named list [27]>
#> 6        34 masalmon    https://github.com/masalmon    <named list [27]>

hoist() removes the named components from the user list-column, so you can think of it as moving components out of the inner list into the top-level data frame.

Github repos

We start off gh_repos similarly, by putting it in a tibble:

repos <- tibble(repo = gh_repos)
repos
#> # A tibble: 6 x 1
#>   repo       
#>   <list>     
#> 1 <list [30]>
#> 2 <list [30]>
#> 3 <list [30]>
#> 4 <list [26]>
#> 5 <list [30]>
#> 6 <list [30]>

This time the elements of user are a list of repositories that belong to that user. These are observations, so should become new rows, so we use unnest_longer() rather than unnest_wider():

repos <- repos %>% unnest_longer(repo)
repos
#> # A tibble: 176 x 1
#>    repo             
#>    <list>           
#>  1 <named list [68]>
#>  2 <named list [68]>
#>  3 <named list [68]>
#>  4 <named list [68]>
#>  5 <named list [68]>
#>  6 <named list [68]>
#>  7 <named list [68]>
#>  8 <named list [68]>
#>  9 <named list [68]>
#> 10 <named list [68]>
#> # … with 166 more rows

Then we can use unnest_wider() or hoist():

repos %>% hoist(repo, 
  login = c("owner", "login"), 
  name = "name",
  homepage = "homepage",
  watchers = "watchers_count"
)
#> # A tibble: 176 x 5
#>    login       name        homepage watchers repo             
#>    <chr>       <chr>       <chr>       <int> <list>           
#>  1 gaborcsardi after        <NA>           5 <named list [65]>
#>  2 gaborcsardi argufy       <NA>          19 <named list [65]>
#>  3 gaborcsardi ask          <NA>           5 <named list [65]>
#>  4 gaborcsardi baseimports  <NA>           0 <named list [65]>
#>  5 gaborcsardi citest       <NA>           0 <named list [65]>
#>  6 gaborcsardi clisymbols  ""             18 <named list [65]>
#>  7 gaborcsardi cmaker       <NA>           0 <named list [65]>
#>  8 gaborcsardi cmark        <NA>           0 <named list [65]>
#>  9 gaborcsardi conditions   <NA>           0 <named list [65]>
#> 10 gaborcsardi crayon       <NA>          52 <named list [65]>
#> # … with 166 more rows

Note the use of c("owner", "login"): this allows us to reach two levels deep inside of a list. An alternative approach would be to pull out just owner and then put each element of it in a column:

repos %>% 
  hoist(repo, owner = "owner") %>% 
  unnest_wider(owner)
#> # A tibble: 176 x 18
#>    login     id avatar_url gravatar_id url   html_url followers_url
#>    <chr>  <int> <chr>      <chr>       <chr> <chr>    <chr>        
#>  1 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  2 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  3 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  4 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  5 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  6 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  7 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  8 gabo… 660288 https://a… ""          http… https:/… https://api.…
#>  9 gabo… 660288 https://a… ""          http… https:/… https://api.…
#> 10 gabo… 660288 https://a… ""          http… https:/… https://api.…
#> # … with 166 more rows, and 11 more variables: following_url <chr>,
#> #   gists_url <chr>, starred_url <chr>, subscriptions_url <chr>,
#> #   organizations_url <chr>, repos_url <chr>, events_url <chr>,
#> #   received_events_url <chr>, type <chr>, site_admin <lgl>, repo <list>

Instead of looking at the list and carefully thinking about whether it needs to become rows or columns, you can use unnest_auto(). It uses a handful of heuristics to figure out whether unnest_longer() or unnest_wider() is appropriate, and tells you about its reasoning.

tibble(repo = gh_repos) %>% 
  unnest_auto(repo) %>% 
  unnest_auto(repo)
#> Using `unnest_longer(repo)`; no element has names
#> Using `unnest_wider(repo)`; elements have 68 names in common
#> # A tibble: 176 x 67
#>        id name  full_name owner private html_url description fork  url  
#>     <int> <chr> <chr>     <lis> <lgl>   <chr>    <chr>       <lgl> <chr>
#>  1 6.12e7 after gaborcsa… <nam… FALSE   https:/… Run Code i… FALSE http…
#>  2 4.05e7 argu… gaborcsa… <nam… FALSE   https:/… Declarativ… FALSE http…
#>  3 3.64e7 ask   gaborcsa… <nam… FALSE   https:/… Friendly C… FALSE http…
#>  4 3.49e7 base… gaborcsa… <nam… FALSE   https:/… Do we get … FALSE http…
#>  5 6.16e7 cite… gaborcsa… <nam… FALSE   https:/… Test R pac… TRUE  http…
#>  6 3.39e7 clis… gaborcsa… <nam… FALSE   https:/… Unicode sy… FALSE http…
#>  7 3.72e7 cmak… gaborcsa… <nam… FALSE   https:/… port of cm… TRUE  http…
#>  8 6.80e7 cmark gaborcsa… <nam… FALSE   https:/… CommonMark… TRUE  http…
#>  9 6.32e7 cond… gaborcsa… <nam… FALSE   https:/… <NA>        TRUE  http…
#> 10 2.43e7 cray… gaborcsa… <nam… FALSE   https:/… R package … FALSE http…
#> # … with 166 more rows, and 58 more variables: forks_url <chr>, keys_url <chr>,
#> #   collaborators_url <chr>, teams_url <chr>, hooks_url <chr>,
#> #   issue_events_url <chr>, events_url <chr>, assignees_url <chr>,
#> #   branches_url <chr>, tags_url <chr>, blobs_url <chr>, git_tags_url <chr>,
#> #   git_refs_url <chr>, trees_url <chr>, statuses_url <chr>,
#> #   languages_url <chr>, stargazers_url <chr>, contributors_url <chr>,
#> #   subscribers_url <chr>, subscription_url <chr>, commits_url <chr>,
#> #   git_commits_url <chr>, comments_url <chr>, issue_comment_url <chr>,
#> #   contents_url <chr>, compare_url <chr>, merges_url <chr>, archive_url <chr>,
#> #   downloads_url <chr>, issues_url <chr>, pulls_url <chr>,
#> #   milestones_url <chr>, notifications_url <chr>, labels_url <chr>,
#> #   releases_url <chr>, deployments_url <chr>, created_at <chr>,
#> #   updated_at <chr>, pushed_at <chr>, git_url <chr>, ssh_url <chr>,
#> #   clone_url <chr>, svn_url <chr>, size <int>, stargazers_count <int>,
#> #   watchers_count <int>, language <chr>, has_issues <lgl>,
#> #   has_downloads <lgl>, has_wiki <lgl>, has_pages <lgl>, forks_count <int>,
#> #   open_issues_count <int>, forks <int>, open_issues <int>, watchers <int>,
#> #   default_branch <chr>, homepage <chr>

Game of Thrones characters

got_chars has a similar structure to gh_users: it’s a list of named lists, where each element of the inner list describes some attribute of a GoT character. We start in the same way, first by creating a data frame and then by unnesting each component into a column:

chars <- tibble(char = got_chars)
chars
#> # A tibble: 30 x 1
#>    char             
#>    <list>           
#>  1 <named list [18]>
#>  2 <named list [18]>
#>  3 <named list [18]>
#>  4 <named list [18]>
#>  5 <named list [18]>
#>  6 <named list [18]>
#>  7 <named list [18]>
#>  8 <named list [18]>
#>  9 <named list [18]>
#> 10 <named list [18]>
#> # … with 20 more rows

chars2 <- chars %>% unnest_wider(char)
chars2
#> # A tibble: 30 x 18
#>    url      id name  gender culture born  died  alive titles aliases father
#>    <chr> <int> <chr> <chr>  <chr>   <chr> <chr> <lgl> <list> <list>  <chr> 
#>  1 http…  1022 Theo… Male   "Ironb… "In … ""    TRUE  <chr … <chr [… ""    
#>  2 http…  1052 Tyri… Male   ""      "In … ""    TRUE  <chr … <chr [… ""    
#>  3 http…  1074 Vict… Male   "Ironb… "In … ""    TRUE  <chr … <chr [… ""    
#>  4 http…  1109 Will  Male   ""      ""    "In … FALSE <chr … <chr [… ""    
#>  5 http…  1166 Areo… Male   "Norvo… "In … ""    TRUE  <chr … <chr [… ""    
#>  6 http…  1267 Chett Male   ""      "At … "In … FALSE <chr … <chr [… ""    
#>  7 http…  1295 Cres… Male   ""      "In … "In … FALSE <chr … <chr [… ""    
#>  8 http…   130 Aria… Female "Dorni… "In … ""    TRUE  <chr … <chr [… ""    
#>  9 http…  1303 Daen… Female "Valyr… "In … ""    TRUE  <chr … <chr [… ""    
#> 10 http…  1319 Davo… Male   "Weste… "In … ""    TRUE  <chr … <chr [… ""    
#> # … with 20 more rows, and 7 more variables: mother <chr>, spouse <chr>,
#> #   allegiances <list>, books <list>, povBooks <list>, tvSeries <list>,
#> #   playedBy <list>

This is more complex than gh_users because some component of char are themselves a list, giving us a collection of list-columns:

chars2 %>% select_if(is.list)
#> # A tibble: 30 x 7
#>    titles    aliases    allegiances books     povBooks  tvSeries  playedBy 
#>    <list>    <list>     <list>      <list>    <list>    <list>    <list>   
#>  1 <chr [3]> <chr [4]>  <chr [1]>   <chr [3]> <chr [2]> <chr [6]> <chr [1]>
#>  2 <chr [2]> <chr [11]> <chr [1]>   <chr [2]> <chr [4]> <chr [6]> <chr [1]>
#>  3 <chr [2]> <chr [1]>  <chr [1]>   <chr [3]> <chr [2]> <chr [1]> <chr [1]>
#>  4 <chr [1]> <chr [1]>  <???>       <chr [1]> <chr [1]> <chr [1]> <chr [1]>
#>  5 <chr [1]> <chr [1]>  <chr [1]>   <chr [3]> <chr [2]> <chr [2]> <chr [1]>
#>  6 <chr [1]> <chr [1]>  <???>       <chr [2]> <chr [1]> <chr [1]> <chr [1]>
#>  7 <chr [1]> <chr [1]>  <???>       <chr [2]> <chr [1]> <chr [1]> <chr [1]>
#>  8 <chr [1]> <chr [1]>  <chr [1]>   <chr [4]> <chr [1]> <chr [1]> <chr [1]>
#>  9 <chr [5]> <chr [11]> <chr [1]>   <chr [1]> <chr [4]> <chr [6]> <chr [1]>
#> 10 <chr [4]> <chr [5]>  <chr [2]>   <chr [1]> <chr [3]> <chr [5]> <chr [1]>
#> # … with 20 more rows

What you do next will depend on the purposes of the analysis. Maybe you want a row for every book and TV series that the character appears in:

chars2 %>% 
  select(name, books, tvSeries) %>% 
  pivot_longer(c(books, tvSeries), names_to = "media", values_to = "value") %>% 
  unnest_longer(value)
#> # A tibble: 180 x 3
#>    name             media    value            
#>    <chr>            <chr>    <chr>            
#>  1 Theon Greyjoy    books    A Game of Thrones
#>  2 Theon Greyjoy    books    A Storm of Swords
#>  3 Theon Greyjoy    books    A Feast for Crows
#>  4 Theon Greyjoy    tvSeries Season 1         
#>  5 Theon Greyjoy    tvSeries Season 2         
#>  6 Theon Greyjoy    tvSeries Season 3         
#>  7 Theon Greyjoy    tvSeries Season 4         
#>  8 Theon Greyjoy    tvSeries Season 5         
#>  9 Theon Greyjoy    tvSeries Season 6         
#> 10 Tyrion Lannister books    A Feast for Crows
#> # … with 170 more rows

Or maybe you want to build a table that lets you match title to name:

chars2 %>% 
  select(name, title = titles) %>% 
  unnest_longer(title)
#> # A tibble: 60 x 2
#>    name              title                                                 
#>    <chr>             <chr>                                                 
#>  1 Theon Greyjoy     "Prince of Winterfell"                                
#>  2 Theon Greyjoy     "Captain of Sea Bitch"                                
#>  3 Theon Greyjoy     "Lord of the Iron Islands (by law of the green lands)"
#>  4 Tyrion Lannister  "Acting Hand of the King (former)"                    
#>  5 Tyrion Lannister  "Master of Coin (former)"                             
#>  6 Victarion Greyjoy "Lord Captain of the Iron Fleet"                      
#>  7 Victarion Greyjoy "Master of the Iron Victory"                          
#>  8 Will              ""                                                    
#>  9 Areo Hotah        "Captain of the Guard at Sunspear"                    
#> 10 Chett             ""                                                    
#> # … with 50 more rows

(Note that the empty titles ("") are due to an infelicity in the input got_chars: ideally people without titles would have a title vector of length 0, not a title vector of length 1 containing an empty string.)

Again, we could rewrite using unnest_auto(). This is convenient for exploration, but I wouldn’t rely on it in the long term - unnest_auto() has the undesirable property that it will always succeed. That means if your data structure changes, unnest_auto() will continue to work, but might give very different output that causes cryptic failures from downstream functions.

tibble(char = got_chars) %>% 
  unnest_auto(char) %>% 
  select(name, title = titles) %>% 
  unnest_auto(title)
#> Using `unnest_wider(char)`; elements have 18 names in common
#> Using `unnest_longer(title)`; no element has names
#> # A tibble: 60 x 2
#>    name              title                                                 
#>    <chr>             <chr>                                                 
#>  1 Theon Greyjoy     "Prince of Winterfell"                                
#>  2 Theon Greyjoy     "Captain of Sea Bitch"                                
#>  3 Theon Greyjoy     "Lord of the Iron Islands (by law of the green lands)"
#>  4 Tyrion Lannister  "Acting Hand of the King (former)"                    
#>  5 Tyrion Lannister  "Master of Coin (former)"                             
#>  6 Victarion Greyjoy "Lord Captain of the Iron Fleet"                      
#>  7 Victarion Greyjoy "Master of the Iron Victory"                          
#>  8 Will              ""                                                    
#>  9 Areo Hotah        "Captain of the Guard at Sunspear"                    
#> 10 Chett             ""                                                    
#> # … with 50 more rows

Geocoding with google

Next we’ll tackle a more complex form of data that comes from Google’s geocoding service. It’s against the terms of service to cache this data, so I first write a very simple wrapper around the API. This relies on having an Google maps API key stored in an environment; if that’s not available these code chunks won’t be run.

has_key <- !identical(Sys.getenv("GOOGLE_MAPS_API_KEY"), "")
if (!has_key) {
  message("No Google Maps API key found; code chunks will not be run")
}

# https://developers.google.com/maps/documentation/geocoding
geocode <- function(address, api_key = Sys.getenv("GOOGLE_MAPS_API_KEY")) {
  url <- "https://maps.googleapis.com/maps/api/geocode/json"
  url <- paste0(url, "?address=", URLencode(address), "&key=", api_key)

  jsonlite::read_json(url)
}

The list that this function returns is quite complex:

houston <- geocode("Houston TX")
str(houston)
#> List of 2
#>  $ results:List of 1
#>   ..$ :List of 5
#>   .. ..$ address_components:List of 4
#>   .. .. ..$ :List of 3
#>   .. .. .. ..$ long_name : chr "Houston"
#>   .. .. .. ..$ short_name: chr "Houston"
#>   .. .. .. ..$ types     :List of 2
#>   .. .. .. .. ..$ : chr "locality"
#>   .. .. .. .. ..$ : chr "political"
#>   .. .. ..$ :List of 3
#>   .. .. .. ..$ long_name : chr "Harris County"
#>   .. .. .. ..$ short_name: chr "Harris County"
#>   .. .. .. ..$ types     :List of 2
#>   .. .. .. .. ..$ : chr "administrative_area_level_2"
#>   .. .. .. .. ..$ : chr "political"
#>   .. .. ..$ :List of 3
#>   .. .. .. ..$ long_name : chr "Texas"
#>   .. .. .. ..$ short_name: chr "TX"
#>   .. .. .. ..$ types     :List of 2
#>   .. .. .. .. ..$ : chr "administrative_area_level_1"
#>   .. .. .. .. ..$ : chr "political"
#>   .. .. ..$ :List of 3
#>   .. .. .. ..$ long_name : chr "United States"
#>   .. .. .. ..$ short_name: chr "US"
#>   .. .. .. ..$ types     :List of 2
#>   .. .. .. .. ..$ : chr "country"
#>   .. .. .. .. ..$ : chr "political"
#>   .. ..$ formatted_address : chr "Houston, TX, USA"
#>   .. ..$ geometry          :List of 4
#>   .. .. ..$ bounds       :List of 2
#>   .. .. .. ..$ northeast:List of 2
#>   .. .. .. .. ..$ lat: num 30.1
#>   .. .. .. .. ..$ lng: num -95
#>   .. .. .. ..$ southwest:List of 2
#>   .. .. .. .. ..$ lat: num 29.5
#>   .. .. .. .. ..$ lng: num -95.8
#>   .. .. ..$ location     :List of 2
#>   .. .. .. ..$ lat: num 29.8
#>   .. .. .. ..$ lng: num -95.4
#>   .. .. ..$ location_type: chr "APPROXIMATE"
#>   .. .. ..$ viewport     :List of 2
#>   .. .. .. ..$ northeast:List of 2
#>   .. .. .. .. ..$ lat: num 30.1
#>   .. .. .. .. ..$ lng: num -95
#>   .. .. .. ..$ southwest:List of 2
#>   .. .. .. .. ..$ lat: num 29.5
#>   .. .. .. .. ..$ lng: num -95.8
#>   .. ..$ place_id          : chr "ChIJAYWNSLS4QIYROwVl894CDco"
#>   .. ..$ types             :List of 2
#>   .. .. ..$ : chr "locality"
#>   .. .. ..$ : chr "political"
#>  $ status : chr "OK"

Fortunately, we can attack the problem step by step with tidyr functions. To make the problem a bit harder (!) and more realistic, I’ll start by geocoding a few cities:

city <- c("Houston", "LA", "New York", "Chicago", "Springfield")
city_geo <- purrr::map(city, geocode)

I’ll put these results in a tibble, next to the original city name:

loc <- tibble(city = city, json = city_geo)
loc
#> # A tibble: 5 x 2
#>   city        json            
#>   <chr>       <list>          
#> 1 Houston     <named list [2]>
#> 2 LA          <named list [2]>
#> 3 New York    <named list [2]>
#> 4 Chicago     <named list [2]>
#> 5 Springfield <named list [2]>

The first level contains components status and result, which we can reveal with unnest_wider():

loc %>%
  unnest_wider(json)
#> # A tibble: 5 x 3
#>   city        results    status
#>   <chr>       <list>     <chr> 
#> 1 Houston     <list [1]> OK    
#> 2 LA          <list [1]> OK    
#> 3 New York    <list [1]> OK    
#> 4 Chicago     <list [1]> OK    
#> 5 Springfield <list [1]> OK

Notice that results is a list of lists. Most of the cities have 1 element (representing a unique match from the geocoding API), but Springfield has two. We can pull these out into separate rows with unnest_longer():

loc %>%
  unnest_wider(json) %>% 
  unnest_longer(results)
#> # A tibble: 5 x 3
#>   city        results          status
#>   <chr>       <list>           <chr> 
#> 1 Houston     <named list [5]> OK    
#> 2 LA          <named list [5]> OK    
#> 3 New York    <named list [5]> OK    
#> 4 Chicago     <named list [5]> OK    
#> 5 Springfield <named list [5]> OK

Now these all have the same components, as revealed by unnest_wider():

loc %>%
  unnest_wider(json) %>% 
  unnest_longer(results) %>% 
  unnest_wider(results)
#> # A tibble: 5 x 7
#>   city    address_componen… formatted_address geometry  place_id    types status
#>   <chr>   <list>            <chr>             <list>    <chr>       <lis> <chr> 
#> 1 Houston <list [4]>        Houston, TX, USA  <named l… ChIJAYWNSL… <lis… OK    
#> 2 LA      <list [4]>        Los Angeles, CA,… <named l… ChIJE9on3F… <lis… OK    
#> 3 New Yo… <list [3]>        New York, NY, USA <named l… ChIJOwg_06… <lis… OK    
#> 4 Chicago <list [4]>        Chicago, IL, USA  <named l… ChIJ7cv00D… <lis… OK    
#> 5 Spring… <list [5]>        Springfield, MO,… <named l… ChIJP5jIRf… <lis… OK

We can find the lat and lon coordinates by unnesting geometry:

loc %>%
  unnest_wider(json) %>% 
  unnest_longer(results) %>% 
  unnest_wider(results) %>% 
  unnest_wider(geometry)
#> # A tibble: 5 x 10
#>   city  address_compone… formatted_addre… bounds location location_type viewport
#>   <chr> <list>           <chr>            <list> <list>   <chr>         <list>  
#> 1 Hous… <list [4]>       Houston, TX, USA <name… <named … APPROXIMATE   <named …
#> 2 LA    <list [4]>       Los Angeles, CA… <name… <named … APPROXIMATE   <named …
#> 3 New … <list [3]>       New York, NY, U… <name… <named … APPROXIMATE   <named …
#> 4 Chic… <list [4]>       Chicago, IL, USA <name… <named … APPROXIMATE   <named …
#> 5 Spri… <list [5]>       Springfield, MO… <name… <named … APPROXIMATE   <named …
#> # … with 3 more variables: place_id <chr>, types <list>, status <chr>

And then location:

loc %>%
  unnest_wider(json) %>%
  unnest_longer(results) %>%
  unnest_wider(results) %>%
  unnest_wider(geometry) %>%
  unnest_wider(location)
#> # A tibble: 5 x 11
#>   city  address_compone… formatted_addre… bounds   lat    lng location_type
#>   <chr> <list>           <chr>            <list> <dbl>  <dbl> <chr>        
#> 1 Hous… <list [4]>       Houston, TX, USA <name…  29.8  -95.4 APPROXIMATE  
#> 2 LA    <list [4]>       Los Angeles, CA… <name…  34.1 -118.  APPROXIMATE  
#> 3 New … <list [3]>       New York, NY, U… <name…  40.7  -74.0 APPROXIMATE  
#> 4 Chic… <list [4]>       Chicago, IL, USA <name…  41.9  -87.6 APPROXIMATE  
#> 5 Spri… <list [5]>       Springfield, MO… <name…  37.2  -93.3 APPROXIMATE  
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> #   status <chr>

Again, unnest_auto() makes this simpler with the small risk of failing in unexpected ways if the input structure changes:

loc %>%
  unnest_auto(json) %>%
  unnest_auto(results) %>%
  unnest_auto(results) %>%
  unnest_auto(geometry) %>%
  unnest_auto(location)
#> Using `unnest_wider(json)`; elements have 2 names in common
#> Using `unnest_longer(results)`; no element has names
#> Using `unnest_wider(results)`; elements have 5 names in common
#> Using `unnest_wider(geometry)`; elements have 4 names in common
#> Using `unnest_wider(location)`; elements have 2 names in common
#> # A tibble: 5 x 11
#>   city  address_compone… formatted_addre… bounds   lat    lng location_type
#>   <chr> <list>           <chr>            <list> <dbl>  <dbl> <chr>        
#> 1 Hous… <list [4]>       Houston, TX, USA <name…  29.8  -95.4 APPROXIMATE  
#> 2 LA    <list [4]>       Los Angeles, CA… <name…  34.1 -118.  APPROXIMATE  
#> 3 New … <list [3]>       New York, NY, U… <name…  40.7  -74.0 APPROXIMATE  
#> 4 Chic… <list [4]>       Chicago, IL, USA <name…  41.9  -87.6 APPROXIMATE  
#> 5 Spri… <list [5]>       Springfield, MO… <name…  37.2  -93.3 APPROXIMATE  
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> #   status <chr>

We could also just look at the first address for each city:

loc %>%
  unnest_wider(json) %>%
  hoist(results, first_result = 1) %>%
  unnest_wider(first_result) %>%
  unnest_wider(geometry) %>%
  unnest_wider(location)
#> # A tibble: 5 x 11
#>   city  address_compone… formatted_addre… bounds   lat    lng location_type
#>   <chr> <list>           <chr>            <list> <dbl>  <dbl> <chr>        
#> 1 Hous… <list [4]>       Houston, TX, USA <name…  29.8  -95.4 APPROXIMATE  
#> 2 LA    <list [4]>       Los Angeles, CA… <name…  34.1 -118.  APPROXIMATE  
#> 3 New … <list [3]>       New York, NY, U… <name…  40.7  -74.0 APPROXIMATE  
#> 4 Chic… <list [4]>       Chicago, IL, USA <name…  41.9  -87.6 APPROXIMATE  
#> 5 Spri… <list [5]>       Springfield, MO… <name…  37.2  -93.3 APPROXIMATE  
#> # … with 4 more variables: viewport <list>, place_id <chr>, types <list>,
#> #   status <chr>

Or use hoist() to dive deeply to get directly to lat and lng:

loc %>%
  hoist(json,
    lat = list("results", 1, "geometry", "location", "lat"),
    lng = list("results", 1, "geometry", "location", "lng")
  )
#> # A tibble: 5 x 4
#>   city          lat    lng json            
#>   <chr>       <dbl>  <dbl> <list>          
#> 1 Houston      29.8  -95.4 <named list [2]>
#> 2 LA           34.1 -118.  <named list [2]>
#> 3 New York     40.7  -74.0 <named list [2]>
#> 4 Chicago      41.9  -87.6 <named list [2]>
#> 5 Springfield  37.2  -93.3 <named list [2]>

Sharla Gelfand’s discography

We’ll finish off with the most complex list, from Sharla Gelfand’s discography. We’ll start the usual way: putting the list into a single column data frame, and then widening so each component is a column. I also parse the date_added column into a real date-time1.

discs <- tibble(disc = discog) %>% 
  unnest_wider(disc) %>% 
  mutate(date_added = as.POSIXct(strptime(date_added, "%Y-%m-%dT%H:%M:%S"))) 
discs
#> # A tibble: 155 x 5
#>    instance_id date_added          basic_information       id rating
#>          <int> <dttm>              <list>               <int>  <int>
#>  1   354823933 2019-02-16 17:48:59 <named list [11]>  7496378      0
#>  2   354092601 2019-02-13 14:13:11 <named list [11]>  4490852      0
#>  3   354091476 2019-02-13 14:07:23 <named list [11]>  9827276      0
#>  4   351244906 2019-02-02 11:39:58 <named list [11]>  9769203      0
#>  5   351244801 2019-02-02 11:39:37 <named list [11]>  7237138      0
#>  6   351052065 2019-02-01 20:40:53 <named list [11]> 13117042      0
#>  7   350315345 2019-01-29 15:48:37 <named list [11]>  7113575      0
#>  8   350315103 2019-01-29 15:47:22 <named list [11]> 10540713      0
#>  9   350314507 2019-01-29 15:44:08 <named list [11]> 11260950      0
#> 10   350314047 2019-01-29 15:41:35 <named list [11]> 11726853      0
#> # … with 145 more rows

At this level, we see information about when each disc was added to Sharla’s discography, not any information about the disc itself. To do that we need to widen the basic_information column:

discs %>% unnest_wider(basic_information)
#> Error: Column name `id` must not be duplicated.

Unfortunately that fails because there’s an id column inside basic_information. We can quickly see what’s going on by setting names_repair = "unique":

discs %>% unnest_wider(basic_information, names_repair = "unique")
#> New names:
#> * id -> id...6
#> * id -> id...14
#> # A tibble: 155 x 15
#>    instance_id date_added          labels  year artists id...6 thumb title
#>          <int> <dttm>              <list> <int> <list>   <int> <chr> <chr>
#>  1   354823933 2019-02-16 17:48:59 <list…  2015 <list … 7.50e6 "htt… Demo 
#>  2   354092601 2019-02-13 14:13:11 <list…  2013 <list … 4.49e6 "htt… Obse…
#>  3   354091476 2019-02-13 14:07:23 <list…  2017 <list … 9.83e6 "htt… I    
#>  4   351244906 2019-02-02 11:39:58 <list…  2017 <list … 9.77e6 "htt… Oído…
#>  5   351244801 2019-02-02 11:39:37 <list…  2015 <list … 7.24e6 "htt… A Ca…
#>  6   351052065 2019-02-01 20:40:53 <list…  2019 <list … 1.31e7 "htt… Tash…
#>  7   350315345 2019-01-29 15:48:37 <list…  2014 <list … 7.11e6 "htt… Demo 
#>  8   350315103 2019-01-29 15:47:22 <list…  2015 <list … 1.05e7 "htt… Let …
#>  9   350314507 2019-01-29 15:44:08 <list…  2017 <list … 1.13e7 ""    Sub …
#> 10   350314047 2019-01-29 15:41:35 <list…  2017 <list … 1.17e7 "htt… Demo 
#> # … with 145 more rows, and 7 more variables: formats <list>,
#> #   cover_image <chr>, resource_url <chr>, master_id <int>, master_url <chr>,
#> #   id...14 <int>, rating <int>

The problem is that basic_information repeats the id column that’s also stored at the top-level, so we can just drop that:

discs %>% 
  select(-id) %>% 
  unnest_wider(basic_information)
#> # A tibble: 155 x 14
#>    instance_id date_added          labels  year artists     id thumb title
#>          <int> <dttm>              <list> <int> <list>   <int> <chr> <chr>
#>  1   354823933 2019-02-16 17:48:59 <list…  2015 <list … 7.50e6 "htt… Demo 
#>  2   354092601 2019-02-13 14:13:11 <list…  2013 <list … 4.49e6 "htt… Obse…
#>  3   354091476 2019-02-13 14:07:23 <list…  2017 <list … 9.83e6 "htt… I    
#>  4   351244906 2019-02-02 11:39:58 <list…  2017 <list … 9.77e6 "htt… Oído…
#>  5   351244801 2019-02-02 11:39:37 <list…  2015 <list … 7.24e6 "htt… A Ca…
#>  6   351052065 2019-02-01 20:40:53 <list…  2019 <list … 1.31e7 "htt… Tash…
#>  7   350315345 2019-01-29 15:48:37 <list…  2014 <list … 7.11e6 "htt… Demo 
#>  8   350315103 2019-01-29 15:47:22 <list…  2015 <list … 1.05e7 "htt… Let …
#>  9   350314507 2019-01-29 15:44:08 <list…  2017 <list … 1.13e7 ""    Sub …
#> 10   350314047 2019-01-29 15:41:35 <list…  2017 <list … 1.17e7 "htt… Demo 
#> # … with 145 more rows, and 6 more variables: formats <list>,
#> #   cover_image <chr>, resource_url <chr>, master_id <int>, master_url <chr>,
#> #   rating <int>

Alternatively, we could use hoist():

discs %>% 
  hoist(basic_information,
    title = "title",
    year = "year",
    label = list("labels", 1, "name"),
    artist = list("artists", 1, "name")
  )
#> # A tibble: 155 x 9
#>    instance_id date_added          title  year label artist basic_informati…
#>          <int> <dttm>              <chr> <int> <chr> <chr>  <list>          
#>  1   354823933 2019-02-16 17:48:59 Demo   2015 Tobi… Mollot <named list [9]>
#>  2   354092601 2019-02-13 14:13:11 Obse…  2013 La V… Una B… <named list [9]>
#>  3   354091476 2019-02-13 14:07:23 I      2017 La V… S.H.I… <named list [9]>
#>  4   351244906 2019-02-02 11:39:58 Oído…  2017 La V… Rata … <named list [9]>
#>  5   351244801 2019-02-02 11:39:37 A Ca…  2015 Kato… Ivy (… <named list [9]>
#>  6   351052065 2019-02-01 20:40:53 Tash…  2019 High… Tashme <named list [9]>
#>  7   350315345 2019-01-29 15:48:37 Demo   2014 Mind… Desgr… <named list [9]>
#>  8   350315103 2019-01-29 15:47:22 Let …  2015 Not … Phant… <named list [9]>
#>  9   350314507 2019-01-29 15:44:08 Sub …  2017 Not … Sub S… <named list [9]>
#> 10   350314047 2019-01-29 15:41:35 Demo   2017 Pres… Small… <named list [9]>
#> # … with 145 more rows, and 2 more variables: id <int>, rating <int>

Here I quickly extract the name of the first label and artist by indexing deeply into the nested list.

A more systematic approach would be to create separate tables for artist and label:

discs %>% 
  hoist(basic_information, artist = "artists") %>% 
  select(disc_id = id, artist) %>% 
  unnest_longer(artist) %>% 
  unnest_wider(artist)
#> # A tibble: 167 x 8
#>     disc_id join  name          anv   tracks role  resource_url               id
#>       <int> <chr> <chr>         <chr> <chr>  <chr> <chr>                   <int>
#>  1  7496378 ""    Mollot        ""    ""     ""    https://api.discogs.c… 4.62e6
#>  2  4490852 ""    Una Bèstia I… ""    ""     ""    https://api.discogs.c… 3.19e6
#>  3  9827276 ""    S.H.I.T. (3)  ""    ""     ""    https://api.discogs.c… 2.77e6
#>  4  9769203 ""    Rata Negra    ""    ""     ""    https://api.discogs.c… 4.28e6
#>  5  7237138 ""    Ivy (18)      ""    ""     ""    https://api.discogs.c… 3.60e6
#>  6 13117042 ""    Tashme        ""    ""     ""    https://api.discogs.c… 5.21e6
#>  7  7113575 ""    Desgraciados  ""    ""     ""    https://api.discogs.c… 4.45e6
#>  8 10540713 ""    Phantom Head  ""    ""     ""    https://api.discogs.c… 4.27e6
#>  9 11260950 ""    Sub Space (2) ""    ""     ""    https://api.discogs.c… 5.69e6
#> 10 11726853 ""    Small Man (2) ""    ""     ""    https://api.discogs.c… 6.37e6
#> # … with 157 more rows

discs %>% 
  hoist(basic_information, format = "formats") %>% 
  select(disc_id = id, format) %>% 
  unnest_longer(format) %>% 
  unnest_wider(format) %>% 
  unnest_longer(descriptions)
#> # A tibble: 280 x 5
#>     disc_id descriptions text  name     qty  
#>       <int> <chr>        <chr> <chr>    <chr>
#>  1  7496378 "Numbered"   Black Cassette 1    
#>  2  4490852 "LP"         <NA>  Vinyl    1    
#>  3  9827276 "7\""        <NA>  Vinyl    1    
#>  4  9827276 "45 RPM"     <NA>  Vinyl    1    
#>  5  9827276 "EP"         <NA>  Vinyl    1    
#>  6  9769203 "LP"         <NA>  Vinyl    1    
#>  7  9769203 "Album"      <NA>  Vinyl    1    
#>  8  7237138 "7\""        <NA>  Vinyl    1    
#>  9  7237138 "45 RPM"     <NA>  Vinyl    1    
#> 10 13117042 "7\""        <NA>  Vinyl    1    
#> # … with 270 more rows

Then you could join these back on to the original dataset as needed.


  1. I’d normally use readr::parse_datetime() or lubridate::ymd_hms(), but I can’t here because it’s a vignette and I don’t want to add a dependency to tidyr just to simplify one example.↩︎

tidyr/inst/doc/pivot.html0000644000176200001440000040302413612357516015172 0ustar liggesusers Pivoting

Pivoting

Introduction

This vignette describes the use of the new pivot_longer() and pivot_wider() functions. Their goal is to improve the usability of gather() and spread(), and incorporate state-of-the-art features found in other packages.

For some time, it’s been obvious that there is something fundamentally wrong with the design of spread() and gather(). Many people don’t find the names intuitive and find it hard to remember which direction corresponds to spreading and which to gathering. It also seems surprisingly hard to remember the arguments to these functions, meaning that many people (including me!) have to consult the documentation every time.

There are two important new features inspired by other R packages that have been advancing reshaping in R:

  • pivot_longer() can work with multiple value variables that may have different types, inspired by the enhanced melt() and dcast() functions provided by the data.table package by Matt Dowle and Arun Srinivasan.

  • pivot_longer() and pivot_wider() can take a data frame that specifies precisely how metadata stored in column names becomes data variables (and vice versa), inspired by the cdata package by John Mount and Nina Zumel.

In this vignette, you’ll learn the key ideas behind pivot_longer() and pivot_wider() as you see them used to solve a variety of data reshaping challenges ranging from simple to complex.

To begin we’ll load some needed packages. In real analysis code, I’d imagine you’d do with the library(tidyverse), but I can’t do that here since this vignette is embedded in a package.

library(tidyr)
library(dplyr)
library(readr)

Longer

pivot_longer() makes datasets longer by increasing the number of rows and decreasing the number of columns. I don’t believe it makes sense to describe a dataset as being in “long form”. Length is a relative term, and you can only say (e.g.) that dataset A is longer than dataset B.

pivot_longer() is commonly needed to tidy wild-caught datasets as they often optimise for ease of data entry or ease of comparison rather than ease of analysis. The following sections show how to use pivot_longer() for a wide range of realistic datasets.

String data in column names

The relig_income dataset stores counts based on a survey which (among other things) asked people about their religion and annual income:

relig_income
#> # A tibble: 18 x 11
#>    religion `<$10k` `$10-20k` `$20-30k` `$30-40k` `$40-50k` `$50-75k` `$75-100k`
#>    <chr>      <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>      <dbl>
#>  1 Agnostic      27        34        60        81        76       137        122
#>  2 Atheist       12        27        37        52        35        70         73
#>  3 Buddhist      27        21        30        34        33        58         62
#>  4 Catholic     418       617       732       670       638      1116        949
#>  5 Don’t k…      15        14        15        11        10        35         21
#>  6 Evangel…     575       869      1064       982       881      1486        949
#>  7 Hindu          1         9         7         9        11        34         47
#>  8 Histori…     228       244       236       238       197       223        131
#>  9 Jehovah…      20        27        24        24        21        30         15
#> 10 Jewish        19        19        25        25        30        95         69
#> # … with 8 more rows, and 3 more variables: `$100-150k` <dbl>, `>150k` <dbl>,
#> #   `Don't know/refused` <dbl>

This dataset contains three variables:

  • religion, stored in the rows,
  • income spread across the column names, and
  • count stored in the cell values.

To tidy it we use pivot_longer():

relig_income %>% 
  pivot_longer(-religion, names_to = "income", values_to = "count")
#> # A tibble: 180 x 3
#>    religion income             count
#>    <chr>    <chr>              <dbl>
#>  1 Agnostic <$10k                 27
#>  2 Agnostic $10-20k               34
#>  3 Agnostic $20-30k               60
#>  4 Agnostic $30-40k               81
#>  5 Agnostic $40-50k               76
#>  6 Agnostic $50-75k              137
#>  7 Agnostic $75-100k             122
#>  8 Agnostic $100-150k            109
#>  9 Agnostic >150k                 84
#> 10 Agnostic Don't know/refused    96
#> # … with 170 more rows
  • The first argument is the dataset to reshape, relig_income.

  • The second argument describes which columns need to be reshaped. In this case, it’s every column apart from religion.

  • The names_to gives the name of the variable that will be created from the data stored in the column names, i.e. income.

  • The values_to gives the name of the variable that will be created from the data stored in the cell value, i.e. count.

Neither the names_to nor the values_to column exists in relig_income, so we provide them as character strings surrounded in quotes.

Numeric data in column names

The billboard dataset records the billboard rank of songs in the year 2000. It has a form similar to the relig_income data, but the data encoded in the column names is really a number, not a string.

billboard
#> # A tibble: 317 x 79
#>    artist track date.entered   wk1   wk2   wk3   wk4   wk5   wk6   wk7   wk8
#>    <chr>  <chr> <date>       <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 2 Pac  Baby… 2000-02-26      87    82    72    77    87    94    99    NA
#>  2 2Ge+h… The … 2000-09-02      91    87    92    NA    NA    NA    NA    NA
#>  3 3 Doo… Kryp… 2000-04-08      81    70    68    67    66    57    54    53
#>  4 3 Doo… Loser 2000-10-21      76    76    72    69    67    65    55    59
#>  5 504 B… Wobb… 2000-04-15      57    34    25    17    17    31    36    49
#>  6 98^0   Give… 2000-08-19      51    39    34    26    26    19     2     2
#>  7 A*Tee… Danc… 2000-07-08      97    97    96    95   100    NA    NA    NA
#>  8 Aaliy… I Do… 2000-01-29      84    62    51    41    38    35    35    38
#>  9 Aaliy… Try … 2000-03-18      59    53    38    28    21    18    16    14
#> 10 Adams… Open… 2000-08-26      76    76    74    69    68    67    61    58
#> # … with 307 more rows, and 68 more variables: wk9 <dbl>, wk10 <dbl>,
#> #   wk11 <dbl>, wk12 <dbl>, wk13 <dbl>, wk14 <dbl>, wk15 <dbl>, wk16 <dbl>,
#> #   wk17 <dbl>, wk18 <dbl>, wk19 <dbl>, wk20 <dbl>, wk21 <dbl>, wk22 <dbl>,
#> #   wk23 <dbl>, wk24 <dbl>, wk25 <dbl>, wk26 <dbl>, wk27 <dbl>, wk28 <dbl>,
#> #   wk29 <dbl>, wk30 <dbl>, wk31 <dbl>, wk32 <dbl>, wk33 <dbl>, wk34 <dbl>,
#> #   wk35 <dbl>, wk36 <dbl>, wk37 <dbl>, wk38 <dbl>, wk39 <dbl>, wk40 <dbl>,
#> #   wk41 <dbl>, wk42 <dbl>, wk43 <dbl>, wk44 <dbl>, wk45 <dbl>, wk46 <dbl>,
#> #   wk47 <dbl>, wk48 <dbl>, wk49 <dbl>, wk50 <dbl>, wk51 <dbl>, wk52 <dbl>,
#> #   wk53 <dbl>, wk54 <dbl>, wk55 <dbl>, wk56 <dbl>, wk57 <dbl>, wk58 <dbl>,
#> #   wk59 <dbl>, wk60 <dbl>, wk61 <dbl>, wk62 <dbl>, wk63 <dbl>, wk64 <dbl>,
#> #   wk65 <dbl>, wk66 <lgl>, wk67 <lgl>, wk68 <lgl>, wk69 <lgl>, wk70 <lgl>,
#> #   wk71 <lgl>, wk72 <lgl>, wk73 <lgl>, wk74 <lgl>, wk75 <lgl>, wk76 <lgl>

We can start with the same basic specification as for the relig_income dataset. Here we want the names to become a variable called week, and the values to become a variable called rank. I also use values_drop_na to drop rows that correspond to missing values. Not every song stays in the charts for all 76 weeks, so the structure of the input data force the creation of unnessary explicit NAs.

billboard %>% 
  pivot_longer(
    cols = starts_with("wk"), 
    names_to = "week", 
    values_to = "rank",
    values_drop_na = TRUE
  )
#> # A tibble: 5,307 x 5
#>    artist  track                   date.entered week   rank
#>    <chr>   <chr>                   <date>       <chr> <dbl>
#>  1 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk1      87
#>  2 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk2      82
#>  3 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk3      72
#>  4 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk4      77
#>  5 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk5      87
#>  6 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk6      94
#>  7 2 Pac   Baby Don't Cry (Keep... 2000-02-26   wk7      99
#>  8 2Ge+her The Hardest Part Of ... 2000-09-02   wk1      91
#>  9 2Ge+her The Hardest Part Of ... 2000-09-02   wk2      87
#> 10 2Ge+her The Hardest Part Of ... 2000-09-02   wk3      92
#> # … with 5,297 more rows

It would be nice to easily determine how long each song stayed in the charts, but to do that, we’ll need to convert the week variable to an integer. We can do that by using two additional arguments: names_prefix strips off the wk prefix, and names_ptypes specifies that week should be an integer:

billboard %>% 
  pivot_longer(
    cols = starts_with("wk"), 
    names_to = "week", 
    names_prefix = "wk",
    names_ptypes = list(week = integer()),
    values_to = "rank",
    values_drop_na = TRUE,
  )
#> # A tibble: 5,307 x 5
#>    artist  track                   date.entered  week  rank
#>    <chr>   <chr>                   <date>       <int> <dbl>
#>  1 2 Pac   Baby Don't Cry (Keep... 2000-02-26       1    87
#>  2 2 Pac   Baby Don't Cry (Keep... 2000-02-26       2    82
#>  3 2 Pac   Baby Don't Cry (Keep... 2000-02-26       3    72
#>  4 2 Pac   Baby Don't Cry (Keep... 2000-02-26       4    77
#>  5 2 Pac   Baby Don't Cry (Keep... 2000-02-26       5    87
#>  6 2 Pac   Baby Don't Cry (Keep... 2000-02-26       6    94
#>  7 2 Pac   Baby Don't Cry (Keep... 2000-02-26       7    99
#>  8 2Ge+her The Hardest Part Of ... 2000-09-02       1    91
#>  9 2Ge+her The Hardest Part Of ... 2000-09-02       2    87
#> 10 2Ge+her The Hardest Part Of ... 2000-09-02       3    92
#> # … with 5,297 more rows

Many variables in column names

A more challenging situation occurs when you have multiple variables crammed into the column names. For example, take the who dataset:

who
#> # A tibble: 7,240 x 60
#>    country iso2  iso3   year new_sp_m014 new_sp_m1524 new_sp_m2534 new_sp_m3544
#>    <chr>   <chr> <chr> <int>       <int>        <int>        <int>        <int>
#>  1 Afghan… AF    AFG    1980          NA           NA           NA           NA
#>  2 Afghan… AF    AFG    1981          NA           NA           NA           NA
#>  3 Afghan… AF    AFG    1982          NA           NA           NA           NA
#>  4 Afghan… AF    AFG    1983          NA           NA           NA           NA
#>  5 Afghan… AF    AFG    1984          NA           NA           NA           NA
#>  6 Afghan… AF    AFG    1985          NA           NA           NA           NA
#>  7 Afghan… AF    AFG    1986          NA           NA           NA           NA
#>  8 Afghan… AF    AFG    1987          NA           NA           NA           NA
#>  9 Afghan… AF    AFG    1988          NA           NA           NA           NA
#> 10 Afghan… AF    AFG    1989          NA           NA           NA           NA
#> # … with 7,230 more rows, and 52 more variables: new_sp_m4554 <int>,
#> #   new_sp_m5564 <int>, new_sp_m65 <int>, new_sp_f014 <int>,
#> #   new_sp_f1524 <int>, new_sp_f2534 <int>, new_sp_f3544 <int>,
#> #   new_sp_f4554 <int>, new_sp_f5564 <int>, new_sp_f65 <int>,
#> #   new_sn_m014 <int>, new_sn_m1524 <int>, new_sn_m2534 <int>,
#> #   new_sn_m3544 <int>, new_sn_m4554 <int>, new_sn_m5564 <int>,
#> #   new_sn_m65 <int>, new_sn_f014 <int>, new_sn_f1524 <int>,
#> #   new_sn_f2534 <int>, new_sn_f3544 <int>, new_sn_f4554 <int>,
#> #   new_sn_f5564 <int>, new_sn_f65 <int>, new_ep_m014 <int>,
#> #   new_ep_m1524 <int>, new_ep_m2534 <int>, new_ep_m3544 <int>,
#> #   new_ep_m4554 <int>, new_ep_m5564 <int>, new_ep_m65 <int>,
#> #   new_ep_f014 <int>, new_ep_f1524 <int>, new_ep_f2534 <int>,
#> #   new_ep_f3544 <int>, new_ep_f4554 <int>, new_ep_f5564 <int>,
#> #   new_ep_f65 <int>, newrel_m014 <int>, newrel_m1524 <int>,
#> #   newrel_m2534 <int>, newrel_m3544 <int>, newrel_m4554 <int>,
#> #   newrel_m5564 <int>, newrel_m65 <int>, newrel_f014 <int>,
#> #   newrel_f1524 <int>, newrel_f2534 <int>, newrel_f3544 <int>,
#> #   newrel_f4554 <int>, newrel_f5564 <int>, newrel_f65 <int>

country, iso2, iso3, and year are already variables, so they can be left as is. But the columns from new_sp_m014 to newrel_f65 encode four variables in their names:

  • The new_/new prefix indicates these are counts of new cases. This dataset only contains new cases, so we’ll ignore it here because it’s constant.

  • sp/rel/sp/ep describe how the case was diagnosed.

  • m/f gives the gender.

  • 014/1524/2535/3544/4554/65 supplies the age range.

We can break these variables up by specifying multiple column names in names_to, and then either providing names_sep or names_pattern. Here names_pattern is the most natural fit. It has a similar interface to extract: you give it a regular expression containing groups (defined by ()) and it puts each group in a column.

who %>% pivot_longer(
  cols = new_sp_m014:newrel_f65,
  names_to = c("diagnosis", "gender", "age"), 
  names_pattern = "new_?(.*)_(.)(.*)",
  values_to = "count"
)
#> # A tibble: 405,440 x 8
#>    country     iso2  iso3   year diagnosis gender age   count
#>    <chr>       <chr> <chr> <int> <chr>     <chr>  <chr> <int>
#>  1 Afghanistan AF    AFG    1980 sp        m      014      NA
#>  2 Afghanistan AF    AFG    1980 sp        m      1524     NA
#>  3 Afghanistan AF    AFG    1980 sp        m      2534     NA
#>  4 Afghanistan AF    AFG    1980 sp        m      3544     NA
#>  5 Afghanistan AF    AFG    1980 sp        m      4554     NA
#>  6 Afghanistan AF    AFG    1980 sp        m      5564     NA
#>  7 Afghanistan AF    AFG    1980 sp        m      65       NA
#>  8 Afghanistan AF    AFG    1980 sp        f      014      NA
#>  9 Afghanistan AF    AFG    1980 sp        f      1524     NA
#> 10 Afghanistan AF    AFG    1980 sp        f      2534     NA
#> # … with 405,430 more rows

We could go one step further and specify the types of the gender and age columns. I think this is good practice when you have categorical variables with a known set of values.

who %>% pivot_longer(
  cols = new_sp_m014:newrel_f65,
  names_to = c("diagnosis", "gender", "age"), 
  names_pattern = "new_?(.*)_(.)(.*)",
  names_ptypes = list(
    gender = factor(levels = c("f", "m")),
    age = factor(
      levels = c("014", "1524", "2534", "3544", "4554", "5564", "65"), 
      ordered = TRUE
    )
  ),
  values_to = "count",
)
#> # A tibble: 405,440 x 8
#>    country     iso2  iso3   year diagnosis gender age   count
#>    <chr>       <chr> <chr> <int> <chr>     <fct>  <ord> <int>
#>  1 Afghanistan AF    AFG    1980 sp        m      014      NA
#>  2 Afghanistan AF    AFG    1980 sp        m      1524     NA
#>  3 Afghanistan AF    AFG    1980 sp        m      2534     NA
#>  4 Afghanistan AF    AFG    1980 sp        m      3544     NA
#>  5 Afghanistan AF    AFG    1980 sp        m      4554     NA
#>  6 Afghanistan AF    AFG    1980 sp        m      5564     NA
#>  7 Afghanistan AF    AFG    1980 sp        m      65       NA
#>  8 Afghanistan AF    AFG    1980 sp        f      014      NA
#>  9 Afghanistan AF    AFG    1980 sp        f      1524     NA
#> 10 Afghanistan AF    AFG    1980 sp        f      2534     NA
#> # … with 405,430 more rows

Multiple observations per row

So far, we have been working with data frames that have one observation per row, but many important pivotting problems involve multiple observations per row. You can usually recognise this case because name of the column that you want to appear in the output is part of the column name in the input. In this section, you’ll learn how to pivot this sort of data.

The following example is adapted from the data.table vignette, as inspiration for tidyr’s solution to this problem.

family <- tribble(
  ~family,  ~dob_child1,  ~dob_child2, ~gender_child1, ~gender_child2,
       1L, "1998-11-26", "2000-01-29",             1L,             2L,
       2L, "1996-06-22",           NA,             2L,             NA,
       3L, "2002-07-11", "2004-04-05",             2L,             2L,
       4L, "2004-10-10", "2009-08-27",             1L,             1L,
       5L, "2000-12-05", "2005-02-28",             2L,             1L,
)
family <- family %>% mutate_at(vars(starts_with("dob")), parse_date)
family
#> # A tibble: 5 x 5
#>   family dob_child1 dob_child2 gender_child1 gender_child2
#>    <int> <date>     <date>             <int>         <int>
#> 1      1 1998-11-26 2000-01-29             1             2
#> 2      2 1996-06-22 NA                     2            NA
#> 3      3 2002-07-11 2004-04-05             2             2
#> 4      4 2004-10-10 2009-08-27             1             1
#> 5      5 2000-12-05 2005-02-28             2             1

Note that we have two pieces of information (or values) for each child: their gender and their dob (date of birth). These need to go into separate columns in the result. Again we supply multiple variables to names_to, using names_sep to split up each variable name. Note the special name .value: this tells pivot_longer() that that part of the column name specifies the “value” being measured (which will become a variable in the output).

family %>% 
  pivot_longer(
    -family, 
    names_to = c(".value", "child"), 
    names_sep = "_", 
    values_drop_na = TRUE
  )
#> # A tibble: 9 x 4
#>   family child  dob        gender
#>    <int> <chr>  <date>      <int>
#> 1      1 child1 1998-11-26      1
#> 2      1 child2 2000-01-29      2
#> 3      2 child1 1996-06-22      2
#> 4      3 child1 2002-07-11      2
#> 5      3 child2 2004-04-05      2
#> 6      4 child1 2004-10-10      1
#> 7      4 child2 2009-08-27      1
#> 8      5 child1 2000-12-05      2
#> 9      5 child2 2005-02-28      1

Note the use of values_drop_na = TRUE: the input shape forces the creation of explicit missing variables for observations that don’t exist.

This problem also exists in the anscombe dataset built in to base R:

anscombe
#>    x1 x2 x3 x4    y1   y2    y3    y4
#> 1  10 10 10  8  8.04 9.14  7.46  6.58
#> 2   8  8  8  8  6.95 8.14  6.77  5.76
#> 3  13 13 13  8  7.58 8.74 12.74  7.71
#> 4   9  9  9  8  8.81 8.77  7.11  8.84
#> 5  11 11 11  8  8.33 9.26  7.81  8.47
#> 6  14 14 14  8  9.96 8.10  8.84  7.04
#> 7   6  6  6  8  7.24 6.13  6.08  5.25
#> 8   4  4  4 19  4.26 3.10  5.39 12.50
#> 9  12 12 12  8 10.84 9.13  8.15  5.56
#> 10  7  7  7  8  4.82 7.26  6.42  7.91
#> 11  5  5  5  8  5.68 4.74  5.73  6.89

This dataset contains four pairs of variables (x1 and y1, x2 and y2, etc) that underlie Anscombe’s quartet, a collection of four datasets that have the same summary statistics (mean, sd, correlation etc), but have quite different data. We want to produce a dataset with columns set, x and y.

anscombe %>% 
  pivot_longer(everything(), 
    names_to = c(".value", "set"), 
    names_pattern = "(.)(.)"
  ) %>% 
  arrange(set)
#> # A tibble: 44 x 3
#>    set       x     y
#>    <chr> <dbl> <dbl>
#>  1 1        10  8.04
#>  2 1         8  6.95
#>  3 1        13  7.58
#>  4 1         9  8.81
#>  5 1        11  8.33
#>  6 1        14  9.96
#>  7 1         6  7.24
#>  8 1         4  4.26
#>  9 1        12 10.8 
#> 10 1         7  4.82
#> # … with 34 more rows

A similar situation can arise with panel data. For example, take this example dataset provided by Thomas Leeper. We can tidy it using the same approach as for anscombe:

pnl <- tibble(
  x = 1:4,
  a = c(1, 1,0, 0),
  b = c(0, 1, 1, 1),
  y1 = rnorm(4),
  y2 = rnorm(4),
  z1 = rep(3, 4),
  z2 = rep(-2, 4),
)

pnl %>% 
  pivot_longer(
    -c(x, a, b), 
    names_to = c(".value", "time"), 
    names_pattern = "(.)(.)"
  )
#> # A tibble: 8 x 6
#>       x     a     b time       y     z
#>   <int> <dbl> <dbl> <chr>  <dbl> <dbl>
#> 1     1     1     0 1      0.466     3
#> 2     1     1     0 2      0.173    -2
#> 3     2     1     1 1     -0.613     3
#> 4     2     1     1 2      0.638    -2
#> 5     3     0     1 1      0.609     3
#> 6     3     0     1 2     -0.720    -2
#> 7     4     0     1 1      0.148     3
#> 8     4     0     1 2      1.85     -2

Duplicated column names

Occassionally you will come across datasets that have duplicated column names. Generally, such datasets are hard to work with in R, because when you refer to a column by name it only finds the first match. To create a tibble with duplicated names, you have to explicitly opt out of the name repair that usually prevents you from creating such a dataset:

df <- tibble(x = 1:3, y = 4:6, y = 5:7, y = 7:9, .name_repair = "minimal")
df
#> # A tibble: 3 x 4
#>       x     y     y     y
#>   <int> <int> <int> <int>
#> 1     1     4     5     7
#> 2     2     5     6     8
#> 3     3     6     7     9

When pivot_longer() encounters such data, it automatically adds another column to the output:

df %>% pivot_longer(-x, names_to = "name", values_to = "value")
#> Warning: Duplicate column names detected, adding .copy variable
#> # A tibble: 9 x 4
#>       x name  .copy value
#>   <int> <chr> <int> <int>
#> 1     1 y         1     4
#> 2     1 y         2     5
#> 3     1 y         3     7
#> 4     2 y         1     5
#> 5     2 y         2     6
#> 6     2 y         3     8
#> 7     3 y         1     6
#> 8     3 y         2     7
#> 9     3 y         3     9

Wider

pivot_wider() is the opposite of pivot_longer(): it makes a dataset wider by increasing the number of columns and decreasing the number of rows. It’s relatively rare to need pivot_wider() to make tidy data, but it’s often useful for creating summary tables for presentation, or data in a format needed by other tools.

Capture-recapture data

The fish_encounters dataset, contributed by Myfanwy Johnston, describes when fish swimming down a river are detected by automatic monitoring stations:

fish_encounters
#> # A tibble: 114 x 3
#>    fish  station  seen
#>    <fct> <fct>   <int>
#>  1 4842  Release     1
#>  2 4842  I80_1       1
#>  3 4842  Lisbon      1
#>  4 4842  Rstr        1
#>  5 4842  Base_TD     1
#>  6 4842  BCE         1
#>  7 4842  BCW         1
#>  8 4842  BCE2        1
#>  9 4842  BCW2        1
#> 10 4842  MAE         1
#> # … with 104 more rows

Many tools used to analyse this data need it in a form where each station is a column:

fish_encounters %>% pivot_wider(names_from = station, values_from = seen)
#> # A tibble: 19 x 12
#>    fish  Release I80_1 Lisbon  Rstr Base_TD   BCE   BCW  BCE2  BCW2   MAE   MAW
#>    <fct>   <int> <int>  <int> <int>   <int> <int> <int> <int> <int> <int> <int>
#>  1 4842        1     1      1     1       1     1     1     1     1     1     1
#>  2 4843        1     1      1     1       1     1     1     1     1     1     1
#>  3 4844        1     1      1     1       1     1     1     1     1     1     1
#>  4 4845        1     1      1     1       1    NA    NA    NA    NA    NA    NA
#>  5 4847        1     1      1    NA      NA    NA    NA    NA    NA    NA    NA
#>  6 4848        1     1      1     1      NA    NA    NA    NA    NA    NA    NA
#>  7 4849        1     1     NA    NA      NA    NA    NA    NA    NA    NA    NA
#>  8 4850        1     1     NA     1       1     1     1    NA    NA    NA    NA
#>  9 4851        1     1     NA    NA      NA    NA    NA    NA    NA    NA    NA
#> 10 4854        1     1     NA    NA      NA    NA    NA    NA    NA    NA    NA
#> # … with 9 more rows

This dataset only records when a fish was detected by the station - it doesn’t record when it wasn’t detected (this is common with this type of data). That means the output data is filled with NAs. However, in this case we know that the absence of a record means that the fish was not seen, so we can ask pivot_wider() to fill these missing values in with zeros:

fish_encounters %>% pivot_wider(
  names_from = station, 
  values_from = seen,
  values_fill = list(seen = 0)
)
#> # A tibble: 19 x 12
#>    fish  Release I80_1 Lisbon  Rstr Base_TD   BCE   BCW  BCE2  BCW2   MAE   MAW
#>    <fct>   <int> <int>  <int> <int>   <int> <int> <int> <int> <int> <int> <int>
#>  1 4842        1     1      1     1       1     1     1     1     1     1     1
#>  2 4843        1     1      1     1       1     1     1     1     1     1     1
#>  3 4844        1     1      1     1       1     1     1     1     1     1     1
#>  4 4845        1     1      1     1       1     0     0     0     0     0     0
#>  5 4847        1     1      1     0       0     0     0     0     0     0     0
#>  6 4848        1     1      1     1       0     0     0     0     0     0     0
#>  7 4849        1     1      0     0       0     0     0     0     0     0     0
#>  8 4850        1     1      0     1       1     1     1     0     0     0     0
#>  9 4851        1     1      0     0       0     0     0     0     0     0     0
#> 10 4854        1     1      0     0       0     0     0     0     0     0     0
#> # … with 9 more rows

Aggregation

You can also use pivot_wider() to perform simple aggregation. For example, take the warpbreaks dataset built in to base R (converted to a tibble for the better print method):

warpbreaks <- warpbreaks %>% as_tibble() %>% select(wool, tension, breaks)
warpbreaks
#> # A tibble: 54 x 3
#>    wool  tension breaks
#>    <fct> <fct>    <dbl>
#>  1 A     L           26
#>  2 A     L           30
#>  3 A     L           54
#>  4 A     L           25
#>  5 A     L           70
#>  6 A     L           52
#>  7 A     L           51
#>  8 A     L           26
#>  9 A     L           67
#> 10 A     M           18
#> # … with 44 more rows

This is a designed experiment with nine replicates for every combination of wool (A and B) and tension (L, M, H):

warpbreaks %>% count(wool, tension)
#> # A tibble: 6 x 3
#>   wool  tension     n
#>   <fct> <fct>   <int>
#> 1 A     L           9
#> 2 A     M           9
#> 3 A     H           9
#> 4 B     L           9
#> 5 B     M           9
#> 6 B     H           9

What happens if we attempt to pivot the levels of wool into the columns?

warpbreaks %>% pivot_wider(names_from = wool, values_from = breaks)
#> Warning: Values in `breaks` are not uniquely identified; output will contain list-cols.
#> * Use `values_fn = list(breaks = list)` to suppress this warning.
#> * Use `values_fn = list(breaks = length)` to identify where the duplicates arise
#> * Use `values_fn = list(breaks = summary_fun)` to summarise duplicates
#> # A tibble: 3 x 3
#>   tension A         B        
#>   <fct>   <list>    <list>   
#> 1 L       <dbl [9]> <dbl [9]>
#> 2 M       <dbl [9]> <dbl [9]>
#> 3 H       <dbl [9]> <dbl [9]>

We get a warning that each cell in the output corresponds to multiple cells in the input. The default behaviour produces list-columns, which contain all the individual values. A more useful output would be summary statistics, e.g. mean breaks for each combination of wool and tension:

warpbreaks %>% 
  pivot_wider(
    names_from = wool, 
    values_from = breaks,
    values_fn = list(breaks = mean)
  )
#> # A tibble: 3 x 3
#>   tension     A     B
#>   <fct>   <dbl> <dbl>
#> 1 L        44.6  28.2
#> 2 M        24    28.8
#> 3 H        24.6  18.8

For more complex summary operations, I recommend summarising before reshaping, but for simple cases it’s often convenient to summarise within pivot_wider().

Generate column name from multiple variables

Imagine, as in https://stackoverflow.com/questions/24929954, that we have information containing the combination of product, country, and year. In tidy form it might look like this:

production <- expand_grid(
    product = c("A", "B"), 
    country = c("AI", "EI"), 
    year = 2000:2014
  ) %>%
  filter((product == "A" & country == "AI") | product == "B") %>% 
  mutate(production = rnorm(nrow(.)))
production
#> # A tibble: 45 x 4
#>    product country  year production
#>    <chr>   <chr>   <int>      <dbl>
#>  1 A       AI       2000      2.13 
#>  2 A       AI       2001     -0.882
#>  3 A       AI       2002     -0.180
#>  4 A       AI       2003     -0.484
#>  5 A       AI       2004      1.02 
#>  6 A       AI       2005      2.88 
#>  7 A       AI       2006      0.498
#>  8 A       AI       2007     -0.870
#>  9 A       AI       2008     -1.72 
#> 10 A       AI       2009      1.77 
#> # … with 35 more rows

We want to widen the data so we have one column for each combination of product and country. The key is to specify multiple variables for names_from:

production %>% pivot_wider(
  names_from = c(product, country), 
  values_from = production
)
#> # A tibble: 15 x 4
#>     year   A_AI    B_AI    B_EI
#>    <int>  <dbl>   <dbl>   <dbl>
#>  1  2000  2.13  -0.247   1.04  
#>  2  2001 -0.882  0.420   0.868 
#>  3  2002 -0.180  0.387   0.295 
#>  4  2003 -0.484  0.821  -0.0485
#>  5  2004  1.02  -1.75    0.0421
#>  6  2005  2.88   0.396  -2.18  
#>  7  2006  0.498 -0.406  -1.74  
#>  8  2007 -0.870  0.0908 -0.280 
#>  9  2008 -1.72  -1.15   -0.202 
#> 10  2009  1.77  -0.630  -0.128 
#> # … with 5 more rows

Tidy census

The us_rent_income dataset contains information about median income and rent for each state in the US for 2017 (from the American Community Survey, retrieved with the tidycensus package).

us_rent_income
#> # A tibble: 104 x 5
#>    GEOID NAME       variable estimate   moe
#>    <chr> <chr>      <chr>       <dbl> <dbl>
#>  1 01    Alabama    income      24476   136
#>  2 01    Alabama    rent          747     3
#>  3 02    Alaska     income      32940   508
#>  4 02    Alaska     rent         1200    13
#>  5 04    Arizona    income      27517   148
#>  6 04    Arizona    rent          972     4
#>  7 05    Arkansas   income      23789   165
#>  8 05    Arkansas   rent          709     5
#>  9 06    California income      29454   109
#> 10 06    California rent         1358     3
#> # … with 94 more rows

Here both estimate and moe are values columns, so we can supply them to values_from:

us_rent_income %>% 
  pivot_wider(names_from = variable, values_from = c(estimate, moe))
#> # A tibble: 52 x 6
#>    GEOID NAME                 estimate_income estimate_rent moe_income moe_rent
#>    <chr> <chr>                          <dbl>         <dbl>      <dbl>    <dbl>
#>  1 01    Alabama                        24476           747        136        3
#>  2 02    Alaska                         32940          1200        508       13
#>  3 04    Arizona                        27517           972        148        4
#>  4 05    Arkansas                       23789           709        165        5
#>  5 06    California                     29454          1358        109        3
#>  6 08    Colorado                       32401          1125        109        5
#>  7 09    Connecticut                    35326          1123        195        5
#>  8 10    Delaware                       31560          1076        247       10
#>  9 11    District of Columbia           43198          1424        681       17
#> 10 12    Florida                        25952          1077         70        3
#> # … with 42 more rows

Note that the name of the variable is automatically appended to the output columns.

Contact list

A final challenge is inspired by Jiena Gu. Imagine you have a contact list that you’ve copied and pasted from a website:

contacts <- tribble(
  ~field, ~value,
  "name", "Jiena McLellan",
  "company", "Toyota", 
  "name", "John Smith", 
  "company", "google", 
  "email", "john@google.com",
  "name", "Huxley Ratcliffe"
)

This is challenging because there’s no variable that identifies which observations belong together. We can fix this by noting that every contact starts with a name, so we can create a unique id by counting every time we see “name” as the field:

contacts <- contacts %>% 
  mutate(
    person_id = cumsum(field == "name")
  )
contacts
#> # A tibble: 6 x 3
#>   field   value            person_id
#>   <chr>   <chr>                <int>
#> 1 name    Jiena McLellan           1
#> 2 company Toyota                   1
#> 3 name    John Smith               2
#> 4 company google                   2
#> 5 email   john@google.com          2
#> 6 name    Huxley Ratcliffe         3

Now that we have a unique identifier for each person, we can pivot field and value into the columns:

contacts %>% 
  pivot_wider(names_from = field, values_from = value)
#> # A tibble: 3 x 4
#>   person_id name             company email          
#>       <int> <chr>            <chr>   <chr>          
#> 1         1 Jiena McLellan   Toyota  <NA>           
#> 2         2 John Smith       google  john@google.com
#> 3         3 Huxley Ratcliffe <NA>    <NA>

Longer, then wider

Some problems can’t be solved by pivotting in a single direction. The examples in this section show how you might combine pivot_longer() and pivot_wider() to solve more complex problems.

World bank

world_bank_pop contains data from the World Bank about population per country from 2000 to 2018.

world_bank_pop
#> # A tibble: 1,056 x 20
#>    country indicator `2000` `2001` `2002` `2003`  `2004`  `2005`   `2006`
#>    <chr>   <chr>      <dbl>  <dbl>  <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
#>  1 ABW     SP.URB.T… 4.24e4 4.30e4 4.37e4 4.42e4 4.47e+4 4.49e+4  4.49e+4
#>  2 ABW     SP.URB.G… 1.18e0 1.41e0 1.43e0 1.31e0 9.51e-1 4.91e-1 -1.78e-2
#>  3 ABW     SP.POP.T… 9.09e4 9.29e4 9.50e4 9.70e4 9.87e+4 1.00e+5  1.01e+5
#>  4 ABW     SP.POP.G… 2.06e0 2.23e0 2.23e0 2.11e0 1.76e+0 1.30e+0  7.98e-1
#>  5 AFG     SP.URB.T… 4.44e6 4.65e6 4.89e6 5.16e6 5.43e+6 5.69e+6  5.93e+6
#>  6 AFG     SP.URB.G… 3.91e0 4.66e0 5.13e0 5.23e0 5.12e+0 4.77e+0  4.12e+0
#>  7 AFG     SP.POP.T… 2.01e7 2.10e7 2.20e7 2.31e7 2.41e+7 2.51e+7  2.59e+7
#>  8 AFG     SP.POP.G… 3.49e0 4.25e0 4.72e0 4.82e0 4.47e+0 3.87e+0  3.23e+0
#>  9 AGO     SP.URB.T… 8.23e6 8.71e6 9.22e6 9.77e6 1.03e+7 1.09e+7  1.15e+7
#> 10 AGO     SP.URB.G… 5.44e0 5.59e0 5.70e0 5.76e0 5.75e+0 5.69e+0  4.92e+0
#> # … with 1,046 more rows, and 11 more variables: `2007` <dbl>, `2008` <dbl>,
#> #   `2009` <dbl>, `2010` <dbl>, `2011` <dbl>, `2012` <dbl>, `2013` <dbl>,
#> #   `2014` <dbl>, `2015` <dbl>, `2016` <dbl>, `2017` <dbl>

My goal is to produce a tidy dataset where each variable is in a column. It’s not obvious exactly what steps are needed yet, but I’ll start with the most obvious problem: year is spread across multiple columns.

pop2 <- world_bank_pop %>% 
  pivot_longer(`2000`:`2017`, names_to = "year", values_to = "value")
pop2
#> # A tibble: 19,008 x 4
#>    country indicator   year  value
#>    <chr>   <chr>       <chr> <dbl>
#>  1 ABW     SP.URB.TOTL 2000  42444
#>  2 ABW     SP.URB.TOTL 2001  43048
#>  3 ABW     SP.URB.TOTL 2002  43670
#>  4 ABW     SP.URB.TOTL 2003  44246
#>  5 ABW     SP.URB.TOTL 2004  44669
#>  6 ABW     SP.URB.TOTL 2005  44889
#>  7 ABW     SP.URB.TOTL 2006  44881
#>  8 ABW     SP.URB.TOTL 2007  44686
#>  9 ABW     SP.URB.TOTL 2008  44375
#> 10 ABW     SP.URB.TOTL 2009  44052
#> # … with 18,998 more rows

Next we need to consider the indicator variable:

pop2 %>% count(indicator)
#> # A tibble: 4 x 2
#>   indicator       n
#>   <chr>       <int>
#> 1 SP.POP.GROW  4752
#> 2 SP.POP.TOTL  4752
#> 3 SP.URB.GROW  4752
#> 4 SP.URB.TOTL  4752

Here SP.POP.GROW is population growth, SP.POP.TOTL is total population, and SP.URB.* are the same but only for urban areas. Let’s split this up into two variables: area (total or urban) and the actual variable (population or growth):

pop3 <- pop2 %>% 
  separate(indicator, c(NA, "area", "variable"))
pop3
#> # A tibble: 19,008 x 5
#>    country area  variable year  value
#>    <chr>   <chr> <chr>    <chr> <dbl>
#>  1 ABW     URB   TOTL     2000  42444
#>  2 ABW     URB   TOTL     2001  43048
#>  3 ABW     URB   TOTL     2002  43670
#>  4 ABW     URB   TOTL     2003  44246
#>  5 ABW     URB   TOTL     2004  44669
#>  6 ABW     URB   TOTL     2005  44889
#>  7 ABW     URB   TOTL     2006  44881
#>  8 ABW     URB   TOTL     2007  44686
#>  9 ABW     URB   TOTL     2008  44375
#> 10 ABW     URB   TOTL     2009  44052
#> # … with 18,998 more rows

Now we can complete the tidying by pivoting variable and value to make TOTL and GROW columns:

pop3 %>% 
  pivot_wider(names_from = variable, values_from = value)
#> # A tibble: 9,504 x 5
#>    country area  year   TOTL    GROW
#>    <chr>   <chr> <chr> <dbl>   <dbl>
#>  1 ABW     URB   2000  42444  1.18  
#>  2 ABW     URB   2001  43048  1.41  
#>  3 ABW     URB   2002  43670  1.43  
#>  4 ABW     URB   2003  44246  1.31  
#>  5 ABW     URB   2004  44669  0.951 
#>  6 ABW     URB   2005  44889  0.491 
#>  7 ABW     URB   2006  44881 -0.0178
#>  8 ABW     URB   2007  44686 -0.435 
#>  9 ABW     URB   2008  44375 -0.698 
#> 10 ABW     URB   2009  44052 -0.731 
#> # … with 9,494 more rows

Multi-choice

Based on a suggestion by Maxime Wack, https://github.com/tidyverse/tidyr/issues/384), the final example shows how to deal with a common way of recording multiple choice data. Often you will get such data as follows:

multi <- tribble(
  ~id, ~choice1, ~choice2, ~choice3,
  1, "A", "B", "C",
  2, "C", "B",  NA,
  3, "D",  NA,  NA,
  4, "B", "D",  NA
)

But the actual order isn’t important, and you’d prefer to have the individual questions in the columns. You can achieve the desired transformation in two steps. First, you make the data longer, eliminating the explcit NAs, and adding a column to indicate that this choice was chosen:

multi2 <- multi %>% 
  pivot_longer(-id, values_drop_na = TRUE) %>% 
  mutate(checked = TRUE)
multi2
#> # A tibble: 8 x 4
#>      id name    value checked
#>   <dbl> <chr>   <chr> <lgl>  
#> 1     1 choice1 A     TRUE   
#> 2     1 choice2 B     TRUE   
#> 3     1 choice3 C     TRUE   
#> 4     2 choice1 C     TRUE   
#> 5     2 choice2 B     TRUE   
#> 6     3 choice1 D     TRUE   
#> 7     4 choice1 B     TRUE   
#> 8     4 choice2 D     TRUE

Then you make the data wider, filling in the missing observations with FALSE:

multi2 %>% 
  pivot_wider(
    id_cols = id,
    names_from = value, 
    values_from = checked, 
    values_fill = list(checked = FALSE)
  )
#> # A tibble: 4 x 5
#>      id A     B     C     D    
#>   <dbl> <lgl> <lgl> <lgl> <lgl>
#> 1     1 TRUE  TRUE  TRUE  FALSE
#> 2     2 FALSE TRUE  TRUE  FALSE
#> 3     3 FALSE FALSE FALSE TRUE 
#> 4     4 FALSE TRUE  FALSE TRUE

Manual specs

The arguments to pivot_longer() and pivot_wider() allow you to pivot a wide range of datasets. But the creativity that people apply to their data structures is seemingly endless, so it’s quite possible that you will encounter a dataset that you can’t immediately see how to reshape with pivot_longer() and pivot_wider(). To gain more control over pivotting, you can instead create a “spec” data frame that describes exactly how data stored in the column names becomes variables (and vice versa). This section introduces you to the spec data structure, and show you how to use it when pivot_longer() and pivot_wider() are insufficient.

Longer

To see how this works, lets return to the simplest case of pivotting applied to the relig_income dataset. Now pivotting happens in two steps: we first create a spec object (using build_longer_spec()) then use that to describe the pivotting operation:

spec <- relig_income %>% build_longer_spec(
  cols = -religion, 
  names_to = "income",
  values_to = "count"
)
pivot_longer_spec(relig_income, spec)
#> # A tibble: 180 x 3
#>    religion income             count
#>    <chr>    <chr>              <dbl>
#>  1 Agnostic <$10k                 27
#>  2 Agnostic $10-20k               34
#>  3 Agnostic $20-30k               60
#>  4 Agnostic $30-40k               81
#>  5 Agnostic $40-50k               76
#>  6 Agnostic $50-75k              137
#>  7 Agnostic $75-100k             122
#>  8 Agnostic $100-150k            109
#>  9 Agnostic >150k                 84
#> 10 Agnostic Don't know/refused    96
#> # … with 170 more rows

(This gives the same result as before, just with more code. There’s no need to use it here, it is presented as a simple example for using spec.)

What does spec look like? It’s a data frame with one row for each column, and two special columns that start with .:

  • .name gives the name of the column.
  • .value gives the name of the column that the values in the cells will go into.
spec
#> # A tibble: 10 x 3
#>    .name              .value income            
#>    <chr>              <chr>  <chr>             
#>  1 <$10k              count  <$10k             
#>  2 $10-20k            count  $10-20k           
#>  3 $20-30k            count  $20-30k           
#>  4 $30-40k            count  $30-40k           
#>  5 $40-50k            count  $40-50k           
#>  6 $50-75k            count  $50-75k           
#>  7 $75-100k           count  $75-100k          
#>  8 $100-150k          count  $100-150k         
#>  9 >150k              count  >150k             
#> 10 Don't know/refused count  Don't know/refused

Wider

Below we widen us_rent_income with pivot_wider(). The result is ok, but I think it could be improved:

us_rent_income %>% 
  pivot_wider(names_from = variable, values_from = c(estimate, moe))
#> # A tibble: 52 x 6
#>    GEOID NAME                 estimate_income estimate_rent moe_income moe_rent
#>    <chr> <chr>                          <dbl>         <dbl>      <dbl>    <dbl>
#>  1 01    Alabama                        24476           747        136        3
#>  2 02    Alaska                         32940          1200        508       13
#>  3 04    Arizona                        27517           972        148        4
#>  4 05    Arkansas                       23789           709        165        5
#>  5 06    California                     29454          1358        109        3
#>  6 08    Colorado                       32401          1125        109        5
#>  7 09    Connecticut                    35326          1123        195        5
#>  8 10    Delaware                       31560          1076        247       10
#>  9 11    District of Columbia           43198          1424        681       17
#> 10 12    Florida                        25952          1077         70        3
#> # … with 42 more rows

I think it would be better to have columns income, rent, income_moe, and rent_moe, which we can achieve with a manual spec. The current spec looks like this:

spec1 <- us_rent_income %>% 
  build_wider_spec(names_from = variable, values_from = c(estimate, moe))
spec1
#> # A tibble: 4 x 3
#>   .name           .value   variable
#>   <chr>           <chr>    <chr>   
#> 1 estimate_income estimate income  
#> 2 estimate_rent   estimate rent    
#> 3 moe_income      moe      income  
#> 4 moe_rent        moe      rent

For this case, we mutate spec to carefully construct the column names:

spec2 <- spec1 %>%
  mutate(.name = paste0(variable, ifelse(.value == "moe", "_moe", "")))
spec2
#> # A tibble: 4 x 3
#>   .name      .value   variable
#>   <chr>      <chr>    <chr>   
#> 1 income     estimate income  
#> 2 rent       estimate rent    
#> 3 income_moe moe      income  
#> 4 rent_moe   moe      rent

Supplying this spec to pivot_wider() gives us the result we’re looking for:

pivot_wider_spec(us_rent_income, spec2)
#> # A tibble: 52 x 6
#>    GEOID NAME                 income  rent income_moe rent_moe
#>    <chr> <chr>                 <dbl> <dbl>      <dbl>    <dbl>
#>  1 01    Alabama               24476   747        136        3
#>  2 02    Alaska                32940  1200        508       13
#>  3 04    Arizona               27517   972        148        4
#>  4 05    Arkansas              23789   709        165        5
#>  5 06    California            29454  1358        109        3
#>  6 08    Colorado              32401  1125        109        5
#>  7 09    Connecticut           35326  1123        195        5
#>  8 10    Delaware              31560  1076        247       10
#>  9 11    District of Columbia  43198  1424        681       17
#> 10 12    Florida               25952  1077         70        3
#> # … with 42 more rows

By hand

Sometimes it’s not possible (or not convenient) to compute the spec, and instead it’s more convenient to construct the spec “by hand”. For example, take this construction data, which is lightly modified from Table 5 “completions” found at https://www.census.gov/construction/nrc/index.html:

construction
#> # A tibble: 9 x 9
#>    Year Month `1 unit` `2 to 4 units` `5 units or mor… Northeast Midwest South
#>   <dbl> <chr>    <dbl> <lgl>                     <dbl>     <dbl>   <dbl> <dbl>
#> 1  2018 Janu…      859 NA                          348       114     169   596
#> 2  2018 Febr…      882 NA                          400       138     160   655
#> 3  2018 March      862 NA                          356       150     154   595
#> 4  2018 April      797 NA                          447       144     196   613
#> 5  2018 May        875 NA                          364        90     169   673
#> 6  2018 June       867 NA                          342        76     170   610
#> 7  2018 July       829 NA                          360       108     183   594
#> 8  2018 Augu…      939 NA                          286        90     205   649
#> 9  2018 Sept…      835 NA                          304       117     175   560
#> # … with 1 more variable: West <dbl>

This sort of data is not uncommon from government agencies: the column names actually belong to different variables, and here we have summaries for number of units (1, 2-4, 5+) and regions of the country (NE, NW, midwest, S, W). We can most easily describe that with a tibble:

spec <- tribble(
  ~.name,            ~.value, ~units,  ~region,     
  "1 unit",          "n",     "1",     NA,          
  "2 to 4 units",    "n",     "2-4",   NA,          
  "5 units or more", "n",     "5+",    NA,          
  "Northeast",       "n",     NA,      "Northeast", 
  "Midwest",         "n",     NA,      "Midwest",   
  "South",           "n",     NA,      "South",     
  "West",            "n",     NA,      "West",      
)

Which yields the following longer form:

pivot_longer_spec(construction, spec)
#> # A tibble: 63 x 5
#>     Year Month    units region        n
#>    <dbl> <chr>    <chr> <chr>     <dbl>
#>  1  2018 January  1     <NA>        859
#>  2  2018 January  2-4   <NA>         NA
#>  3  2018 January  5+    <NA>        348
#>  4  2018 January  <NA>  Northeast   114
#>  5  2018 January  <NA>  Midwest     169
#>  6  2018 January  <NA>  South       596
#>  7  2018 January  <NA>  West        339
#>  8  2018 February 1     <NA>        882
#>  9  2018 February 2-4   <NA>         NA
#> 10  2018 February 5+    <NA>        400
#> # … with 53 more rows

Note that there is no overlap between the units and region variables; here the data would really be most naturally described in two independent tables.

Theory

One neat property of the spec is that you need the same spec for pivot_longer() and pivot_wider(). This makes it very clear that the two operations are symmetric:

construction %>% 
  pivot_longer_spec(spec) %>% 
  pivot_wider_spec(spec)
#> # A tibble: 9 x 9
#>    Year Month `1 unit` `2 to 4 units` `5 units or mor… Northeast Midwest South
#>   <dbl> <chr>    <dbl>          <dbl>            <dbl>     <dbl>   <dbl> <dbl>
#> 1  2018 Janu…      859             NA              348       114     169   596
#> 2  2018 Febr…      882             NA              400       138     160   655
#> 3  2018 March      862             NA              356       150     154   595
#> 4  2018 April      797             NA              447       144     196   613
#> 5  2018 May        875             NA              364        90     169   673
#> 6  2018 June       867             NA              342        76     170   610
#> 7  2018 July       829             NA              360       108     183   594
#> 8  2018 Augu…      939             NA              286        90     205   649
#> 9  2018 Sept…      835             NA              304       117     175   560
#> # … with 1 more variable: West <dbl>

The pivotting spec allows us to be more precise about exactly how pivot_longer(df, spec = spec) changes the shape of df: it will have nrow(df) * nrow(spec) rows, and ncol(df) - nrow(spec) + ncol(spec) - 2 columns.

tidyr/inst/doc/pivot.Rmd0000644000176200001440000005224013612142023014731 0ustar liggesusers--- title: "Pivoting" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Pivoting} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) options(tibble.print_max = 10) ``` # Introduction This vignette describes the use of the new `pivot_longer()` and `pivot_wider()` functions. Their goal is to improve the usability of `gather()` and `spread()`, and incorporate state-of-the-art features found in other packages. For some time, it's been obvious that there is something fundamentally wrong with the design of `spread()` and `gather()`. Many people don't find the names intuitive and find it hard to remember which direction corresponds to spreading and which to gathering. It also seems surprisingly hard to remember the arguments to these functions, meaning that many people (including me!) have to consult the documentation every time. There are two important new features inspired by other R packages that have been advancing reshaping in R: * `pivot_longer()` can work with multiple value variables that may have different types, inspired by the enhanced `melt()` and `dcast()` functions provided by the [data.table][data.table] package by Matt Dowle and Arun Srinivasan. * `pivot_longer()` and `pivot_wider()` can take a data frame that specifies precisely how metadata stored in column names becomes data variables (and vice versa), inspired by the [cdata][cdata] package by John Mount and Nina Zumel. In this vignette, you'll learn the key ideas behind `pivot_longer()` and `pivot_wider()` as you see them used to solve a variety of data reshaping challenges ranging from simple to complex. To begin we'll load some needed packages. In real analysis code, I'd imagine you'd do with the `library(tidyverse)`, but I can't do that here since this vignette is embedded in a package. ```{r setup, message = FALSE} library(tidyr) library(dplyr) library(readr) ``` # Longer `pivot_longer()` makes datasets __longer__ by increasing the number of rows and decreasing the number of columns. I don't believe it makes sense to describe a dataset as being in "long form". Length is a relative term, and you can only say (e.g.) that dataset A is longer than dataset B. `pivot_longer()` is commonly needed to tidy wild-caught datasets as they often optimise for ease of data entry or ease of comparison rather than ease of analysis. The following sections show how to use `pivot_longer()` for a wide range of realistic datasets. ## String data in column names {#pew} The `relig_income` dataset stores counts based on a survey which (among other things) asked people about their religion and annual income: ```{r} relig_income ``` This dataset contains three variables: * `religion`, stored in the rows, * `income` spread across the column names, and * `count` stored in the cell values. To tidy it we use `pivot_longer()`: ```{r} relig_income %>% pivot_longer(-religion, names_to = "income", values_to = "count") ``` * The first argument is the dataset to reshape, `relig_income`. * The second argument describes which columns need to be reshaped. In this case, it's every column apart from `religion`. * The `names_to` gives the name of the variable that will be created from the data stored in the column names, i.e. `income`. * The `values_to` gives the name of the variable that will be created from the data stored in the cell value, i.e. `count`. Neither the `names_to` nor the `values_to` column exists in `relig_income`, so we provide them as character strings surrounded in quotes. ## Numeric data in column names {#billboard} The `billboard` dataset records the billboard rank of songs in the year 2000. It has a form similar to the `relig_income` data, but the data encoded in the column names is really a number, not a string. ```{r} billboard ``` We can start with the same basic specification as for the `relig_income` dataset. Here we want the names to become a variable called `week`, and the values to become a variable called `rank`. I also use `values_drop_na` to drop rows that correspond to missing values. Not every song stays in the charts for all 76 weeks, so the structure of the input data force the creation of unnessary explicit `NA`s. ```{r} billboard %>% pivot_longer( cols = starts_with("wk"), names_to = "week", values_to = "rank", values_drop_na = TRUE ) ``` It would be nice to easily determine how long each song stayed in the charts, but to do that, we'll need to convert the `week` variable to an integer. We can do that by using two additional arguments: `names_prefix` strips off the `wk` prefix, and `names_ptypes` specifies that `week` should be an integer: ```{r} billboard %>% pivot_longer( cols = starts_with("wk"), names_to = "week", names_prefix = "wk", names_ptypes = list(week = integer()), values_to = "rank", values_drop_na = TRUE, ) ``` ## Many variables in column names A more challenging situation occurs when you have multiple variables crammed into the column names. For example, take the `who` dataset: ```{r} who ``` `country`, `iso2`, `iso3`, and `year` are already variables, so they can be left as is. But the columns from `new_sp_m014` to `newrel_f65` encode four variables in their names: * The `new_`/`new` prefix indicates these are counts of new cases. This dataset only contains new cases, so we'll ignore it here because it's constant. * `sp`/`rel`/`sp`/`ep` describe how the case was diagnosed. * `m`/`f` gives the gender. * `014`/`1524`/`2535`/`3544`/`4554`/`65` supplies the age range. We can break these variables up by specifying multiple column names in `names_to`, and then either providing `names_sep` or `names_pattern`. Here `names_pattern` is the most natural fit. It has a similar interface to `extract`: you give it a regular expression containing groups (defined by `()`) and it puts each group in a column. ```{r} who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", values_to = "count" ) ``` We could go one step further and specify the types of the `gender` and `age` columns. I think this is good practice when you have categorical variables with a known set of values. ```{r} who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", names_ptypes = list( gender = factor(levels = c("f", "m")), age = factor( levels = c("014", "1524", "2534", "3544", "4554", "5564", "65"), ordered = TRUE ) ), values_to = "count", ) ``` ## Multiple observations per row So far, we have been working with data frames that have one observation per row, but many important pivotting problems involve multiple observations per row. You can usually recognise this case because name of the column that you want to appear in the output is part of the column name in the input. In this section, you'll learn how to pivot this sort of data. The following example is adapted from the [data.table vignette](https://CRAN.R-project.org/package=data.table/vignettes/datatable-reshape.html), as inspiration for tidyr's solution to this problem. ```{r} family <- tribble( ~family, ~dob_child1, ~dob_child2, ~gender_child1, ~gender_child2, 1L, "1998-11-26", "2000-01-29", 1L, 2L, 2L, "1996-06-22", NA, 2L, NA, 3L, "2002-07-11", "2004-04-05", 2L, 2L, 4L, "2004-10-10", "2009-08-27", 1L, 1L, 5L, "2000-12-05", "2005-02-28", 2L, 1L, ) family <- family %>% mutate_at(vars(starts_with("dob")), parse_date) family ``` Note that we have two pieces of information (or values) for each child: their `gender` and their `dob` (date of birth). These need to go into separate columns in the result. Again we supply multiple variables to `names_to`, using `names_sep` to split up each variable name. Note the special name `.value`: this tells `pivot_longer()` that that part of the column name specifies the "value" being measured (which will become a variable in the output). ```{r} family %>% pivot_longer( -family, names_to = c(".value", "child"), names_sep = "_", values_drop_na = TRUE ) ``` Note the use of `values_drop_na = TRUE`: the input shape forces the creation of explicit missing variables for observations that don't exist. This problem also exists in the `anscombe` dataset built in to base R: ```{r} anscombe ``` This dataset contains four pairs of variables (`x1` and `y1`, `x2` and `y2`, etc) that underlie Anscombe's quartet, a collection of four datasets that have the same summary statistics (mean, sd, correlation etc), but have quite different data. We want to produce a dataset with columns `set`, `x` and `y`. ```{r} anscombe %>% pivot_longer(everything(), names_to = c(".value", "set"), names_pattern = "(.)(.)" ) %>% arrange(set) ``` A similar situation can arise with panel data. For example, take this example dataset provided by [Thomas Leeper](http://github.com/leeper/rio/issues/193). We can tidy it using the same approach as for `anscombe`: ```{r} pnl <- tibble( x = 1:4, a = c(1, 1,0, 0), b = c(0, 1, 1, 1), y1 = rnorm(4), y2 = rnorm(4), z1 = rep(3, 4), z2 = rep(-2, 4), ) pnl %>% pivot_longer( -c(x, a, b), names_to = c(".value", "time"), names_pattern = "(.)(.)" ) ``` ## Duplicated column names Occassionally you will come across datasets that have duplicated column names. Generally, such datasets are hard to work with in R, because when you refer to a column by name it only finds the first match. To create a tibble with duplicated names, you have to explicitly opt out of the name repair that usually prevents you from creating such a dataset: ```{r} df <- tibble(x = 1:3, y = 4:6, y = 5:7, y = 7:9, .name_repair = "minimal") df ``` When `pivot_longer()` encounters such data, it automatically adds another column to the output: ```{r} df %>% pivot_longer(-x, names_to = "name", values_to = "value") ``` # Wider `pivot_wider()` is the opposite of `pivot_longer()`: it makes a dataset __wider__ by increasing the number of columns and decreasing the number of rows. It's relatively rare to need `pivot_wider()` to make tidy data, but it's often useful for creating summary tables for presentation, or data in a format needed by other tools. ## Capture-recapture data The `fish_encounters` dataset, contributed by [Myfanwy Johnston](https://fishsciences.github.io/post/visualizing-fish-encounter-histories/), describes when fish swimming down a river are detected by automatic monitoring stations: ```{r} fish_encounters ``` Many tools used to analyse this data need it in a form where each station is a column: ```{r} fish_encounters %>% pivot_wider(names_from = station, values_from = seen) ``` This dataset only records when a fish was detected by the station - it doesn't record when it wasn't detected (this is common with this type of data). That means the output data is filled with `NA`s. However, in this case we know that the absence of a record means that the fish was not `seen`, so we can ask `pivot_wider()` to fill these missing values in with zeros: ```{r} fish_encounters %>% pivot_wider( names_from = station, values_from = seen, values_fill = list(seen = 0) ) ``` ## Aggregation You can also use `pivot_wider()` to perform simple aggregation. For example, take the `warpbreaks` dataset built in to base R (converted to a tibble for the better print method): ```{r} warpbreaks <- warpbreaks %>% as_tibble() %>% select(wool, tension, breaks) warpbreaks ``` This is a designed experiment with nine replicates for every combination of `wool` (`A` and `B`) and `tension` (`L`, `M`, `H`): ```{r} warpbreaks %>% count(wool, tension) ``` What happens if we attempt to pivot the levels of `wool` into the columns? ```{r} warpbreaks %>% pivot_wider(names_from = wool, values_from = breaks) ``` We get a warning that each cell in the output corresponds to multiple cells in the input. The default behaviour produces list-columns, which contain all the individual values. A more useful output would be summary statistics, e.g. `mean` breaks for each combination of wool and tension: ```{r} warpbreaks %>% pivot_wider( names_from = wool, values_from = breaks, values_fn = list(breaks = mean) ) ``` For more complex summary operations, I recommend summarising before reshaping, but for simple cases it's often convenient to summarise within `pivot_wider()`. ## Generate column name from multiple variables Imagine, as in , that we have information containing the combination of product, country, and year. In tidy form it might look like this: ```{r} production <- expand_grid( product = c("A", "B"), country = c("AI", "EI"), year = 2000:2014 ) %>% filter((product == "A" & country == "AI") | product == "B") %>% mutate(production = rnorm(nrow(.))) production ``` We want to widen the data so we have one column for each combination of `product` and `country`. The key is to specify multiple variables for `names_from`: ```{r} production %>% pivot_wider( names_from = c(product, country), values_from = production ) ``` ## Tidy census The `us_rent_income` dataset contains information about median income and rent for each state in the US for 2017 (from the American Community Survey, retrieved with the [tidycensus][tidycensus] package). ```{r} us_rent_income ``` Here both `estimate` and `moe` are values columns, so we can supply them to `values_from`: ```{r} us_rent_income %>% pivot_wider(names_from = variable, values_from = c(estimate, moe)) ``` Note that the name of the variable is automatically appended to the output columns. ## Contact list A final challenge is inspired by [Jiena Gu](https://github.com/jienagu/tidyverse_examples/blob/master/example_long_wide.R). Imagine you have a contact list that you've copied and pasted from a website: ```{r} contacts <- tribble( ~field, ~value, "name", "Jiena McLellan", "company", "Toyota", "name", "John Smith", "company", "google", "email", "john@google.com", "name", "Huxley Ratcliffe" ) ``` This is challenging because there's no variable that identifies which observations belong together. We can fix this by noting that every contact starts with a name, so we can create a unique id by counting every time we see "name" as the `field`: ```{r} contacts <- contacts %>% mutate( person_id = cumsum(field == "name") ) contacts ``` Now that we have a unique identifier for each person, we can pivot `field` and `value` into the columns: ```{r} contacts %>% pivot_wider(names_from = field, values_from = value) ``` # Longer, then wider Some problems can't be solved by pivotting in a single direction. The examples in this section show how you might combine `pivot_longer()` and `pivot_wider()` to solve more complex problems. ## World bank `world_bank_pop` contains data from the World Bank about population per country from 2000 to 2018. ```{r} world_bank_pop ``` My goal is to produce a tidy dataset where each variable is in a column. It's not obvious exactly what steps are needed yet, but I'll start with the most obvious problem: year is spread across multiple columns. ```{r} pop2 <- world_bank_pop %>% pivot_longer(`2000`:`2017`, names_to = "year", values_to = "value") pop2 ``` Next we need to consider the `indicator` variable: ```{r} pop2 %>% count(indicator) ``` Here `SP.POP.GROW` is population growth, `SP.POP.TOTL` is total population, and `SP.URB.*` are the same but only for urban areas. Let's split this up into two variables: `area` (total or urban) and the actual variable (population or growth): ```{r} pop3 <- pop2 %>% separate(indicator, c(NA, "area", "variable")) pop3 ``` Now we can complete the tidying by pivoting `variable` and `value` to make `TOTL` and `GROW` columns: ```{r} pop3 %>% pivot_wider(names_from = variable, values_from = value) ``` ## Multi-choice Based on a suggestion by [Maxime Wack](https://github.com/MaximeWack), ), the final example shows how to deal with a common way of recording multiple choice data. Often you will get such data as follows: ```{r} multi <- tribble( ~id, ~choice1, ~choice2, ~choice3, 1, "A", "B", "C", 2, "C", "B", NA, 3, "D", NA, NA, 4, "B", "D", NA ) ``` But the actual order isn't important, and you'd prefer to have the individual questions in the columns. You can achieve the desired transformation in two steps. First, you make the data longer, eliminating the explcit `NA`s, and adding a column to indicate that this choice was chosen: ```{r} multi2 <- multi %>% pivot_longer(-id, values_drop_na = TRUE) %>% mutate(checked = TRUE) multi2 ``` Then you make the data wider, filling in the missing observations with `FALSE`: ```{r} multi2 %>% pivot_wider( id_cols = id, names_from = value, values_from = checked, values_fill = list(checked = FALSE) ) ``` # Manual specs The arguments to `pivot_longer()` and `pivot_wider()` allow you to pivot a wide range of datasets. But the creativity that people apply to their data structures is seemingly endless, so it's quite possible that you will encounter a dataset that you can't immediately see how to reshape with `pivot_longer()` and `pivot_wider()`. To gain more control over pivotting, you can instead create a "spec" data frame that describes exactly how data stored in the column names becomes variables (and vice versa). This section introduces you to the spec data structure, and show you how to use it when `pivot_longer()` and `pivot_wider()` are insufficient. ## Longer To see how this works, lets return to the simplest case of pivotting applied to the `relig_income` dataset. Now pivotting happens in two steps: we first create a spec object (using `build_longer_spec()`) then use that to describe the pivotting operation: ```{r} spec <- relig_income %>% build_longer_spec( cols = -religion, names_to = "income", values_to = "count" ) pivot_longer_spec(relig_income, spec) ``` (This gives the same result as before, just with more code. There's no need to use it here, it is presented as a simple example for using `spec`.) What does `spec` look like? It's a data frame with one row for each column, and two special columns that start with `.`: * `.name` gives the name of the column. * `.value` gives the name of the column that the values in the cells will go into. ```{r} spec ``` ## Wider Below we widen `us_rent_income` with `pivot_wider()`. The result is ok, but I think it could be improved: ```{r} us_rent_income %>% pivot_wider(names_from = variable, values_from = c(estimate, moe)) ``` I think it would be better to have columns `income`, `rent`, `income_moe`, and `rent_moe`, which we can achieve with a manual spec. The current spec looks like this: ```{r} spec1 <- us_rent_income %>% build_wider_spec(names_from = variable, values_from = c(estimate, moe)) spec1 ``` For this case, we mutate `spec` to carefully construct the column names: ```{r} spec2 <- spec1 %>% mutate(.name = paste0(variable, ifelse(.value == "moe", "_moe", ""))) spec2 ``` Supplying this spec to `pivot_wider()` gives us the result we're looking for: ```{r} pivot_wider_spec(us_rent_income, spec2) ``` ## By hand Sometimes it's not possible (or not convenient) to compute the spec, and instead it's more convenient to construct the spec "by hand". For example, take this `construction` data, which is lightly modified from Table 5 "completions" found at : ```{r} construction ``` This sort of data is not uncommon from government agencies: the column names actually belong to different variables, and here we have summaries for number of units (1, 2-4, 5+) and regions of the country (NE, NW, midwest, S, W). We can most easily describe that with a tibble: ```{r} spec <- tribble( ~.name, ~.value, ~units, ~region, "1 unit", "n", "1", NA, "2 to 4 units", "n", "2-4", NA, "5 units or more", "n", "5+", NA, "Northeast", "n", NA, "Northeast", "Midwest", "n", NA, "Midwest", "South", "n", NA, "South", "West", "n", NA, "West", ) ``` Which yields the following longer form: ```{r} pivot_longer_spec(construction, spec) ``` Note that there is no overlap between the `units` and `region` variables; here the data would really be most naturally described in two independent tables. ## Theory One neat property of the `spec` is that you need the same spec for `pivot_longer()` and `pivot_wider()`. This makes it very clear that the two operations are symmetric: ```{r} construction %>% pivot_longer_spec(spec) %>% pivot_wider_spec(spec) ``` The pivotting spec allows us to be more precise about exactly how `pivot_longer(df, spec = spec)` changes the shape of `df`: it will have `nrow(df) * nrow(spec)` rows, and `ncol(df) - nrow(spec) + ncol(spec) - 2` columns. [cdata]: https://winvector.github.io/cdata/ [data.table]: https://github.com/Rdatatable/data.table/wiki [tidycensus]: https://walkerke.github.io/tidycensus tidyr/inst/doc/in-packages.html0000644000176200001440000014000213612357514016203 0ustar liggesusers In packages

In packages

Introduction

This vignette serves two distinct, but related, purposes:

  • It documents general best practices for using tidyr in a package, inspired by using ggplot2 in packages.

  • It describes migration patterns for the transition from tidyr v0.8.3 to v1.0.0. This release includes breaking changes to nest() and unnest() in order to increase consistency within tidyr and with the rest of the tidyverse.

Before we go on, we’ll attach the packages we use, expose the version of tidyr, and make a small dataset to use in examples.

library(tidyr)
library(dplyr, warn.conflicts = FALSE)
library(purrr)

packageVersion("tidyr")
#> [1] '1.0.2'

(mini_iris <- iris %>% 
    as_tibble() %>% 
    .[c(1, 2, 51, 52, 101, 102), ])
#> # A tibble: 6 x 5
#>   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   
#>          <dbl>       <dbl>        <dbl>       <dbl> <fct>     
#> 1          5.1         3.5          1.4         0.2 setosa    
#> 2          4.9         3            1.4         0.2 setosa    
#> 3          7           3.2          4.7         1.4 versicolor
#> 4          6.4         3.2          4.5         1.5 versicolor
#> 5          6.3         3.3          6           2.5 virginica 
#> 6          5.8         2.7          5.1         1.9 virginica

Using tidyr in packages

Compared to dplyr and ggplot2, most tidyr functions have select semantics (like dplyr::select()), not the more common action semantics (like mutate(), filter(), arrange(), group_by(), …). This means that you typically provide tidyr functions with an expression that works with column names (like starts_with("x") or a:c) not with column values (like y = x * 2). As a consequence, it’s worthwhile to clarify the best patterns for calling tidyr functions inside another package.

There are three main cases that you’ll encounter:

  • The column names are fixed: use one_of("col1", "col2", "col3").

  • The column names are in a character vector: use one_of(cols).

  • The column names are specified by the user, using select syntax: use {{ cols }}.

Fixed column names

If you know the column names, this code works in the same way, in and out of a package:

mini_iris %>% nest(
  petal = c(Petal.Length, Petal.Width), 
  sepal = c(Sepal.Length, Sepal.Width)
)
#> # A tibble: 3 x 3
#>   Species    petal            sepal           
#>   <fct>      <list>           <list>          
#> 1 setosa     <tibble [2 × 2]> <tibble [2 × 2]>
#> 2 versicolor <tibble [2 × 2]> <tibble [2 × 2]>
#> 3 virginica  <tibble [2 × 2]> <tibble [2 × 2]>

But R CMD check will warn about undefined global variables (Petal.Length, Petal.Width, Sepal.Length, and Sepal.Width), because it doesn’t know that nest() is looking for the variables inside of mini_iris.

The easiest way to silence this note is to use one_of(). one_of() is a tidyselect helper (like starts_with(), ends_with(), etc.) that takes column names stored as strings:

mini_iris %>% nest(
  petal = one_of("Petal.Length", "Petal.Width"), 
  sepal = one_of("Sepal.Length", "Sepal.Width")
)
#> # A tibble: 3 x 3
#>   Species    petal            sepal           
#>   <fct>      <list>           <list>          
#> 1 setosa     <tibble [2 × 2]> <tibble [2 × 2]>
#> 2 versicolor <tibble [2 × 2]> <tibble [2 × 2]>
#> 3 virginica  <tibble [2 × 2]> <tibble [2 × 2]>

The tidyselect package offers an entire family of select helpers. You are probably already familiar with them from using dplyr::select().

Column names in a character vector

If the column names are in a character vector (possibly from a function call), you can provide that to one_of(), as above:

nest_egg <- function(data, cols) {
  nest(data, egg = one_of(cols))
}

nest_egg(mini_iris, c("Petal.Length", "Petal.Width", "Sepal.Length", "Sepal.Width"))
#> # A tibble: 3 x 2
#>   Species    egg             
#>   <fct>      <list>          
#> 1 setosa     <tibble [2 × 4]>
#> 2 versicolor <tibble [2 × 4]>
#> 3 virginica  <tibble [2 × 4]>

The use of one_of() here is important; if you don’t use it, and data contains a column named cols, nest() will nest it instead of the columns named in cols.

tidyselect interface

To provide an interface that works like the tidyr function that you’re wrapping, you should pass the argument along using {{ arg }}. {{ }} is a special tidy eval operator that captures the expression supplied by the user and forwards it to another tidy eval-enabled function.

nest_egg <- function(df, cols) {
  nest(df, egg = {{ cols }})
}

nest_egg(mini_iris, -Species)
#> # A tibble: 3 x 2
#>   Species    egg             
#>   <fct>      <list>          
#> 1 setosa     <tibble [2 × 4]>
#> 2 versicolor <tibble [2 × 4]>
#> 3 virginica  <tibble [2 × 4]>

For more complicated functions, you might want to use tidyselect directly:

sel_vars <- function(df, cols) {
  tidyselect::vars_select(names(df), {{ cols }})
}

sel_vars(mini_iris, -Species)
#>   Sepal.Length    Sepal.Width   Petal.Length    Petal.Width 
#> "Sepal.Length"  "Sepal.Width" "Petal.Length"  "Petal.Width"

(Many tidyr functions use ... so you can easily select many variables, e.g. fill(df, x, y, z). I now believe that the disadvantages of this approach outweigh the benefits, and that this interface would have been better as fill(df, c(x, y, z)). For new functions that select columns, please just use a single argument and not ....)

If you decide to support tidyselect syntax, I recommend re-exporting the select helpers so that users can use (e.g.) starts_with() without any extra work. There’s no helper to do this yet, but you can copy-and-paste the code that tidyr uses.

Travis-CI

Hopefully you’ve already adopted continuous integration for your package, in which R CMD check (which includes your own tests) is run on a regular basis, e.g. every time you push changes to your package’s source on GitHub or similar. The tidyverse team currently relies most heavily on Travis-CI for this, so that will be our example. usethis::use_travis() can help you get started.

We recommend adding a build to your matrix that targets the devel version of tidyr:

  • Always? If your package is tightly coupled to tidyr, consider leaving this build in place all the time, so you know if changes in tidyr affect your package. Modifiers like allow_failures and fast_finish may be useful. Read more about the Travis build matrix.

  • Right before a tidyr release? For everyone else, you could just add a tidyr-devel build during the period preceding a major tidyr release that has the potential for breaking changes, especially if you’ve been contacted during our reverse dependency checks.

Example of .travis.yml config that tests against R devel, release, and oldrel, assesses test coverage, and includes a build against devel tidyr:

# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r

language: R
cache: packages

matrix:
  include:
  - r: devel
  - r: release
    after_success:
    - Rscript -e 'covr::codecov()'
  - r: release
    name: tidyr-devel
    before_script: Rscript -e "remotes::install_github('tidyverse/tidyr')"
  - r: oldrel

tidyr v0.8.3 -> v1.0.0

v1.0.0 (aka v0.8.99.9000) makes considerable changes to the interface of nest() and unnest() in order to bring them in line with newer tidyverse conventions. I have tried to make the functions as backward compatible as possible and to give informative warning messages, but I could not cover 100% of use cases, so you may need to change your package code. This guide will help you do so with a minimum of pain.

Ideally, you’ll tweak your package so that it works with both tidyr 0.8.3 and tidyr 1.0.0. This makes life considerably easier because it means there’s no need to coordinate CRAN submissions - you can submit your package that works with both tidyr versions, before I submit tidyr to CRAN. This section describes our recommend practices for doing so, drawing from the general principles described in https://principles.tidyverse.org/changes-multivers.html.

If you use Travis-CI already, we strongly recommend adding a build that tests with the development version of tidyr; see above for details.

This section briefly describes how to run different code for different versions of tidyr, then goes through the major changes that might require workarounds:

  • nest() and unnest() get new interfaces.
  • nest() preserves groups.
  • nest_() and unnest_() are defunct.

If you’re struggling with a problem that’s not described here, please reach out via github or email so we can help out.

Conditional code

Sometimes you’ll be able to write code that works with v0.8.3 and v1.0.0. But this often requires code that’s not particularly natural for either version and you’d be better off to (temporarily) have separate code paths, each containing non-contrived code. You get to re-use your existing code in the “old” branch, which will eventually be phased out, and write clean, forward-looking code in the “new” branch.

The basic approach looks like this. First you define a function that returns TRUE for new versions of tidyr:

tidyr_new_interface <- function() {
  packageVersion("tidyr") > "0.8.99"
}

We highly recommend keeping this as a function because it provides an obvious place to jot any transition notes for your package, and it makes it easier to remove transitional code later on. Another benefit is that the tidyr version is determined at run time, not at build time, and will therefore detect your user’s current tidyr version.

Then in your functions, you use an if statement to call different code for different versions:

my_function_inside_a_package <- function(...)
  # my code here

  if (tidyr_new_interface()) {
    # Freshly written code for v1.0.0
    out <- tidyr::nest(df, data = one_of("x", "y", "z"))
  } else {
    # Existing code for v0.8.3
    out <- tidyr::nest(df, x, y, z)
  }

  # more code here
}

If your new code uses a function that only exists in tidyr 1.0.0, you will get a NOTE from R CMD check: this is one of the few notes that you can explain in your CRAN submission comments. Just mention that it’s for forward compatibility with tidyr 1.0.0, and CRAN will let your package through.

New syntax for nest()

What changed:

  • The to-be-nested columns are no longer accepted as “loose parts”.
  • The new list-column’s name is no longer provided via the .key argument.
  • Now we use a construct like this: new_col = <something about existing cols>.

Why it changed:

  • The use of ... for metadata is a problematic pattern we’re moving away from. https://principles.tidyverse.org/dots-data.html

  • The new_col = <something about existing cols> construct lets us create multiple nested list-columns at once (“multi-nest”).

    mini_iris %>% 
      nest(petal = matches("Petal"), sepal = matches("Sepal")) 
    #> # A tibble: 3 x 3
    #>   Species    petal            sepal           
    #>   <fct>      <list>           <list>          
    #> 1 setosa     <tibble [2 × 2]> <tibble [2 × 2]>
    #> 2 versicolor <tibble [2 × 2]> <tibble [2 × 2]>
    #> 3 virginica  <tibble [2 × 2]> <tibble [2 × 2]>

Before and after examples:

# v0.8.3
mini_iris %>% 
  nest(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, .key = "my_data")

# v1.0.0
mini_iris %>% 
  nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width))

# v1.0.0 avoiding R CMD check NOTE
mini_iris %>% 
  nest(my_data = one_of(c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")))

# or equivalently:
mini_iris %>% 
  nest(my_data = -one_of("Species"))

If you need a quick and dirty fix without having to think, just call nest_legacy() instead of nest(). It’s the same as nest() in v0.8.3:

if (tidyr_new_interface()) {
  out <- tidyr::nest_legacy(df, x, y, z)
} else {
  out <- tidyr::nest(df, x, y, z)
}

New syntax for unnest()

What changed:

  • The to-be-unnested columns must now be specified explicitly, instead of defaulting to all list-columns. This also deprecates .drop and .preserve.

  • .sep has been deprecated and replaced with names_sep.

  • unnest() uses the emerging tidyverse standard to disambiguate duplicated names. Use names_repair = tidyr_legacy to request the previous approach.

  • .id has been deprecated because it can be easily replaced by creating the column of names prior to unnest(), e.g. with an upstream call to mutate().

    # v0.8.3
    df %>% unnest(x, .id = "id")
    
    # v1.0.0
    df %>% mutate(id = names(x)) %>% unnest(x))

Why it changed:

  • The use of ... for metadata is a problematic pattern we’re moving away from. https://principles.tidyverse.org/dots-data.html

  • The changes to details arguments relate to features rolling out across multiple packages in the tidyverse. For example, ptype exposes protoype support from the new vctrs package. names_repair specifies what to do about duplicated or non-syntactic names, consistent with tibble and readxl.

Before and after:

nested <- mini_iris %>% 
  nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width))

# v0.8.3 automatically unnests list-cols
nested %>% unnest()

# v1.0.0 must be told which columns to unnest
nested %>% unnest(one_of("my_data"))

If you need a quick and dirty fix without having to think, just call unnest_legacy() instead of unnest(). It’s the same as unnest() in v0.8.3:

if (tidyr_new_interface()) {
  out <- tidyr::unnest_legacy(df)
} else {
  out <- tidyr::unnest(df)
}

nest() preserves groups

What changed:

  • nest() now preserves the groups present in the input.

Why it changed:

  • To reflect the growing support for grouped data frames, especially in recent releases of dplyr. See, for example, dplyr::group_modify(), group_map(), and friends.

If the fact that nest() now preserves groups is problematic downstream, you have a few choices:

  • Apply ungroup() to the result. This level of pragmatism suggests, however, you should at least consider the next two options.

  • You should never have grouped in the first place. Eliminate the group_by() call and specify which columns should be nested versus not nested directly in nest().

  • Adjust the downstream code to accommodate grouping.

Imagine we used group_by() then nest() on mini_iris, then we computed on the list-column outside the data frame.

(df <- mini_iris %>% 
   group_by(Species) %>% 
   nest())
#> # A tibble: 3 x 2
#> # Groups:   Species [3]
#>   Species    data            
#>   <fct>      <list>          
#> 1 setosa     <tibble [2 × 4]>
#> 2 versicolor <tibble [2 × 4]>
#> 3 virginica  <tibble [2 × 4]>
(external_variable <- map_int(df$data, nrow))
#> [1] 2 2 2

And now we try to add that back to the data post hoc:

df %>% 
  mutate(n_rows = external_variable)
#> Error: Column `n_rows` must be length 1 (the group size), not 3

This fails because df is grouped and mutate() is group-aware, so it’s hard to add a completely external variable. Other than pragmatically ungroup()ing, what can we do? One option is to work inside the data frame, i.e. bring the map() inside the mutate(), and design the problem away:

df %>% 
  mutate(n_rows = map_int(data, nrow))
#> # A tibble: 3 x 3
#> # Groups:   Species [3]
#>   Species    data             n_rows
#>   <fct>      <list>            <int>
#> 1 setosa     <tibble [2 × 4]>      2
#> 2 versicolor <tibble [2 × 4]>      2
#> 3 virginica  <tibble [2 × 4]>      2

If, somehow, the grouping seems appropriate AND working inside the data frame is not an option, tibble::add_column() is group-unaware. It lets you add external data to a grouped data frame.

df %>% 
  tibble::add_column(n_rows = external_variable)
#> # A tibble: 3 x 3
#> # Groups:   Species [3]
#>   Species    data             n_rows
#>   <fct>      <list>            <int>
#> 1 setosa     <tibble [2 × 4]>      2
#> 2 versicolor <tibble [2 × 4]>      2
#> 3 virginica  <tibble [2 × 4]>      2

nest_() and unnest_() are defunct

What changed:

  • nest_() and unnest_() no longer work

Why it changed:

  • We are transitioning the whole tidyverse to the powerful tidy eval framework. Therefore, we are gradually removing all previous solutions:
    • Specialized standard evaluation versions of functions, e.g., foo_() as a complement to foo().
    • The older lazyeval framework.

Before and after:

# v0.8.3
mini_iris %>% 
  nest_(
    key_col = "my_data",
    nest_cols = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
  )

nested %>% unnest_(~ my_data)

# v1.0.0
mini_iris %>% 
  nest(my_data = one_of("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"))

nested %>% unnest(one_of("my_data"))
tidyr/inst/doc/in-packages.R0000644000176200001440000001104213612357514015441 0ustar liggesusers## ---- include = FALSE--------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(tidyr) library(dplyr, warn.conflicts = FALSE) library(purrr) packageVersion("tidyr") (mini_iris <- iris %>% as_tibble() %>% .[c(1, 2, 51, 52, 101, 102), ]) ## ----------------------------------------------------------------------------- mini_iris %>% nest( petal = c(Petal.Length, Petal.Width), sepal = c(Sepal.Length, Sepal.Width) ) ## ----------------------------------------------------------------------------- mini_iris %>% nest( petal = one_of("Petal.Length", "Petal.Width"), sepal = one_of("Sepal.Length", "Sepal.Width") ) ## ----------------------------------------------------------------------------- nest_egg <- function(data, cols) { nest(data, egg = one_of(cols)) } nest_egg(mini_iris, c("Petal.Length", "Petal.Width", "Sepal.Length", "Sepal.Width")) ## ----------------------------------------------------------------------------- nest_egg <- function(df, cols) { nest(df, egg = {{ cols }}) } nest_egg(mini_iris, -Species) ## ----------------------------------------------------------------------------- sel_vars <- function(df, cols) { tidyselect::vars_select(names(df), {{ cols }}) } sel_vars(mini_iris, -Species) ## ----------------------------------------------------------------------------- tidyr_new_interface <- function() { packageVersion("tidyr") > "0.8.99" } ## ---- eval = FALSE------------------------------------------------------------ # my_function_inside_a_package <- function(...) # # my code here # # if (tidyr_new_interface()) { # # Freshly written code for v1.0.0 # out <- tidyr::nest(df, data = one_of("x", "y", "z")) # } else { # # Existing code for v0.8.3 # out <- tidyr::nest(df, x, y, z) # } # # # more code here # } ## ----------------------------------------------------------------------------- mini_iris %>% nest(petal = matches("Petal"), sepal = matches("Sepal")) ## ----eval = FALSE------------------------------------------------------------- # # v0.8.3 # mini_iris %>% # nest(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, .key = "my_data") # # # v1.0.0 # mini_iris %>% # nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) # # # v1.0.0 avoiding R CMD check NOTE # mini_iris %>% # nest(my_data = one_of(c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"))) # # # or equivalently: # mini_iris %>% # nest(my_data = -one_of("Species")) ## ---- eval = FALSE------------------------------------------------------------ # if (tidyr_new_interface()) { # out <- tidyr::nest_legacy(df, x, y, z) # } else { # out <- tidyr::nest(df, x, y, z) # } ## ---- eval = FALSE------------------------------------------------------------ # # v0.8.3 # df %>% unnest(x, .id = "id") # # # v1.0.0 # df %>% mutate(id = names(x)) %>% unnest(x)) ## ---- eval = FALSE------------------------------------------------------------ # nested <- mini_iris %>% # nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) # # # v0.8.3 automatically unnests list-cols # nested %>% unnest() # # # v1.0.0 must be told which columns to unnest # nested %>% unnest(one_of("my_data")) ## ---- eval = FALSE------------------------------------------------------------ # if (tidyr_new_interface()) { # out <- tidyr::unnest_legacy(df) # } else { # out <- tidyr::unnest(df) # } ## ----------------------------------------------------------------------------- (df <- mini_iris %>% group_by(Species) %>% nest()) (external_variable <- map_int(df$data, nrow)) ## ----error = TRUE------------------------------------------------------------- df %>% mutate(n_rows = external_variable) ## ----------------------------------------------------------------------------- df %>% mutate(n_rows = map_int(data, nrow)) ## ----------------------------------------------------------------------------- df %>% tibble::add_column(n_rows = external_variable) ## ----eval = FALSE------------------------------------------------------------- # # v0.8.3 # mini_iris %>% # nest_( # key_col = "my_data", # nest_cols = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width") # ) # # nested %>% unnest_(~ my_data) # # # v1.0.0 # mini_iris %>% # nest(my_data = one_of("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")) # # nested %>% unnest(one_of("my_data")) tidyr/inst/doc/tidy-data.html0000644000176200001440000022072313612357526015715 0ustar liggesusers Tidy data

Tidy data

(This is an informal and code heavy version of the full tidy data paper. Please refer to that for more details.)

Data tidying

It is often said that 80% of data analysis is spent on the cleaning and preparing data. And it’s not just a first step, but it must be repeated many times over the course of analysis as new problems come to light or new data is collected. To get a handle on the problem, this paper focuses on a small, but important, aspect of data cleaning that I call data tidying: structuring datasets to facilitate analysis.

The principles of tidy data provide a standard way to organise data values within a dataset. A standard makes initial data cleaning easier because you don’t need to start from scratch and reinvent the wheel every time. The tidy data standard has been designed to facilitate initial exploration and analysis of the data, and to simplify the development of data analysis tools that work well together. Current tools often require translation. You have to spend time munging the output from one tool so you can input it into another. Tidy datasets and tidy tools work hand in hand to make data analysis easier, allowing you to focus on the interesting domain problem, not on the uninteresting logistics of data.

Defining tidy data

Happy families are all alike; every unhappy family is unhappy in its own way — Leo Tolstoy

Like families, tidy datasets are all alike but every messy dataset is messy in its own way. Tidy datasets provide a standardized way to link the structure of a dataset (its physical layout) with its semantics (its meaning). In this section, I’ll provide some standard vocabulary for describing the structure and semantics of a dataset, and then use those definitions to define tidy data.

Data structure

Most statistical datasets are data frames made up of rows and columns. The columns are almost always labeled and the rows are sometimes labeled. The following code provides some data about an imaginary experiment in a format commonly seen in the wild. The table has two columns and three rows, and both rows and columns are labeled.

preg <- read.csv("preg.csv", stringsAsFactors = FALSE)
preg
#>           name treatmenta treatmentb
#> 1   John Smith         NA         18
#> 2     Jane Doe          4          1
#> 3 Mary Johnson          6          7

There are many ways to structure the same underlying data. The following table shows the same data as above, but the rows and columns have been transposed.

read.csv("preg2.csv", stringsAsFactors = FALSE)
#>   treatment John.Smith Jane.Doe Mary.Johnson
#> 1         a         NA        4            6
#> 2         b         18        1            7

The data is the same, but the layout is different. Our vocabulary of rows and columns is simply not rich enough to describe why the two tables represent the same data. In addition to appearance, we need a way to describe the underlying semantics, or meaning, of the values displayed in the table.

Data semantics

A dataset is a collection of values, usually either numbers (if quantitative) or strings (if qualitative). Values are organised in two ways. Every value belongs to a variable and an observation. A variable contains all values that measure the same underlying attribute (like height, temperature, duration) across units. An observation contains all values measured on the same unit (like a person, or a day, or a race) across attributes.

A tidy version of the pregnancy data looks like this: (you’ll learn how the functions work a little later)

library(tidyr)
library(dplyr)
preg2 <- preg %>% 
  gather(treatment, n, treatmenta:treatmentb) %>%
  mutate(treatment = gsub("treatment", "", treatment)) %>%
  arrange(name, treatment)
preg2
#>           name treatment  n
#> 1     Jane Doe         a  4
#> 2     Jane Doe         b  1
#> 3   John Smith         a NA
#> 4   John Smith         b 18
#> 5 Mary Johnson         a  6
#> 6 Mary Johnson         b  7

This makes the values, variables and observations more clear. The dataset contains 18 values representing three variables and six observations. The variables are:

  1. name, with three possible values (John, Mary, and Jane).

  2. treatment, with two possible values (a and b).

  3. n, with five or six values depending on how you think of the missing value (1, 4, 6, 7, 18, NA)

The experimental design tells us more about the structure of the observations. In this experiment, every combination of of name and treatment was measured, a completely crossed design. The experimental design also determines whether or not missing values can be safely dropped. In this experiment, the missing value represents an observation that should have been made, but wasn’t, so it’s important to keep it. Structural missing values, which represent measurements that can’t be made (e.g., the count of pregnant males) can be safely removed.

For a given dataset, it’s usually easy to figure out what are observations and what are variables, but it is surprisingly difficult to precisely define variables and observations in general. For example, if the columns in the pregnancy data were height and weight we would have been happy to call them variables. If the columns were height and width, it would be less clear cut, as we might think of height and width as values of a dimension variable. If the columns were home phone and work phone, we could treat these as two variables, but in a fraud detection environment we might want variables phone number and number type because the use of one phone number for multiple people might suggest fraud. A general rule of thumb is that it is easier to describe functional relationships between variables (e.g., z is a linear combination of x and y, density is the ratio of weight to volume) than between rows, and it is easier to make comparisons between groups of observations (e.g., average of group a vs. average of group b) than between groups of columns.

In a given analysis, there may be multiple levels of observation. For example, in a trial of new allergy medication we might have three observational types: demographic data collected from each person (age, sex, race), medical data collected from each person on each day (number of sneezes, redness of eyes), and meteorological data collected on each day (temperature, pollen count).

Variables may change over the course of analysis. Often the variables in the raw data are very fine grained, and may add extra modelling complexity for little explanatory gain. For example, many surveys ask variations on the same question to better get at an underlying trait. In early stages of analysis, variables correspond to questions. In later stages, you change focus to traits, computed by averaging together multiple questions. This considerably simplifies analysis because you don’t need a hierarchical model, and you can often pretend that the data is continuous, not discrete.

Tidy data

Tidy data is a standard way of mapping the meaning of a dataset to its structure. A dataset is messy or tidy depending on how rows, columns and tables are matched up with observations, variables and types. In tidy data:

  1. Each variable forms a column.

  2. Each observation forms a row.

  3. Each type of observational unit forms a table.

This is Codd’s 3rd normal form, but with the constraints framed in statistical language, and the focus put on a single dataset rather than the many connected datasets common in relational databases. Messy data is any other arrangement of the data.

Tidy data makes it easy for an analyst or a computer to extract needed variables because it provides a standard way of structuring a dataset. Compare the different versions of the pregnancy data: in the messy version you need to use different strategies to extract different variables. This slows analysis and invites errors. If you consider how many data analysis operations involve all of the values in a variable (every aggregation function), you can see how important it is to extract these values in a simple, standard way. Tidy data is particularly well suited for vectorised programming languages like R, because the layout ensures that values of different variables from the same observation are always paired.

While the order of variables and observations does not affect analysis, a good ordering makes it easier to scan the raw values. One way of organising variables is by their role in the analysis: are values fixed by the design of the data collection, or are they measured during the course of the experiment? Fixed variables describe the experimental design and are known in advance. Computer scientists often call fixed variables dimensions, and statisticians usually denote them with subscripts on random variables. Measured variables are what we actually measure in the study. Fixed variables should come first, followed by measured variables, each ordered so that related variables are contiguous. Rows can then be ordered by the first variable, breaking ties with the second and subsequent (fixed) variables. This is the convention adopted by all tabular displays in this paper.

Tidying messy datasets

Real datasets can, and often do, violate the three precepts of tidy data in almost every way imaginable. While occasionally you do get a dataset that you can start analysing immediately, this is the exception, not the rule. This section describes the five most common problems with messy datasets, along with their remedies:

  • Column headers are values, not variable names.

  • Multiple variables are stored in one column.

  • Variables are stored in both rows and columns.

  • Multiple types of observational units are stored in the same table.

  • A single observational unit is stored in multiple tables.

Surprisingly, most messy datasets, including types of messiness not explicitly described above, can be tidied with a small set of tools: gathering, separating and spreading. The following sections illustrate each problem with a real dataset that I have encountered, and show how to tidy them.

Column headers are values, not variable names

A common type of messy dataset is tabular data designed for presentation, where variables form both the rows and columns, and column headers are values, not variable names. While I would call this arrangement messy, in some cases it can be extremely useful. It provides efficient storage for completely crossed designs, and it can lead to extremely efficient computation if desired operations can be expressed as matrix operations.

The following code shows a subset of a typical dataset of this form. This dataset explores the relationship between income and religion in the US. It comes from a report produced by the Pew Research Center, an American think-tank that collects data on attitudes to topics ranging from religion to the internet, and produces many reports that contain datasets in this format.

relig_income
#> # A tibble: 18 x 11
#>    religion `<$10k` `$10-20k` `$20-30k` `$30-40k` `$40-50k` `$50-75k` `$75-100k`
#>    <chr>      <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>      <dbl>
#>  1 Agnostic      27        34        60        81        76       137        122
#>  2 Atheist       12        27        37        52        35        70         73
#>  3 Buddhist      27        21        30        34        33        58         62
#>  4 Catholic     418       617       732       670       638      1116        949
#>  5 Don’t k…      15        14        15        11        10        35         21
#>  6 Evangel…     575       869      1064       982       881      1486        949
#>  7 Hindu          1         9         7         9        11        34         47
#>  8 Histori…     228       244       236       238       197       223        131
#>  9 Jehovah…      20        27        24        24        21        30         15
#> 10 Jewish        19        19        25        25        30        95         69
#> # … with 8 more rows, and 3 more variables: `$100-150k` <dbl>, `>150k` <dbl>,
#> #   `Don't know/refused` <dbl>

This dataset has three variables, religion, income and frequency. To tidy it, we need to gather the non-variable columns into a two-column key-value pair. This action is often described as making a wide dataset long (or tall), but I’ll avoid those terms because they’re imprecise.

When gathering variables, we need to provide the name of the new key-value columns to create. The first argument, is the name of the key column, which is the name of the variable defined by the values of the column headings. In this case, it’s income. The second argument is the name of the value column, frequency. The third argument defines the columns to gather, here, every column except religion.

relig_income %>%
  gather(income, frequency, -religion)
#> # A tibble: 180 x 3
#>    religion                income frequency
#>    <chr>                   <chr>      <dbl>
#>  1 Agnostic                <$10k         27
#>  2 Atheist                 <$10k         12
#>  3 Buddhist                <$10k         27
#>  4 Catholic                <$10k        418
#>  5 Don’t know/refused      <$10k         15
#>  6 Evangelical Prot        <$10k        575
#>  7 Hindu                   <$10k          1
#>  8 Historically Black Prot <$10k        228
#>  9 Jehovah's Witness       <$10k         20
#> 10 Jewish                  <$10k         19
#> # … with 170 more rows

This form is tidy because each column represents a variable and each row represents an observation, in this case a demographic unit corresponding to a combination of religion and income.

This format is also used to record regularly spaced observations over time. For example, the Billboard dataset shown below records the date a song first entered the billboard top 100. It has variables for artist, track, date.entered, rank and week. The rank in each week after it enters the top 100 is recorded in 75 columns, wk1 to wk75. This form of storage is not tidy, but it is useful for data entry. It reduces duplication since otherwise each song in each week would need its own row, and song metadata like title and artist would need to be repeated. This will be discussed in more depth in multiple types.

billboard
#> # A tibble: 317 x 79
#>    artist track date.entered   wk1   wk2   wk3   wk4   wk5   wk6   wk7   wk8
#>    <chr>  <chr> <date>       <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 2 Pac  Baby… 2000-02-26      87    82    72    77    87    94    99    NA
#>  2 2Ge+h… The … 2000-09-02      91    87    92    NA    NA    NA    NA    NA
#>  3 3 Doo… Kryp… 2000-04-08      81    70    68    67    66    57    54    53
#>  4 3 Doo… Loser 2000-10-21      76    76    72    69    67    65    55    59
#>  5 504 B… Wobb… 2000-04-15      57    34    25    17    17    31    36    49
#>  6 98^0   Give… 2000-08-19      51    39    34    26    26    19     2     2
#>  7 A*Tee… Danc… 2000-07-08      97    97    96    95   100    NA    NA    NA
#>  8 Aaliy… I Do… 2000-01-29      84    62    51    41    38    35    35    38
#>  9 Aaliy… Try … 2000-03-18      59    53    38    28    21    18    16    14
#> 10 Adams… Open… 2000-08-26      76    76    74    69    68    67    61    58
#> # … with 307 more rows, and 68 more variables: wk9 <dbl>, wk10 <dbl>,
#> #   wk11 <dbl>, wk12 <dbl>, wk13 <dbl>, wk14 <dbl>, wk15 <dbl>, wk16 <dbl>,
#> #   wk17 <dbl>, wk18 <dbl>, wk19 <dbl>, wk20 <dbl>, wk21 <dbl>, wk22 <dbl>,
#> #   wk23 <dbl>, wk24 <dbl>, wk25 <dbl>, wk26 <dbl>, wk27 <dbl>, wk28 <dbl>,
#> #   wk29 <dbl>, wk30 <dbl>, wk31 <dbl>, wk32 <dbl>, wk33 <dbl>, wk34 <dbl>,
#> #   wk35 <dbl>, wk36 <dbl>, wk37 <dbl>, wk38 <dbl>, wk39 <dbl>, wk40 <dbl>,
#> #   wk41 <dbl>, wk42 <dbl>, wk43 <dbl>, wk44 <dbl>, wk45 <dbl>, wk46 <dbl>,
#> #   wk47 <dbl>, wk48 <dbl>, wk49 <dbl>, wk50 <dbl>, wk51 <dbl>, wk52 <dbl>,
#> #   wk53 <dbl>, wk54 <dbl>, wk55 <dbl>, wk56 <dbl>, wk57 <dbl>, wk58 <dbl>,
#> #   wk59 <dbl>, wk60 <dbl>, wk61 <dbl>, wk62 <dbl>, wk63 <dbl>, wk64 <dbl>,
#> #   wk65 <dbl>, wk66 <lgl>, wk67 <lgl>, wk68 <lgl>, wk69 <lgl>, wk70 <lgl>,
#> #   wk71 <lgl>, wk72 <lgl>, wk73 <lgl>, wk74 <lgl>, wk75 <lgl>, wk76 <lgl>

To tidy this dataset, we first gather together all the wk columns. The column names give the week and the values are the ranks:

billboard2 <- billboard %>% 
  gather(week, rank, wk1:wk76, na.rm = TRUE)
billboard2
#> # A tibble: 5,307 x 5
#>    artist         track                   date.entered week   rank
#>    <chr>          <chr>                   <date>       <chr> <dbl>
#>  1 2 Pac          Baby Don't Cry (Keep... 2000-02-26   wk1      87
#>  2 2Ge+her        The Hardest Part Of ... 2000-09-02   wk1      91
#>  3 3 Doors Down   Kryptonite              2000-04-08   wk1      81
#>  4 3 Doors Down   Loser                   2000-10-21   wk1      76
#>  5 504 Boyz       Wobble Wobble           2000-04-15   wk1      57
#>  6 98^0           Give Me Just One Nig... 2000-08-19   wk1      51
#>  7 A*Teens        Dancing Queen           2000-07-08   wk1      97
#>  8 Aaliyah        I Don't Wanna           2000-01-29   wk1      84
#>  9 Aaliyah        Try Again               2000-03-18   wk1      59
#> 10 Adams, Yolanda Open My Heart           2000-08-26   wk1      76
#> # … with 5,297 more rows

Here we use na.rm to drop any missing values from the gather columns. In this data, missing values represent weeks that the song wasn’t in the charts, so can be safely dropped.

In this case it’s also nice to do a little cleaning, converting the week variable to a number, and figuring out the date corresponding to each week on the charts:

billboard3 <- billboard2 %>%
  mutate(
    week = extract_numeric(week),
    date = as.Date(date.entered) + 7 * (week - 1)) %>%
  select(-date.entered)
#> extract_numeric() is deprecated: please use readr::parse_number() instead
billboard3
#> # A tibble: 5,307 x 5
#>    artist         track                    week  rank date      
#>    <chr>          <chr>                   <dbl> <dbl> <date>    
#>  1 2 Pac          Baby Don't Cry (Keep...     1    87 2000-02-26
#>  2 2Ge+her        The Hardest Part Of ...     1    91 2000-09-02
#>  3 3 Doors Down   Kryptonite                  1    81 2000-04-08
#>  4 3 Doors Down   Loser                       1    76 2000-10-21
#>  5 504 Boyz       Wobble Wobble               1    57 2000-04-15
#>  6 98^0           Give Me Just One Nig...     1    51 2000-08-19
#>  7 A*Teens        Dancing Queen               1    97 2000-07-08
#>  8 Aaliyah        I Don't Wanna               1    84 2000-01-29
#>  9 Aaliyah        Try Again                   1    59 2000-03-18
#> 10 Adams, Yolanda Open My Heart               1    76 2000-08-26
#> # … with 5,297 more rows

Finally, it’s always a good idea to sort the data. We could do it by artist, track and week:

billboard3 %>% arrange(artist, track, week)
#> # A tibble: 5,307 x 5
#>    artist  track                    week  rank date      
#>    <chr>   <chr>                   <dbl> <dbl> <date>    
#>  1 2 Pac   Baby Don't Cry (Keep...     1    87 2000-02-26
#>  2 2 Pac   Baby Don't Cry (Keep...     2    82 2000-03-04
#>  3 2 Pac   Baby Don't Cry (Keep...     3    72 2000-03-11
#>  4 2 Pac   Baby Don't Cry (Keep...     4    77 2000-03-18
#>  5 2 Pac   Baby Don't Cry (Keep...     5    87 2000-03-25
#>  6 2 Pac   Baby Don't Cry (Keep...     6    94 2000-04-01
#>  7 2 Pac   Baby Don't Cry (Keep...     7    99 2000-04-08
#>  8 2Ge+her The Hardest Part Of ...     1    91 2000-09-02
#>  9 2Ge+her The Hardest Part Of ...     2    87 2000-09-09
#> 10 2Ge+her The Hardest Part Of ...     3    92 2000-09-16
#> # … with 5,297 more rows

Or by date and rank:

billboard3 %>% arrange(date, rank)
#> # A tibble: 5,307 x 5
#>    artist   track   week  rank date      
#>    <chr>    <chr>  <dbl> <dbl> <date>    
#>  1 Lonestar Amazed     1    81 1999-06-05
#>  2 Lonestar Amazed     2    54 1999-06-12
#>  3 Lonestar Amazed     3    44 1999-06-19
#>  4 Lonestar Amazed     4    39 1999-06-26
#>  5 Lonestar Amazed     5    38 1999-07-03
#>  6 Lonestar Amazed     6    33 1999-07-10
#>  7 Lonestar Amazed     7    29 1999-07-17
#>  8 Amber    Sexual     1    99 1999-07-17
#>  9 Lonestar Amazed     8    29 1999-07-24
#> 10 Amber    Sexual     2    99 1999-07-24
#> # … with 5,297 more rows

Multiple variables stored in one column

After gathering columns, the key column is sometimes a combination of multiple underlying variable names. This happens in the tb (tuberculosis) dataset, shown below. This dataset comes from the World Health Organisation, and records the counts of confirmed tuberculosis cases by country, year, and demographic group. The demographic groups are broken down by sex (m, f) and age (0-14, 15-25, 25-34, 35-44, 45-54, 55-64, unknown).

tb <- as_tibble(read.csv("tb.csv", stringsAsFactors = FALSE))
tb
#> # A tibble: 5,769 x 22
#>    iso2   year   m04  m514  m014 m1524 m2534 m3544 m4554 m5564   m65    mu   f04
#>    <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#>  1 AD     1989    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
#>  2 AD     1990    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
#>  3 AD     1991    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
#>  4 AD     1992    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
#>  5 AD     1993    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
#>  6 AD     1994    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
#>  7 AD     1996    NA    NA     0     0     0     4     1     0     0    NA    NA
#>  8 AD     1997    NA    NA     0     0     1     2     2     1     6    NA    NA
#>  9 AD     1998    NA    NA     0     0     0     1     0     0     0    NA    NA
#> 10 AD     1999    NA    NA     0     0     0     1     1     0     0    NA    NA
#> # … with 5,759 more rows, and 9 more variables: f514 <int>, f014 <int>,
#> #   f1524 <int>, f2534 <int>, f3544 <int>, f4554 <int>, f5564 <int>, f65 <int>,
#> #   fu <int>

First we gather up the non-variable columns:

tb2 <- tb %>% 
  gather(demo, n, -iso2, -year, na.rm = TRUE)
tb2
#> # A tibble: 35,750 x 4
#>    iso2   year demo      n
#>    <chr> <int> <chr> <int>
#>  1 AD     2005 m04       0
#>  2 AD     2006 m04       0
#>  3 AD     2008 m04       0
#>  4 AE     2006 m04       0
#>  5 AE     2007 m04       0
#>  6 AE     2008 m04       0
#>  7 AG     2007 m04       0
#>  8 AL     2005 m04       0
#>  9 AL     2006 m04       1
#> 10 AL     2007 m04       0
#> # … with 35,740 more rows

Column headers in this format are often separated by a non-alphanumeric character (e.g. ., -, _, :), or have a fixed width format, like in this dataset. separate() makes it easy to split a compound variables into individual variables. You can either pass it a regular expression to split on (the default is to split on non-alphanumeric columns), or a vector of character positions. In this case we want to split after the first character:

tb3 <- tb2 %>% 
  separate(demo, c("sex", "age"), 1)
tb3
#> # A tibble: 35,750 x 5
#>    iso2   year sex   age       n
#>    <chr> <int> <chr> <chr> <int>
#>  1 AD     2005 m     04        0
#>  2 AD     2006 m     04        0
#>  3 AD     2008 m     04        0
#>  4 AE     2006 m     04        0
#>  5 AE     2007 m     04        0
#>  6 AE     2008 m     04        0
#>  7 AG     2007 m     04        0
#>  8 AL     2005 m     04        0
#>  9 AL     2006 m     04        1
#> 10 AL     2007 m     04        0
#> # … with 35,740 more rows

Storing the values in this form resolves a problem in the original data. We want to compare rates, not counts, which means we need to know the population. In the original format, there is no easy way to add a population variable. It has to be stored in a separate table, which makes it hard to correctly match populations to counts. In tidy form, adding variables for population and rate is easy because they’re just additional columns.

Variables are stored in both rows and columns

The most complicated form of messy data occurs when variables are stored in both rows and columns. The code below loads daily weather data from the Global Historical Climatology Network for one weather station (MX17004) in Mexico for five months in 2010.

weather <- as_tibble(read.csv("weather.csv", stringsAsFactors = FALSE))
weather
#> # A tibble: 22 x 35
#>    id     year month element    d1    d2    d3    d4    d5    d6    d7    d8
#>    <chr> <int> <int> <chr>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 MX17…  2010     1 tmax       NA  NA    NA      NA  NA      NA    NA    NA
#>  2 MX17…  2010     1 tmin       NA  NA    NA      NA  NA      NA    NA    NA
#>  3 MX17…  2010     2 tmax       NA  27.3  24.1    NA  NA      NA    NA    NA
#>  4 MX17…  2010     2 tmin       NA  14.4  14.4    NA  NA      NA    NA    NA
#>  5 MX17…  2010     3 tmax       NA  NA    NA      NA  32.1    NA    NA    NA
#>  6 MX17…  2010     3 tmin       NA  NA    NA      NA  14.2    NA    NA    NA
#>  7 MX17…  2010     4 tmax       NA  NA    NA      NA  NA      NA    NA    NA
#>  8 MX17…  2010     4 tmin       NA  NA    NA      NA  NA      NA    NA    NA
#>  9 MX17…  2010     5 tmax       NA  NA    NA      NA  NA      NA    NA    NA
#> 10 MX17…  2010     5 tmin       NA  NA    NA      NA  NA      NA    NA    NA
#> # … with 12 more rows, and 23 more variables: d9 <lgl>, d10 <dbl>, d11 <dbl>,
#> #   d12 <lgl>, d13 <dbl>, d14 <dbl>, d15 <dbl>, d16 <dbl>, d17 <dbl>,
#> #   d18 <lgl>, d19 <lgl>, d20 <lgl>, d21 <lgl>, d22 <lgl>, d23 <dbl>,
#> #   d24 <lgl>, d25 <dbl>, d26 <dbl>, d27 <dbl>, d28 <dbl>, d29 <dbl>,
#> #   d30 <dbl>, d31 <dbl>

It has variables in individual columns (id, year, month), spread across columns (day, d1-d31) and across rows (tmin, tmax) (minimum and maximum temperature). Months with fewer than 31 days have structural missing values for the last day(s) of the month.

To tidy this dataset we first gather the day columns:

weather2 <- weather %>%
  gather(day, value, d1:d31, na.rm = TRUE)
weather2
#> # A tibble: 66 x 6
#>    id       year month element day   value
#>    <chr>   <int> <int> <chr>   <chr> <dbl>
#>  1 MX17004  2010    12 tmax    d1     29.9
#>  2 MX17004  2010    12 tmin    d1     13.8
#>  3 MX17004  2010     2 tmax    d2     27.3
#>  4 MX17004  2010     2 tmin    d2     14.4
#>  5 MX17004  2010    11 tmax    d2     31.3
#>  6 MX17004  2010    11 tmin    d2     16.3
#>  7 MX17004  2010     2 tmax    d3     24.1
#>  8 MX17004  2010     2 tmin    d3     14.4
#>  9 MX17004  2010     7 tmax    d3     28.6
#> 10 MX17004  2010     7 tmin    d3     17.5
#> # … with 56 more rows

For presentation, I’ve dropped the missing values, making them implicit rather than explicit. This is ok because we know how many days are in each month and can easily reconstruct the explicit missing values.

We’ll also do a little cleaning:

weather3 <- weather2 %>% 
  mutate(day = extract_numeric(day)) %>%
  select(id, year, month, day, element, value) %>%
  arrange(id, year, month, day)
#> extract_numeric() is deprecated: please use readr::parse_number() instead
weather3
#> # A tibble: 66 x 6
#>    id       year month   day element value
#>    <chr>   <int> <int> <dbl> <chr>   <dbl>
#>  1 MX17004  2010     1    30 tmax     27.8
#>  2 MX17004  2010     1    30 tmin     14.5
#>  3 MX17004  2010     2     2 tmax     27.3
#>  4 MX17004  2010     2     2 tmin     14.4
#>  5 MX17004  2010     2     3 tmax     24.1
#>  6 MX17004  2010     2     3 tmin     14.4
#>  7 MX17004  2010     2    11 tmax     29.7
#>  8 MX17004  2010     2    11 tmin     13.4
#>  9 MX17004  2010     2    23 tmax     29.9
#> 10 MX17004  2010     2    23 tmin     10.7
#> # … with 56 more rows

This dataset is mostly tidy, but the element column is not a variable; it stores the names of variables. (Not shown in this example are the other meteorological variables prcp (precipitation) and snow (snowfall)). Fixing this requires the spread operation. This performs the inverse of gathering by spreading the element and value columns back out into the columns:

weather3 %>% spread(element, value)
#> # A tibble: 33 x 6
#>    id       year month   day  tmax  tmin
#>    <chr>   <int> <int> <dbl> <dbl> <dbl>
#>  1 MX17004  2010     1    30  27.8  14.5
#>  2 MX17004  2010     2     2  27.3  14.4
#>  3 MX17004  2010     2     3  24.1  14.4
#>  4 MX17004  2010     2    11  29.7  13.4
#>  5 MX17004  2010     2    23  29.9  10.7
#>  6 MX17004  2010     3     5  32.1  14.2
#>  7 MX17004  2010     3    10  34.5  16.8
#>  8 MX17004  2010     3    16  31.1  17.6
#>  9 MX17004  2010     4    27  36.3  16.7
#> 10 MX17004  2010     5    27  33.2  18.2
#> # … with 23 more rows

This form is tidy: there’s one variable in each column, and each row represents one day.

Multiple types in one table

Datasets often involve values collected at multiple levels, on different types of observational units. During tidying, each type of observational unit should be stored in its own table. This is closely related to the idea of database normalisation, where each fact is expressed in only one place. It’s important because otherwise inconsistencies can arise.

The billboard dataset actually contains observations on two types of observational units: the song and its rank in each week. This manifests itself through the duplication of facts about the song: artist is repeated many times.

This dataset needs to be broken down into two pieces: a song dataset which stores artist and song name, and a ranking dataset which gives the rank of the song in each week. We first extract a song dataset:

song <- billboard3 %>% 
  select(artist, track) %>%
  unique() %>%
  mutate(song_id = row_number())
song
#> # A tibble: 317 x 3
#>    artist         track                   song_id
#>    <chr>          <chr>                     <int>
#>  1 2 Pac          Baby Don't Cry (Keep...       1
#>  2 2Ge+her        The Hardest Part Of ...       2
#>  3 3 Doors Down   Kryptonite                    3
#>  4 3 Doors Down   Loser                         4
#>  5 504 Boyz       Wobble Wobble                 5
#>  6 98^0           Give Me Just One Nig...       6
#>  7 A*Teens        Dancing Queen                 7
#>  8 Aaliyah        I Don't Wanna                 8
#>  9 Aaliyah        Try Again                     9
#> 10 Adams, Yolanda Open My Heart                10
#> # … with 307 more rows

Then use that to make a rank dataset by replacing repeated song facts with a pointer to song details (a unique song id):

rank <- billboard3 %>%
  left_join(song, c("artist", "track")) %>%
  select(song_id, date, week, rank) %>%
  arrange(song_id, date)
rank
#> # A tibble: 5,307 x 4
#>    song_id date        week  rank
#>      <int> <date>     <dbl> <dbl>
#>  1       1 2000-02-26     1    87
#>  2       1 2000-03-04     2    82
#>  3       1 2000-03-11     3    72
#>  4       1 2000-03-18     4    77
#>  5       1 2000-03-25     5    87
#>  6       1 2000-04-01     6    94
#>  7       1 2000-04-08     7    99
#>  8       2 2000-09-02     1    91
#>  9       2 2000-09-09     2    87
#> 10       2 2000-09-16     3    92
#> # … with 5,297 more rows

You could also imagine a week dataset which would record background information about the week, maybe the total number of songs sold or similar “demographic” information.

Normalisation is useful for tidying and eliminating inconsistencies. However, there are few data analysis tools that work directly with relational data, so analysis usually also requires denormalisation or the merging the datasets back into one table.

One type in multiple tables

It’s also common to find data values about a single type of observational unit spread out over multiple tables or files. These tables and files are often split up by another variable, so that each represents a single year, person, or location. As long as the format for individual records is consistent, this is an easy problem to fix:

  1. Read the files into a list of tables.

  2. For each table, add a new column that records the original file name (the file name is often the value of an important variable).

  3. Combine all tables into a single table.

Purrr makes this straightforward in R. The following code generates a vector of file names in a directory (data/) which match a regular expression (ends in .csv). Next we name each element of the vector with the name of the file. We do this because will preserve the names in the following step, ensuring that each row in the final data frame is labeled with its source. Finally, map_dfr() loops over each path, reading in the csv file and combining the results into a single data frame.

library(purrr)
paths <- dir("data", pattern = "\\.csv$", full.names = TRUE)
names(paths) <- basename(paths)
map_dfr(paths, read.csv, stringsAsFactors = FALSE, .id = "filename")

Once you have a single table, you can perform additional tidying as needed. An example of this type of cleaning can be found at https://github.com/hadley/data-baby-names which takes 129 yearly baby name tables provided by the US Social Security Administration and combines them into a single file.

A more complicated situation occurs when the dataset structure changes over time. For example, the datasets may contain different variables, the same variables with different names, different file formats, or different conventions for missing values. This may require you to tidy each file to individually (or, if you’re lucky, in small groups) and then combine them once tidied. An example of this type of tidying is illustrated in https://github.com/hadley/data-fuel-economy, which shows the tidying of epa fuel economy data for over 50,000 cars from 1978 to 2008. The raw data is available online, but each year is stored in a separate file and there are four major formats with many minor variations, making tidying this dataset a considerable challenge.

tidyr/inst/doc/rectangle.Rmd0000644000176200001440000002537713516073665015571 0ustar liggesusers--- title: "Rectangling" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{rectangling} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Introduction Rectangling is the art and craft of taking a deeply nested list (often sourced from wild caught JSON or XML) and taming it into a tidy data set of rows and columns. There are three functions from tidyr that are particularly useful for rectangling: * `unnest_longer()` takes each element of a list-column and makes a new row. * `unnest_wider()` takes each element of a list-column and makes a new column. * `unnest_auto()` guesses whether you want `unnest_longer()` or `unnest_wider()`. * `hoist()` is similar to `unnest_wider()` but only plucks out selected components, and can reach down multiple levels. A very large number of data rectangling problems can be solved by combining these functions with a splash of dplyr (largely eliminating prior approaches that combined `mutate()` with multiple `purrr::map()`s). To illustrate these techniques, we'll use the repurrrsive package, which provides a number deeply nested lists originally mostly captured from web APIs. ```{r setup, message = FALSE} library(tidyr) library(dplyr) library(repurrrsive) ``` ## GitHub users We'll start with `gh_users`, a list which contains information about six GitHub users. To begin, we put the `gh_users` list into a data frame: ```{r} users <- tibble(user = gh_users) ``` This seems a bit counter-intuitive: why is the first step in making a list simpler to make it more complicated? But a data frame has a big advantage: it bundles together multiple vectors so that everything is tracked together in a single object. Each `user` is a named list, where each element represents a column. ```{r} names(users$user[[1]]) ``` There are two ways to turn the list components into columns. `unnest_wider()` takes every component and makes a new column: ```{r} users %>% unnest_wider(user) ``` But in this case, there are many components and we don't need most of them so we can instead use `hoist()`. `hoist()` allows us to pull out selected components using the same syntax as `purrr::pluck()`: ```{r} users %>% hoist(user, followers = "followers", login = "login", url = "html_url" ) ``` `hoist()` removes the named components from the `user` list-column, so you can think of it as moving components out of the inner list into the top-level data frame. ## Github repos We start off `gh_repos` similarly, by putting it in a tibble: ```{r} repos <- tibble(repo = gh_repos) repos ``` This time the elements of `user` are a list of repositories that belong to that user. These are observations, so should become new rows, so we use `unnest_longer()` rather than `unnest_wider()`: ```{r} repos <- repos %>% unnest_longer(repo) repos ``` Then we can use `unnest_wider()` or `hoist()`: ```{r} repos %>% hoist(repo, login = c("owner", "login"), name = "name", homepage = "homepage", watchers = "watchers_count" ) ``` Note the use of `c("owner", "login")`: this allows us to reach two levels deep inside of a list. An alternative approach would be to pull out just `owner` and then put each element of it in a column: ```{r} repos %>% hoist(repo, owner = "owner") %>% unnest_wider(owner) ``` Instead of looking at the list and carefully thinking about whether it needs to become rows or columns, you can use `unnest_auto()`. It uses a handful of heuristics to figure out whether `unnest_longer()` or `unnest_wider()` is appropriate, and tells you about its reasoning. ```{r} tibble(repo = gh_repos) %>% unnest_auto(repo) %>% unnest_auto(repo) ``` ## Game of Thrones characters `got_chars` has a similar structure to `gh_users`: it's a list of named lists, where each element of the inner list describes some attribute of a GoT character. We start in the same way, first by creating a data frame and then by unnesting each component into a column: ```{r} chars <- tibble(char = got_chars) chars chars2 <- chars %>% unnest_wider(char) chars2 ``` This is more complex than `gh_users` because some component of `char` are themselves a list, giving us a collection of list-columns: ```{r} chars2 %>% select_if(is.list) ``` What you do next will depend on the purposes of the analysis. Maybe you want a row for every book and TV series that the character appears in: ```{r} chars2 %>% select(name, books, tvSeries) %>% pivot_longer(c(books, tvSeries), names_to = "media", values_to = "value") %>% unnest_longer(value) ``` Or maybe you want to build a table that lets you match title to name: ```{r} chars2 %>% select(name, title = titles) %>% unnest_longer(title) ``` (Note that the empty titles (`""`) are due to an infelicity in the input `got_chars`: ideally people without titles would have a title vector of length 0, not a title vector of length 1 containing an empty string.) Again, we could rewrite using `unnest_auto()`. This is convenient for exploration, but I wouldn't rely on it in the long term - `unnest_auto()` has the undesirable property that it will always succeed. That means if your data structure changes, `unnest_auto()` will continue to work, but might give very different output that causes cryptic failures from downstream functions. ```{r} tibble(char = got_chars) %>% unnest_auto(char) %>% select(name, title = titles) %>% unnest_auto(title) ``` ## Geocoding with google Next we'll tackle a more complex form of data that comes from Google's geocoding service. It's against the terms of service to cache this data, so I first write a very simple wrapper around the API. This relies on having an Google maps API key stored in an environment; if that's not available these code chunks won't be run. ```{r} has_key <- !identical(Sys.getenv("GOOGLE_MAPS_API_KEY"), "") if (!has_key) { message("No Google Maps API key found; code chunks will not be run") } # https://developers.google.com/maps/documentation/geocoding geocode <- function(address, api_key = Sys.getenv("GOOGLE_MAPS_API_KEY")) { url <- "https://maps.googleapis.com/maps/api/geocode/json" url <- paste0(url, "?address=", URLencode(address), "&key=", api_key) jsonlite::read_json(url) } ``` The list that this function returns is quite complex: ```{r, eval = has_key} houston <- geocode("Houston TX") str(houston) ``` Fortunately, we can attack the problem step by step with tidyr functions. To make the problem a bit harder (!) and more realistic, I'll start by geocoding a few cities: ```{r, eval = has_key, cache = TRUE} city <- c("Houston", "LA", "New York", "Chicago", "Springfield") city_geo <- purrr::map(city, geocode) ``` I'll put these results in a tibble, next to the original city name: ```{r, eval = has_key} loc <- tibble(city = city, json = city_geo) loc ``` The first level contains components `status` and `result`, which we can reveal with `unnest_wider()`: ```{r, eval = has_key} loc %>% unnest_wider(json) ``` Notice that `results` is a list of lists. Most of the cities have 1 element (representing a unique match from the geocoding API), but Springfield has two. We can pull these out into separate rows with `unnest_longer()`: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) ``` Now these all have the same components, as revealed by `unnest_wider()`: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) ``` We can find the lat and lon coordinates by unnesting `geometry`: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) %>% unnest_wider(geometry) ``` And then location: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) %>% unnest_wider(geometry) %>% unnest_wider(location) ``` Again, `unnest_auto()` makes this simpler with the small risk of failing in unexpected ways if the input structure changes: ```{r, eval = has_key} loc %>% unnest_auto(json) %>% unnest_auto(results) %>% unnest_auto(results) %>% unnest_auto(geometry) %>% unnest_auto(location) ``` We could also just look at the first address for each city: ```{r, eval = has_key} loc %>% unnest_wider(json) %>% hoist(results, first_result = 1) %>% unnest_wider(first_result) %>% unnest_wider(geometry) %>% unnest_wider(location) ``` Or use `hoist()` to dive deeply to get directly to `lat` and `lng`: ```{r, eval = has_key} loc %>% hoist(json, lat = list("results", 1, "geometry", "location", "lat"), lng = list("results", 1, "geometry", "location", "lng") ) ``` ## Sharla Gelfand's discography We'll finish off with the most complex list, from [Sharla Gelfand's](https://sharla.party/posts/discog-purrr/) discography. We'll start the usual way: putting the list into a single column data frame, and then widening so each component is a column. I also parse the `date_added` column into a real date-time[^readr]. [^readr]: I'd normally use `readr::parse_datetime()` or `lubridate::ymd_hms()`, but I can't here because it's a vignette and I don't want to add a dependency to tidyr just to simplify one example. ```{r} discs <- tibble(disc = discog) %>% unnest_wider(disc) %>% mutate(date_added = as.POSIXct(strptime(date_added, "%Y-%m-%dT%H:%M:%S"))) discs ``` At this level, we see information about when each disc was added to Sharla's discography, not any information about the disc itself. To do that we need to widen the `basic_information` column: ```{r, error = TRUE} discs %>% unnest_wider(basic_information) ``` Unfortunately that fails because there's an `id` column inside `basic_information`. We can quickly see what's going on by setting `names_repair = "unique"`: ```{r} discs %>% unnest_wider(basic_information, names_repair = "unique") ``` The problem is that `basic_information` repeats the `id` column that's also stored at the top-level, so we can just drop that: ```{r} discs %>% select(-id) %>% unnest_wider(basic_information) ``` Alternatively, we could use `hoist()`: ```{r} discs %>% hoist(basic_information, title = "title", year = "year", label = list("labels", 1, "name"), artist = list("artists", 1, "name") ) ``` Here I quickly extract the name of the first label and artist by indexing deeply into the nested list. A more systematic approach would be to create separate tables for artist and label: ```{r} discs %>% hoist(basic_information, artist = "artists") %>% select(disc_id = id, artist) %>% unnest_longer(artist) %>% unnest_wider(artist) discs %>% hoist(basic_information, format = "formats") %>% select(disc_id = id, format) %>% unnest_longer(format) %>% unnest_wider(format) %>% unnest_longer(descriptions) ``` Then you could join these back on to the original dataset as needed. tidyr/inst/doc/in-packages.Rmd0000644000176200001440000003577513532046157016004 0ustar liggesusers--- title: "In packages" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Usage and migration} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Introduction This vignette serves two distinct, but related, purposes: * It documents general best practices for using tidyr in a package, inspired by [using ggplot2 in packages][ggplot2-packages]. * It describes migration patterns for the transition from tidyr v0.8.3 to v1.0.0. This release includes breaking changes to `nest()` and `unnest()` in order to increase consistency within tidyr and with the rest of the tidyverse. Before we go on, we'll attach the packages we use, expose the version of tidyr, and make a small dataset to use in examples. ```{r setup} library(tidyr) library(dplyr, warn.conflicts = FALSE) library(purrr) packageVersion("tidyr") (mini_iris <- iris %>% as_tibble() %>% .[c(1, 2, 51, 52, 101, 102), ]) ``` ## Using tidyr in packages Compared to dplyr and ggplot2, most tidyr functions have __select semantics__ (like `dplyr::select()`), not the more common action semantics (like `mutate()`, `filter()`, `arrange()`, `group_by()`, ...). This means that you typically provide tidyr functions with an expression that works with column names (like `starts_with("x")` or `a:c`) not with column values (like `y = x * 2`). As a consequence, it's worthwhile to clarify the best patterns for calling tidyr functions inside another package. There are three main cases that you'll encounter: * The column names are fixed: use `one_of("col1", "col2", "col3")`. * The column names are in a character vector: use `one_of(cols)`. * The column names are specified by the user, using select syntax: use `{{ cols }}`. ### Fixed column names If you know the column names, this code works in the same way, in and out of a package: ```{r} mini_iris %>% nest( petal = c(Petal.Length, Petal.Width), sepal = c(Sepal.Length, Sepal.Width) ) ``` But `R CMD check` will warn about undefined global variables (`Petal.Length`, `Petal.Width`, `Sepal.Length`, and `Sepal.Width`), because it doesn't know that `nest()` is looking for the variables inside of `mini_iris`. The easiest way to silence this note is to use `one_of()`. `one_of()` is a tidyselect helper (like `starts_with()`, `ends_with()`, etc.) that takes column names stored as strings: ```{r} mini_iris %>% nest( petal = one_of("Petal.Length", "Petal.Width"), sepal = one_of("Sepal.Length", "Sepal.Width") ) ``` The [tidyselect](https://tidyselect.r-lib.org) package offers an entire family of select helpers. You are probably already familiar with them from using `dplyr::select()`. ### Column names in a character vector If the column names are in a character vector (possibly from a function call), you can provide that to `one_of()`, as above: ```{r} nest_egg <- function(data, cols) { nest(data, egg = one_of(cols)) } nest_egg(mini_iris, c("Petal.Length", "Petal.Width", "Sepal.Length", "Sepal.Width")) ``` The use of `one_of()` here is important; if you don't use it, and `data` contains a column named `cols`, `nest()` will nest it instead of the columns named in `cols`. ### tidyselect interface To provide an interface that works like the tidyr function that you're wrapping, you should pass the argument along using `{{ arg }}`. `{{ }}` is a special tidy eval operator that captures the expression supplied by the user and forwards it to another tidy eval-enabled function. ```{r} nest_egg <- function(df, cols) { nest(df, egg = {{ cols }}) } nest_egg(mini_iris, -Species) ``` For more complicated functions, you might want to use tidyselect directly: ```{r} sel_vars <- function(df, cols) { tidyselect::vars_select(names(df), {{ cols }}) } sel_vars(mini_iris, -Species) ``` (Many tidyr functions use `...` so you can easily select many variables, e.g. `fill(df, x, y, z)`. I now believe that the disadvantages of this approach outweigh the benefits, and that this interface would have been better as `fill(df, c(x, y, z))`. For new functions that select columns, please just use a single argument and not `...`.) If you decide to support tidyselect syntax, I recommend re-exporting the select helpers so that users can use (e.g.) `starts_with()` without any extra work. There's no helper to [do this yet](https://github.com/r-lib/usethis/issues/868), but you can copy-and-paste the code that [tidyr uses](https://github.com/tidyverse/tidyr/blob/00a66b44d2f304a73e953dd73139db61ed9cc289/R/tidyr.R#L29-L53). ### Travis-CI Hopefully you've already adopted continuous integration for your package, in which `R CMD check` (which includes your own tests) is run on a regular basis, e.g. every time you push changes to your package's source on GitHub or similar. The tidyverse team currently relies most heavily on Travis-CI for this, so that will be our example. `usethis::use_travis()` can help you get started. We recommend adding a build to your matrix that targets the devel version of tidyr: * Always? If your package is tightly coupled to tidyr, consider leaving this build in place all the time, so you know if changes in tidyr affect your package. Modifiers like `allow_failures` and `fast_finish` may be useful. Read more about the [Travis build matrix](https://docs.travis-ci.com/user/customizing-the-build/#build-matrix). * Right before a tidyr release? For everyone else, you could just add a tidyr-devel build during the period preceding a major tidyr release that has the potential for breaking changes, especially if you've been contacted during our reverse dependency checks. Example of `.travis.yml` config that tests against R devel, release, and oldrel, assesses test coverage, and includes a build against devel tidyr: ``` yaml # R for travis: see documentation at https://docs.travis-ci.com/user/languages/r language: R cache: packages matrix: include: - r: devel - r: release after_success: - Rscript -e 'covr::codecov()' - r: release name: tidyr-devel before_script: Rscript -e "remotes::install_github('tidyverse/tidyr')" - r: oldrel ``` ## tidyr v0.8.3 -> v1.0.0 v1.0.0 (aka v0.8.99.9000) makes considerable changes to the interface of `nest()` and `unnest()` in order to bring them in line with newer tidyverse conventions. I have tried to make the functions as backward compatible as possible and to give informative warning messages, but I could not cover 100% of use cases, so you may need to change your package code. This guide will help you do so with a minimum of pain. Ideally, you'll tweak your package so that it works with both tidyr 0.8.3 and tidyr 1.0.0. This makes life considerably easier because it means there's no need to coordinate CRAN submissions - you can submit your package that works with both tidyr versions, before I submit tidyr to CRAN. This section describes our recommend practices for doing so, drawing from the general principles described in . If you use Travis-CI already, we **strongly** recommend adding a build that tests with the development version of tidyr; see above for details. This section briefly describes how to run different code for different versions of tidyr, then goes through the major changes that might require workarounds: * `nest()` and `unnest()` get new interfaces. * `nest()` preserves groups. * `nest_()` and `unnest_()` are defunct. If you're struggling with a problem that's not described here, please reach out via [github](https://github.com/tidyverse/tidyr/issues/new) or [email](mailto:hadley@rstudio.com) so we can help out. ### Conditional code Sometimes you'll be able to write code that works with v0.8.3 _and_ v1.0.0. But this often requires code that's not particularly natural for either version and you'd be better off to (temporarily) have separate code paths, each containing non-contrived code. You get to re-use your existing code in the "old" branch, which will eventually be phased out, and write clean, forward-looking code in the "new" branch. The basic approach looks like this. First you define a function that returns `TRUE` for new versions of tidyr: ```{r} tidyr_new_interface <- function() { packageVersion("tidyr") > "0.8.99" } ``` We highly recommend keeping this as a function because it provides an obvious place to jot any transition notes for your package, and it makes it easier to remove transitional code later on. Another benefit is that the tidyr version is determined at *run time*, not at *build time*, and will therefore detect your user's current tidyr version. Then in your functions, you use an `if` statement to call different code for different versions: ```{r, eval = FALSE} my_function_inside_a_package <- function(...) # my code here if (tidyr_new_interface()) { # Freshly written code for v1.0.0 out <- tidyr::nest(df, data = one_of("x", "y", "z")) } else { # Existing code for v0.8.3 out <- tidyr::nest(df, x, y, z) } # more code here } ``` If your new code uses a function that only exists in tidyr 1.0.0, you will get a `NOTE` from `R CMD check`: this is one of the few notes that you can explain in your CRAN submission comments. Just mention that it's for forward compatibility with tidyr 1.0.0, and CRAN will let your package through. ### New syntax for `nest()` What changed: * The to-be-nested columns are no longer accepted as "loose parts". * The new list-column's name is no longer provided via the `.key` argument. * Now we use a construct like this: `new_col = `. Why it changed: * The use of `...` for metadata is a problematic pattern we're moving away from. * The `new_col = ` construct lets us create multiple nested list-columns at once ("multi-nest"). ```{r} mini_iris %>% nest(petal = matches("Petal"), sepal = matches("Sepal")) ``` Before and after examples: ```{r eval = FALSE} # v0.8.3 mini_iris %>% nest(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width, .key = "my_data") # v1.0.0 mini_iris %>% nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) # v1.0.0 avoiding R CMD check NOTE mini_iris %>% nest(my_data = one_of(c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"))) # or equivalently: mini_iris %>% nest(my_data = -one_of("Species")) ``` If you need a quick and dirty fix without having to think, just call `nest_legacy()` instead of `nest()`. It's the same as `nest()` in v0.8.3: ```{r, eval = FALSE} if (tidyr_new_interface()) { out <- tidyr::nest_legacy(df, x, y, z) } else { out <- tidyr::nest(df, x, y, z) } ``` ### New syntax for `unnest()` What changed: * The to-be-unnested columns must now be specified explicitly, instead of defaulting to all list-columns. This also deprecates `.drop` and `.preserve`. * `.sep` has been deprecated and replaced with `names_sep`. * `unnest()` uses the [emerging tidyverse standard][name-repair] to disambiguate duplicated names. Use `names_repair = tidyr_legacy` to request the previous approach. * `.id` has been deprecated because it can be easily replaced by creating the column of names prior to `unnest()`, e.g. with an upstream call to `mutate()`. ```{r, eval = FALSE} # v0.8.3 df %>% unnest(x, .id = "id") # v1.0.0 df %>% mutate(id = names(x)) %>% unnest(x)) ``` Why it changed: * The use of `...` for metadata is a problematic pattern we're moving away from. * The changes to details arguments relate to features rolling out across multiple packages in the tidyverse. For example, `ptype` exposes protoype support from the new [vctrs package](https://vctrs.r-lib.org). `names_repair` specifies what to do about duplicated or non-syntactic names, consistent with tibble and readxl. Before and after: ```{r, eval = FALSE} nested <- mini_iris %>% nest(my_data = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)) # v0.8.3 automatically unnests list-cols nested %>% unnest() # v1.0.0 must be told which columns to unnest nested %>% unnest(one_of("my_data")) ``` If you need a quick and dirty fix without having to think, just call `unnest_legacy()` instead of `unnest()`. It's the same as `unnest()` in v0.8.3: ```{r, eval = FALSE} if (tidyr_new_interface()) { out <- tidyr::unnest_legacy(df) } else { out <- tidyr::unnest(df) } ``` ### `nest()` preserves groups What changed: * `nest()` now preserves the groups present in the input. Why it changed: * To reflect the growing support for grouped data frames, especially in recent releases of dplyr. See, for example, `dplyr::group_modify()`, `group_map()`, and friends. If the fact that `nest()` now preserves groups is problematic downstream, you have a few choices: * Apply `ungroup()` to the result. This level of pragmatism suggests, however, you should at least consider the next two options. * You should never have grouped in the first place. Eliminate the `group_by()` call and specify which columns should be nested versus not nested directly in `nest()`. * Adjust the downstream code to accommodate grouping. Imagine we used `group_by()` then `nest()` on `mini_iris`, then we computed on the list-column *outside the data frame*. ```{r} (df <- mini_iris %>% group_by(Species) %>% nest()) (external_variable <- map_int(df$data, nrow)) ``` And now we try to add that back to the data *post hoc*: ```{r error = TRUE} df %>% mutate(n_rows = external_variable) ``` This fails because `df` is grouped and `mutate()` is group-aware, so it's hard to add a completely external variable. Other than pragmatically `ungroup()`ing, what can we do? One option is to work inside the data frame, i.e. bring the `map()` inside the `mutate()`, and design the problem away: ```{r} df %>% mutate(n_rows = map_int(data, nrow)) ``` If, somehow, the grouping seems appropriate AND working inside the data frame is not an option, `tibble::add_column()` is group-unaware. It lets you add external data to a grouped data frame. ```{r} df %>% tibble::add_column(n_rows = external_variable) ``` ### `nest_()` and `unnest_()` are defunct What changed: * `nest_()` and `unnest_()` no longer work Why it changed: * We are transitioning the whole tidyverse to the powerful tidy eval framework. Therefore, we are gradually removing all previous solutions: - Specialized standard evaluation versions of functions, e.g., `foo_()` as a complement to `foo()`. - The older lazyeval framework. Before and after: ```{r eval = FALSE} # v0.8.3 mini_iris %>% nest_( key_col = "my_data", nest_cols = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width") ) nested %>% unnest_(~ my_data) # v1.0.0 mini_iris %>% nest(my_data = one_of("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")) nested %>% unnest(one_of("my_data")) ``` [ggplot2-packages]: https://ggplot2.tidyverse.org/dev/articles/ggplot2-in-packages.html [name-repair]: https://www.tidyverse.org/articles/2019/01/tibble-2.0.1/#name-repair tidyr/inst/doc/pivot.R0000644000176200001440000002220713612357516014427 0ustar liggesusers## ---- include = FALSE--------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) options(tibble.print_max = 10) ## ----setup, message = FALSE--------------------------------------------------- library(tidyr) library(dplyr) library(readr) ## ----------------------------------------------------------------------------- relig_income ## ----------------------------------------------------------------------------- relig_income %>% pivot_longer(-religion, names_to = "income", values_to = "count") ## ----------------------------------------------------------------------------- billboard ## ----------------------------------------------------------------------------- billboard %>% pivot_longer( cols = starts_with("wk"), names_to = "week", values_to = "rank", values_drop_na = TRUE ) ## ----------------------------------------------------------------------------- billboard %>% pivot_longer( cols = starts_with("wk"), names_to = "week", names_prefix = "wk", names_ptypes = list(week = integer()), values_to = "rank", values_drop_na = TRUE, ) ## ----------------------------------------------------------------------------- who ## ----------------------------------------------------------------------------- who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", values_to = "count" ) ## ----------------------------------------------------------------------------- who %>% pivot_longer( cols = new_sp_m014:newrel_f65, names_to = c("diagnosis", "gender", "age"), names_pattern = "new_?(.*)_(.)(.*)", names_ptypes = list( gender = factor(levels = c("f", "m")), age = factor( levels = c("014", "1524", "2534", "3544", "4554", "5564", "65"), ordered = TRUE ) ), values_to = "count", ) ## ----------------------------------------------------------------------------- family <- tribble( ~family, ~dob_child1, ~dob_child2, ~gender_child1, ~gender_child2, 1L, "1998-11-26", "2000-01-29", 1L, 2L, 2L, "1996-06-22", NA, 2L, NA, 3L, "2002-07-11", "2004-04-05", 2L, 2L, 4L, "2004-10-10", "2009-08-27", 1L, 1L, 5L, "2000-12-05", "2005-02-28", 2L, 1L, ) family <- family %>% mutate_at(vars(starts_with("dob")), parse_date) family ## ----------------------------------------------------------------------------- family %>% pivot_longer( -family, names_to = c(".value", "child"), names_sep = "_", values_drop_na = TRUE ) ## ----------------------------------------------------------------------------- anscombe ## ----------------------------------------------------------------------------- anscombe %>% pivot_longer(everything(), names_to = c(".value", "set"), names_pattern = "(.)(.)" ) %>% arrange(set) ## ----------------------------------------------------------------------------- pnl <- tibble( x = 1:4, a = c(1, 1,0, 0), b = c(0, 1, 1, 1), y1 = rnorm(4), y2 = rnorm(4), z1 = rep(3, 4), z2 = rep(-2, 4), ) pnl %>% pivot_longer( -c(x, a, b), names_to = c(".value", "time"), names_pattern = "(.)(.)" ) ## ----------------------------------------------------------------------------- df <- tibble(x = 1:3, y = 4:6, y = 5:7, y = 7:9, .name_repair = "minimal") df ## ----------------------------------------------------------------------------- df %>% pivot_longer(-x, names_to = "name", values_to = "value") ## ----------------------------------------------------------------------------- fish_encounters ## ----------------------------------------------------------------------------- fish_encounters %>% pivot_wider(names_from = station, values_from = seen) ## ----------------------------------------------------------------------------- fish_encounters %>% pivot_wider( names_from = station, values_from = seen, values_fill = list(seen = 0) ) ## ----------------------------------------------------------------------------- warpbreaks <- warpbreaks %>% as_tibble() %>% select(wool, tension, breaks) warpbreaks ## ----------------------------------------------------------------------------- warpbreaks %>% count(wool, tension) ## ----------------------------------------------------------------------------- warpbreaks %>% pivot_wider(names_from = wool, values_from = breaks) ## ----------------------------------------------------------------------------- warpbreaks %>% pivot_wider( names_from = wool, values_from = breaks, values_fn = list(breaks = mean) ) ## ----------------------------------------------------------------------------- production <- expand_grid( product = c("A", "B"), country = c("AI", "EI"), year = 2000:2014 ) %>% filter((product == "A" & country == "AI") | product == "B") %>% mutate(production = rnorm(nrow(.))) production ## ----------------------------------------------------------------------------- production %>% pivot_wider( names_from = c(product, country), values_from = production ) ## ----------------------------------------------------------------------------- us_rent_income ## ----------------------------------------------------------------------------- us_rent_income %>% pivot_wider(names_from = variable, values_from = c(estimate, moe)) ## ----------------------------------------------------------------------------- contacts <- tribble( ~field, ~value, "name", "Jiena McLellan", "company", "Toyota", "name", "John Smith", "company", "google", "email", "john@google.com", "name", "Huxley Ratcliffe" ) ## ----------------------------------------------------------------------------- contacts <- contacts %>% mutate( person_id = cumsum(field == "name") ) contacts ## ----------------------------------------------------------------------------- contacts %>% pivot_wider(names_from = field, values_from = value) ## ----------------------------------------------------------------------------- world_bank_pop ## ----------------------------------------------------------------------------- pop2 <- world_bank_pop %>% pivot_longer(`2000`:`2017`, names_to = "year", values_to = "value") pop2 ## ----------------------------------------------------------------------------- pop2 %>% count(indicator) ## ----------------------------------------------------------------------------- pop3 <- pop2 %>% separate(indicator, c(NA, "area", "variable")) pop3 ## ----------------------------------------------------------------------------- pop3 %>% pivot_wider(names_from = variable, values_from = value) ## ----------------------------------------------------------------------------- multi <- tribble( ~id, ~choice1, ~choice2, ~choice3, 1, "A", "B", "C", 2, "C", "B", NA, 3, "D", NA, NA, 4, "B", "D", NA ) ## ----------------------------------------------------------------------------- multi2 <- multi %>% pivot_longer(-id, values_drop_na = TRUE) %>% mutate(checked = TRUE) multi2 ## ----------------------------------------------------------------------------- multi2 %>% pivot_wider( id_cols = id, names_from = value, values_from = checked, values_fill = list(checked = FALSE) ) ## ----------------------------------------------------------------------------- spec <- relig_income %>% build_longer_spec( cols = -religion, names_to = "income", values_to = "count" ) pivot_longer_spec(relig_income, spec) ## ----------------------------------------------------------------------------- spec ## ----------------------------------------------------------------------------- us_rent_income %>% pivot_wider(names_from = variable, values_from = c(estimate, moe)) ## ----------------------------------------------------------------------------- spec1 <- us_rent_income %>% build_wider_spec(names_from = variable, values_from = c(estimate, moe)) spec1 ## ----------------------------------------------------------------------------- spec2 <- spec1 %>% mutate(.name = paste0(variable, ifelse(.value == "moe", "_moe", ""))) spec2 ## ----------------------------------------------------------------------------- pivot_wider_spec(us_rent_income, spec2) ## ----------------------------------------------------------------------------- construction ## ----------------------------------------------------------------------------- spec <- tribble( ~.name, ~.value, ~units, ~region, "1 unit", "n", "1", NA, "2 to 4 units", "n", "2-4", NA, "5 units or more", "n", "5+", NA, "Northeast", "n", NA, "Northeast", "Midwest", "n", NA, "Midwest", "South", "n", NA, "South", "West", "n", NA, "West", ) ## ----------------------------------------------------------------------------- pivot_longer_spec(construction, spec) ## ----------------------------------------------------------------------------- construction %>% pivot_longer_spec(spec) %>% pivot_wider_spec(spec) tidyr/inst/doc/nest.R0000644000176200001440000000262313612357514014235 0ustar liggesusers## ---- include = FALSE--------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup, message = FALSE--------------------------------------------------- library(tidyr) library(dplyr) library(purrr) ## ----------------------------------------------------------------------------- df1 <- tibble( g = c(1, 2, 3), data = list( tibble(x = 1, y = 2), tibble(x = 4:5, y = 6:7), tibble(x = 10) ) ) df1 ## ----------------------------------------------------------------------------- df2 <- tribble( ~g, ~x, ~y, 1, 1, 2, 2, 4, 6, 2, 5, 7, 3, 10, NA ) df2 %>% nest(data = c(x, y)) ## ----------------------------------------------------------------------------- df2 %>% group_by(g) %>% nest() ## ----------------------------------------------------------------------------- df1 %>% unnest(data) ## ----------------------------------------------------------------------------- mtcars_nested <- mtcars %>% group_by(cyl) %>% nest() mtcars_nested ## ----------------------------------------------------------------------------- mtcars_nested <- mtcars_nested %>% mutate(model = map(data, function(df) lm(mpg ~ wt, data = df))) mtcars_nested ## ----------------------------------------------------------------------------- mtcars_nested <- mtcars_nested %>% mutate(model = map(model, predict)) mtcars_nested tidyr/inst/doc/rectangle.R0000644000176200001440000001413213612357525015230 0ustar liggesusers## ---- include = FALSE--------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup, message = FALSE--------------------------------------------------- library(tidyr) library(dplyr) library(repurrrsive) ## ----------------------------------------------------------------------------- users <- tibble(user = gh_users) ## ----------------------------------------------------------------------------- names(users$user[[1]]) ## ----------------------------------------------------------------------------- users %>% unnest_wider(user) ## ----------------------------------------------------------------------------- users %>% hoist(user, followers = "followers", login = "login", url = "html_url" ) ## ----------------------------------------------------------------------------- repos <- tibble(repo = gh_repos) repos ## ----------------------------------------------------------------------------- repos <- repos %>% unnest_longer(repo) repos ## ----------------------------------------------------------------------------- repos %>% hoist(repo, login = c("owner", "login"), name = "name", homepage = "homepage", watchers = "watchers_count" ) ## ----------------------------------------------------------------------------- repos %>% hoist(repo, owner = "owner") %>% unnest_wider(owner) ## ----------------------------------------------------------------------------- tibble(repo = gh_repos) %>% unnest_auto(repo) %>% unnest_auto(repo) ## ----------------------------------------------------------------------------- chars <- tibble(char = got_chars) chars chars2 <- chars %>% unnest_wider(char) chars2 ## ----------------------------------------------------------------------------- chars2 %>% select_if(is.list) ## ----------------------------------------------------------------------------- chars2 %>% select(name, books, tvSeries) %>% pivot_longer(c(books, tvSeries), names_to = "media", values_to = "value") %>% unnest_longer(value) ## ----------------------------------------------------------------------------- chars2 %>% select(name, title = titles) %>% unnest_longer(title) ## ----------------------------------------------------------------------------- tibble(char = got_chars) %>% unnest_auto(char) %>% select(name, title = titles) %>% unnest_auto(title) ## ----------------------------------------------------------------------------- has_key <- !identical(Sys.getenv("GOOGLE_MAPS_API_KEY"), "") if (!has_key) { message("No Google Maps API key found; code chunks will not be run") } # https://developers.google.com/maps/documentation/geocoding geocode <- function(address, api_key = Sys.getenv("GOOGLE_MAPS_API_KEY")) { url <- "https://maps.googleapis.com/maps/api/geocode/json" url <- paste0(url, "?address=", URLencode(address), "&key=", api_key) jsonlite::read_json(url) } ## ---- eval = has_key---------------------------------------------------------- houston <- geocode("Houston TX") str(houston) ## ---- eval = has_key, cache = TRUE-------------------------------------------- city <- c("Houston", "LA", "New York", "Chicago", "Springfield") city_geo <- purrr::map(city, geocode) ## ---- eval = has_key---------------------------------------------------------- loc <- tibble(city = city, json = city_geo) loc ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_wider(json) ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_wider(json) %>% unnest_longer(results) ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) %>% unnest_wider(geometry) ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_wider(json) %>% unnest_longer(results) %>% unnest_wider(results) %>% unnest_wider(geometry) %>% unnest_wider(location) ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_auto(json) %>% unnest_auto(results) %>% unnest_auto(results) %>% unnest_auto(geometry) %>% unnest_auto(location) ## ---- eval = has_key---------------------------------------------------------- loc %>% unnest_wider(json) %>% hoist(results, first_result = 1) %>% unnest_wider(first_result) %>% unnest_wider(geometry) %>% unnest_wider(location) ## ---- eval = has_key---------------------------------------------------------- loc %>% hoist(json, lat = list("results", 1, "geometry", "location", "lat"), lng = list("results", 1, "geometry", "location", "lng") ) ## ----------------------------------------------------------------------------- discs <- tibble(disc = discog) %>% unnest_wider(disc) %>% mutate(date_added = as.POSIXct(strptime(date_added, "%Y-%m-%dT%H:%M:%S"))) discs ## ---- error = TRUE------------------------------------------------------------ discs %>% unnest_wider(basic_information) ## ----------------------------------------------------------------------------- discs %>% unnest_wider(basic_information, names_repair = "unique") ## ----------------------------------------------------------------------------- discs %>% select(-id) %>% unnest_wider(basic_information) ## ----------------------------------------------------------------------------- discs %>% hoist(basic_information, title = "title", year = "year", label = list("labels", 1, "name"), artist = list("artists", 1, "name") ) ## ----------------------------------------------------------------------------- discs %>% hoist(basic_information, artist = "artists") %>% select(disc_id = id, artist) %>% unnest_longer(artist) %>% unnest_wider(artist) discs %>% hoist(basic_information, format = "formats") %>% select(disc_id = id, format) %>% unnest_longer(format) %>% unnest_wider(format) %>% unnest_longer(descriptions)