From eca60fef9ffb721daa12a00551f5269399c552f8 Mon Sep 17 00:00:00 2001 From: Olaf Date: Thu, 2 Jul 2026 00:38:01 +0200 Subject: [PATCH] Working version --- .gitignore | 2 + README.md | 120 ++++++++++++++++++++++++++- example.pdf | Bin 0 -> 38809 bytes example.tex | 11 +++ foldable-namecard.sty | 185 ++++++++++++++++++++++++++++++++++++++++++ isoclogo.png | Bin 0 -> 11138 bytes names.csv | 8 ++ 7 files changed, 325 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 example.pdf create mode 100644 example.tex create mode 100644 foldable-namecard.sty create mode 100644 isoclogo.png create mode 100644 names.csv diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85eda15 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +example.log +example.aux diff --git a/README.md b/README.md index f96f1f2..d7a2519 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,120 @@ +# foldable-namecard -This repo contains a quick and easy style file for creating foldable name cards from a CVS input file. \ No newline at end of file +A LaTeX package for printing A4 foldable namecards with a name, country, and logo. + +## Requirements + +### Compiler + +**This package requires XeLaTeX.** It will produce a hard error and abort if compiled +with `pdflatex` or `lualatex`. The package uses `fontspec` and `xeCJK` for advanced font handling, which are only fully supported by XeLaTeX. + +Compile with: + +``` +xelatex example.tex +``` + +### LaTeX Packages + +The following packages are required (most are part of a standard TeX Live or MiKTeX installation): + +- `geometry` - Page layout +- `graphicx` - Image handling +- `keyval` - Key-value options +- `iftex` - Conditional compilation based on engine +- `tikz` and `pgf` - Drawing and positioning +- `xcolor` - Color support +- `fontspec` - Font configuration (XeTeX) +- `xeCJK` - CJK character support (for Chinese, Japanese, Korean) + +### System Fonts + +You must install the following fonts on your system: + +| Font | Purpose | Notes | +|------|---------|-------| +| **Hind** | Primary font for names and text | Download from [Google Fonts](https://fonts.google.com/specimen/Hind) | +| **Liberation Sans** or **DejaVu Sans** | Fallback for extended Latin characters (accents, diacritics like ǐ) | Usually pre-installed on Linux/macOS; use one if Hind lacks certain glyphs | +| **Noto Sans CJK SC** (or system CJK font) | Chinese character support | For rendering Chinese names | + +#### Installation Instructions + +**macOS:** +```bash +# Download Hind from Google Fonts, then: +cp ~/Downloads/Hind-*.otf ~/Library/Fonts/ +``` + +**Linux (Ubuntu/Debian):** +```bash +# Install system fonts +sudo apt-get install fonts-hind fonts-dejavu fonts-noto-cjk + +# Or manually copy to ~/.fonts/ and run: +fc-cache -fv +``` + +**Windows:** +``` +# Download Hind from Google Fonts +# Right-click .otf files → Install +``` + +If any font is missing, the package will attempt to use fallbacks or emit a warning. + +## Usage + +### Single card + +```latex +\documentclass{article} +\usepackage{foldable-namecard} + +\namecardsetup{ + name=Alex Johnson, + country=Sweden, + logo=mylogo.png +} + +\begin{document} +\makefoldablenamecard +\end{document} +``` + +### Batch printing from a CSV file + +```latex +\documentclass{article} +\usepackage{foldable-namecard} + +\namecardsetup{logo=mylogo.png} + +\begin{document} +\makefoldablenamecardsfromfile{names.csv} +\end{document} +``` + +The CSV file must contain one `name,country` pair per line. Blank lines are skipped. +The package supports international characters including accented Latin letters and Chinese characters. + +``` +Alex Johnson,Sweden +Mina Patel,India +Sofia Garcia,Spain +Valgerður Ólafsdóttir,Iceland +李明 (Lǐ Míng),China +王芳,中国 +``` + +## Options (`\namecardsetup`) + +| Key | Default | Description | +|----------------|--------------|------------------------------------------| +| `name` | `Your Name` | Name printed on the card | +| `country` | `Country` | Country printed below the name | +| `logo` | *(none)* | Path to logo image file | +| `logowidth` | `2cm` | Width of the logo | +| `logoheight` | `10mm` | Height constraint for the logo | +| `debugboxes` | *(on)* | Show bounding boxes for layout debugging | +| `nodebugboxes` | — | Hide bounding boxes | diff --git a/example.pdf b/example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0c9de0ff5105e2950ff97b13862f50bf17aeac16 GIT binary patch literal 38809 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 literal 0 HcmV?d00001 diff --git a/example.tex b/example.tex new file mode 100644 index 0000000..2b9eec5 --- /dev/null +++ b/example.tex @@ -0,0 +1,11 @@ +% Compile with: xelatex example.tex +\documentclass{article} +\usepackage{foldable-namecard} + +\namecardsetup{ + logo=isoclogo.png +} + +\begin{document} +\makefoldablenamecardsfromfile{names.csv} +\end{document} diff --git a/foldable-namecard.sty b/foldable-namecard.sty new file mode 100644 index 0000000..abe0fe7 --- /dev/null +++ b/foldable-namecard.sty @@ -0,0 +1,185 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{foldable-namecard}[2026/07/01 A4 foldable namecard] + +\RequirePackage[a4paper,margin=0mm]{geometry} +\RequirePackage{graphicx} +\RequirePackage{keyval} +\RequirePackage{iftex} +\RequirePackage{tikz} +\usetikzlibrary{calc} +\RequirePackage{xcolor} + +\ifXeTeX\else + \PackageError{foldable-namecard}{% + This package requires XeLaTeX.\MessageBreak + Please compile with xelatex instead of lualatex or pdflatex% + }{% + Compilation will abort. Re-run with: xelatex .tex% + }% + \stop +\fi + +\tracinglostchars=0 % Suppress warnings about missing glyphs + +\RequirePackage{fontspec} +\IfFontExistsTF{Hind}{% + \setmainfont{Hind}[ + BoldFont = Hind-Bold, + UprightFont = Hind-Regular, + SemiBoldFont = Hind-SemiBold, + ]% + % Try multiple font options for fallback support + \IfFontExistsTF{Liberation Sans}{% + \newfontfamily\NC@namefont{Liberation Sans}[ + BoldFont = Liberation Sans Bold, + ]% + }{% + \IfFontExistsTF{DejaVu Sans}{% + \newfontfamily\NC@namefont{DejaVu Sans}[ + BoldFont = DejaVu Sans Bold, + ]% + }{% + \let\NC@namefont\relax + }% + }% +}{% + \PackageWarningNoLine{foldable-namecard}{Hind font not found; using default font}% +} +\ifXeTeX + \RequirePackage{xeCJK} + \setCJKmainfont[ + BoldFont = RODE Noto Sans CJK SC B, + ]{RODE Noto Sans CJK SC R} +\fi + +\makeatletter + +\newsavebox{\NC@namebox} + +\newcommand\NC@name{Your Name} +\newcommand\NC@country{Country} +\newcommand\NC@logo{} +\newlength\NC@logoheight +\newlength\NC@logowidth +\newif\ifNC@debugboxes + +%\NC@debugboxestrue +\setlength\NC@logoheight{10mm} +\setlength\NC@logowidth{2cm} + +\define@key{NC}{name}{\renewcommand\NC@name{#1}} +\define@key{NC}{country}{\renewcommand\NC@country{#1}} +\define@key{NC}{logo}{\renewcommand\NC@logo{#1}} +\define@key{NC}{logoheight}{\setlength\NC@logoheight{#1}} +\define@key{NC}{logowidth}{\setlength\NC@logowidth{#1}} +\define@key{NC}{debugboxes}[true]{\NC@debugboxestrue} +\define@key{NC}{nodebugboxes}[true]{\NC@debugboxesfalse} + +\newcommand{\namecardsetup}[1]{% + \setkeys{NC}{#1}% +} + +\newcommand{\NC@dbgbox}[1]{% + \ifNC@debugboxes + \fbox{#1}% + \else + #1% + \fi +} + +\newcommand{\NC@renderlogo}{% + \ifx\NC@logo\@empty + % No logo configured. + \else + \begingroup + \edef\NC@logofile{\NC@logo}% + \IfFileExists{\NC@logofile}{% + \NC@dbgbox{\includegraphics[width=\NC@logowidth,keepaspectratio]{\NC@logofile}}% + }{% + \fbox{\parbox[c][\NC@logoheight][c]{5cm}{\centering Logo file not found}}% + }% + \endgroup + \fi +} + +\newcommand{\NC@panelcontent}{% + \NC@dbgbox{% + \begin{minipage}[c][0.92\paperwidth][c]{0.98\paperheight} + \centering + + % Measure height of name resized to 25cm width + \savebox{\NC@namebox}{% + \resizebox{0.95\linewidth}{!}{\bfseries\ifx\NC@namefont\relax\NC@name\else{\NC@namefont\NC@name}\fi}% + }% + % If height > 4cm, scale down to 4cm; otherwise use 25cm version + \ifdim\ht\NC@namebox>4cm + {\NC@dbgbox{\makebox[0.95\linewidth][c]{\resizebox{!}{4cm}{\bfseries\ifx\NC@namefont\relax\NC@name\else{\NC@namefont\NC@name}\fi}}}}% + \else + {\NC@dbgbox{\makebox[0.95\linewidth][c]{\usebox{\NC@namebox}}}}% + \fi\par + \vspace{5mm} + {\NC@dbgbox{\makebox[0.9\linewidth][c]{\resizebox{!}{7.5mm}{\large \NC@country}}}\par} + \end{minipage}% + }% +} + +\ExplSyntaxOn +\seq_new:N \l_nc_fields_seq +\ior_new:N \l_nc_input_ior + +\cs_new_protected:Npn \NC_process_csv_line:n #1 + { + \tl_set:Nn \l_tmpa_tl {#1} + \tl_trim_spaces:N \l_tmpa_tl + \tl_if_blank:VTF \l_tmpa_tl + { } + { + \seq_set_split:NnV \l_nc_fields_seq { , } \l_tmpa_tl + \seq_pop_left:NN \l_nc_fields_seq \l_tmpa_tl + \tl_trim_spaces:N \l_tmpa_tl + \seq_pop_left:NN \l_nc_fields_seq \l_tmpb_tl + \tl_trim_spaces:N \l_tmpb_tl + \typeout{===\ Printing\ namecard:\ \l_tmpa_tl,\ \l_tmpb_tl\ ===} + \namecardsetup{name=\l_tmpa_tl,country=\l_tmpb_tl} + \NC@renderpage + \newpage + } + } + +\NewDocumentCommand{\makefoldablenamecard}{ } + { + \NC@renderpage + \newpage + } + +\NewDocumentCommand{\makefoldablenamecardsfromfile}{m} + { + \ior_open:Nn \l_nc_input_ior {#1} + \ior_map_inline:Nn \l_nc_input_ior + { \NC_process_csv_line:n {##1} } + \ior_close:N \l_nc_input_ior + } +\ExplSyntaxOff + +\newcommand{\NC@renderpage}{% + \thispagestyle{empty}% + \begin{tikzpicture}[remember picture,overlay] + % Fold guide at the center of the A4 page (parallel to long edge). + \draw[dashed,gray!70,line width=0.4pt] + ([xshift=0.5\paperwidth]current page.south west) -- + ([xshift=0.5\paperwidth]current page.north west); + + % Left panel with text parallel to the long edge. + \node[anchor=center] at ([xshift=0.30\paperwidth]current page.west) {\rotatebox{270}{\NC@panelcontent}}; + + % Right panel with opposite orientation for the folded side. + \node[anchor=center] at ([xshift=0.70\paperwidth]current page.west) {\rotatebox{90}{\NC@panelcontent}}; + + % Logos at the outer edges of the page. + \node[anchor=west] at ([xshift=10mm]current page.west) {\rotatebox{270}{\NC@renderlogo}}; + \node[anchor=east] at ([xshift=-10mm]current page.east) {\rotatebox{90}{\NC@renderlogo}}; + \end{tikzpicture}% + \null +} + +\makeatother diff --git a/isoclogo.png b/isoclogo.png new file mode 100644 index 0000000000000000000000000000000000000000..10ab612d1d78101480fde5ca2789fb5820580e63 GIT binary patch literal 11138 zcmV-|D}B_7P)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw0008?P)t-s|NsBa($!5_WI#(OsJ4xZ=pe`TF{^xV<(*P!uCG_4fCao1)Uy*ho}hIYv{w!No5< zODsA_F+WUQXmafB?r(X54<9aEXL5CZhuGTP`}_P^WN+i;=Tl#5Auv8{c7W5?*`=$o z87MefWpI(1pz`zclA593;NnYHV^Lga zEj(p!d6}T5UTJfJijzfAUgqfOW^j5ZHA6&ET~b|W@9^+P$twiP5Z zkCvUdy~641?1+$iLSG`VQY5P*xNHePNuA~ zUukrFg^t0+$u&YykeHu0L{TF#K+x0H%+S+SVQhbhkc5nsX>)ysj+U^sy0yB#R$*;& zdxg5c!)S7RN>*aY%+Q;ns5C)O;^gLuk(k29%1l^egNu{d+unPFjEj<*xxT~H*VD02y>eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*04LT-L_t(|+U;F; zU=+n3UW!umTqM*;F;u~jqeT%2p#&5nBvKR&B@hIp2uM>95fF?bAWeEV5{Yy~srp0^ z6hxyUpnzgQA3Vi^JfHu(BvkA=hrak@3!4IAAU?w&^w8Z>UwG~WB# z@4)msburw{?y4T{{znjWG%wkLyz`cjQ9VI|Bzb6+*gD)}h#;77wW){Slo;HNww2>Z zKH8N|3in7N2okEb??AuoyD|43d6MXQ$4<%N9!&&6K(%{28(%e^ZMulItp=ntN)7jj zB5)e_bv3=`ZrvfjhZ;xnSCiTi*~vA9`yXJu1*Rf&j%gsVuKnFrSZ_Kcb{<2 z;5CmvebZU*xCa(VS7k^6`Z*`Ew`OVoaL?hjj@q}gCq4tpRIm*a%6&g%M@> z^F9*Fjk3>?JUlkgfvyIdBm+l#cfrNmgzIet6=TMF$2U%KeB&RtnD-~3;DmrkqECD> z@IeNfB(?l)O-gn2?GzF`MaCDaQg3p7i)l~5rk)OrBzoMGfIm6GCdpLNm=gBsO6$r?amMmptEpukLG5!{p zJ2;6Ek{Hpxo9JZ^!=2^~QE5Pwr^<>F=4)ej6-R~}A&DKpwT7IM>B@Lrga@E_>?#G4 zMEewuT0UgXTtrrxztFcEti^`yI!(%;yX97{u(taq91j*%9y2LRModeoe~C_oJpOOm9L zgWEx^{IjNqFP%)8d#o3YrK#b)yt>m|#(juIlj8pT_wpEn`?^)$5+(d8hqaAc&2){K zVD)7>@;<98Ptz;V>(-+y!)ka(Pdx z@*&mwan9X9{Q6W=PlyW6!__~cO7HZR*zHe={y3M}Zn4E051&k8cct4p{1sFb43E*U z>(js)Ac0=^%+DAFrYc=l+a<{YPWJ|%AjNMGjb#h8z3>pfTrtyy2qDS1&*`#elI-Mt z6?WEU&p~wyMWCtBm05z}F`7PUd~Mmwu^AlHIxtPMQbVMW9W(l>ABsB~4A&U7&{u4e_yOSS3~kpg0gXN%Z(_ zzVc123&xPy%M~?x`zT40Z14e9@~gn z_b8Bad>V9yL;!tN)o?$ViC7xG5@}?lp&+$V|OGbj$KYC;)R#RLf=90 zS38;>qH$+A>829>zZzsX?D)F!h2{7<+kOd}_9WHv*K+n%6<}ZY6=tx%a#>$WwHi1{ z;+w5MUwQmD`y0~9KIN85-+D+6LdJW1#DCVW+pu{R)=hY2yjPyPw=X5YUSmm;_y_iv z-j-8oXk9Kzdi9-&J@mmg{= zNRo+D)*2c$l4STMUryabDx(9|!so?3f* zO%j8gN**dCX^ImPOR0Wu;ZCBNBtIhU%F%hQMsR2ZIk$l%ht`@}rAcz&8_avN4CWOf z8RM}lIffP=b(74}be8iZL02UerEB#jmHrLMA9G0Jo@K9d3M4TQJPA!h8geJmOcF4K zJ+Rr7yOM0j(ulZ|+PJ2(l=3K&%rl6g=c2r#BuR(eZnRnbdnIAXKH3wr<0Nt6*X=Fo zY8yzUT990gr%&6^oq(IYs(5%V}CNmhH-K#(L; zj~H`te>%^fdWm#pDNBq1cV%m+497{*2Vdo4>1rV3j>hzQ9FkCnAbAjy3^r#XNxn8` ze*wQwTK~z4B>y3KY-R4@{`|83G$hHJ%vwN_+&$)O*lD}x`x5t)#JS8y$(DsWYdKGn zs`w`5?G-k{cNA~Y&hbbR(_Ol4fGkPcu@)-$;9Sp}L=#DfA<-drmj?RpUJ`uDAxM&E z*tLKptc&rMFjM}05a~)ScB7a4U719kN@08o7JL?%3*Bp>Q12M2wi1%R=aEF;Z>M*% zB&orw3^!i4QzU{(9Al_c$L;?`^On_;{>uKZGa*UVe0C)u3DaH*E@*tK-U@$LvUvJ) z{r#1G;*8H3lAwL~K81R3lWOR>F_U|Xw%tyDWl3@qtFr4fDL^f|79{z`pEDzygEsym z{=G6G$tsNvILtCh0@Bj&yh-i-DL=D2vZ4>^?G(=VoFNISrrxAb56G2^>HJG0JJ-Ph ztt1*~ON{4CqLC!$bOre5OH2~cN|HnJeb)n*Rk}iXm~omU-Eq&=QQ?xM6VwB56RDH9 z2H{&YRR*z9WVosd_{BLyhMeG8HZOzUaH`y?fSe{MFC&-5;D zQbVP#;P2a-Bm-hp8V)rU9nn+~7)h3q0@M*1Cei4hL`^T)_X-F}c4};hRuYY@zz4i3 zYHrC;$ZJiK0wEd5=za60aFV-NtE^^ z(|saW2S`E;V0dPwsT4VN!VUN%_JeR@N~t%91ZyotDqRmC@lC! zZMcE0BtQ~sCHa9*5{SOQwy+KzNzRihZ5<rVlap2sIOb1I^VCQp)QnYDQ&0Z%HXOZb~fUL{QyVv>O2lq^Zm z=ka|?vj(c%29ji3a^wKmpRa&)yid6s(jQam)j~8j=%iHD8o?n67=vdR>wsq3;~d=( zGYCmqaZ1=B$#0}ino2f-l;=)#y5 z%<^D(){p(cDRTIoO>|0dNOB3fQj6V{@x?CwZccrL)H6iAGkc>#e1$DTIy$WS4$|LK zdzom48ju?S0~{j>b-Dq)@UXER7Yswv@jsJck4su{6eEr-(6x9-{}$r8H7tm$bBVu-JuPYe%C`*6#qB1N{{ z^&agBIgS|B1&buwQA1aHy>PH{ks_NW^ru6_yJ>eR#_-?qDQRhGwKXkOpnZUgDg-gm z(U1`ZEo^HbE{5Q%_gm#gNk@Pm>vjPqL+FCFcU&KKBBta2`54V%tjS{Y7 z^7dXt^rS=*wh;}7Bm-*5bfulq^)JJTdxEA7wQi*wwlEknP+o*S#mZ_*pw_ptNotkD zK$6C0ANn;Rdxu0omxdtU3LZ(cBNAQdU^=2Do5#0^?HvAE-o%^C``!R_=nJ{n> zxe4j<*zhV*Z=AuT!ax%3E#qhVG?krn)@{{=xc8|Ao{(gs<0R1ryl?4AGyNQM;of8% zU*3DrR> z#PKO~!39D`wm6Bn$2|b)3msoa3j6?9x&!_Jjt=IIMBl= z{3L^jtxzAAv4! zsXcR~C+W}Q9Q~kC`#l9N^ISOX?f;IiSCg3qs$QM}>g9`?p4`kTHQ-He=l;$0!gAkP zPl?ql*!i&sy-oDsiJ6}Gx*?noCY{+J5zy&|_xxX~ksL3(1bCf^r{&@}qoE?n8{)x* z5Os1YMny%v%a3FnJLH>2QCs)-IQY^fdp^CKLu!L%??!En+EDRC7wN97m_2mlZ&4## z3Y`H{H^%Qm`Z!4694eC3lO10Kj^cU2djaJ|O7PVV(iew{B;!;^7l9)fBzP})^Zy#8 zAA|G^Jw$j%b#xIp0+Cw{-2I~mox_mcK;{Lk>E?)}(N4x=ZAbk?-$)^a~s2}dx`iJ7Q;JsjAB20ix3ldbGop1YI_?)Fps6g>OJQ+8S>Y zH8MhrAPjg%@LK)@WzjP>`g~d`LlO*Ia{N zshpsV7}e1gF6`Kw^Mu{#q+vxrJw(6&b7;=o7t)Ul+UTGeyVDhk>-qdK}mgfDyx?$ZB-yDQ3gKU5?^g<^;~#8rJ`;rVdSmVNXg zZki{K3cR_{;$Wyqg6@^jp9%WF8YyUFit6aJq&?ZwGL>ru0pLiBI?(+sASL5)0vHew zO(Ao%R#{J!{pr(b2BwxZq(IpCsbOm-aJAAygBRhU82=0XnTU4L()W8+2eAwj_YHN> zQLGw%r#f;q@CHMRo_c7|h4W1Gr1Xb%6SC2V2So9dWqYlWY{F^K7Y_2yfC~xwrdhx! zC(Bw&FgVQ`kGrX=80u{oq@&Z^pRGwE>3FZam2&qj>f!vHz``=viTeX@urQ$kIx*67 zCF}zU#uUf8=n4a)_8@tl(=G8|smEqm#{`NlBGro1Kq2#~KpUG@wx|cgKMu=ajF^QJ zd|a(AUd60I8)#FGz=Z+ba@6Xg zWgq2M3$_fD(?LP-xbYIt+$dO$C_i|i#7jO8Lg|X(MHnEVvEr%)+?W%{h57wNttyfP z-ERzl^f{28Z2fk3rb;~X1zmtRMbCeZ;flw_ZigoVZwfq-77mg?93cHKwW_GH`Z%Pc zTP@U;wGNjdWiFl}(zH``YwjdQt*r9N=D?dNgd{-+zjv!ueT%bVpaAa~NEaxk{U-6q zr>PnVAGLj=%cYDbrx1;o(S>7H14E%BNlBRWht;aS3{}ye$!19Z6Vi`clSE=mf-yYw zZm$z<$1bmV!fvNs6I!x`jwBcjr=40=y!pQe((i|KypFMUs3Wr_flwp*^jTEaj*)|P zz16iLp#YK;4qd%_Vcr+0RjmS5QQsL&FwR5zSxb`Cka!|&pb|{(rRSgfV_Udq(-{;x zlC**Ml)g}@Dmn?k>+$xGj<4+_-3k&H9U&IlKafIzG{3xVjx#Y@n&IocOg@94hKn=>3;*r$mHP;;Z9pKai!ubQ)71OdREGF zw?ws+RxCJj-`9W4SzcdHues~nt>x@mkj1v#Uu){)dFQiC#k=)P$PY<#6ZBCP6>(P1~j;Auv8oN>Gu+0GpfH^gVs#wcKuO?5!t4W-b;s? z>>IEfF3?}wR<(=@(`&384rM*;W!2kmZ_28oi@AMnoalR4nGa>BCo$X<5aVZ=aloFW zxJ-G(-k({I?KmOTy4tk$6B*S8N14L$5=E;6jAn9*F_2$`a*eMsGkxgZS3FESPUX#Oql!JQwps5YR~PENHJw;6T|#E*EEshRS;r#Hpj zdX)7H_4Jg&YkQvJco&FXajWbUxpwJ=9Fyd%fI&`DR7Dm!)XJAn32xN4FZNkfdw{;C zAtZ@6HZzy+ZmI>S_0AQ{k@sf-5wjL?j(Bhj8ZEEU*(t0HkiegE$VqV({)m#}{L z#pdjK6}wqh+m7~V79=_8wrC`ah=(fZ*6u$b zpkk7h=1&zpzQtY3%*{oZIWoaM|@IfNwLsdATfM@ZkfGWyAm zgSrK7(J57;$_SyFQr^1FxbrzD(QnYL;F07}VI!SwQu$xvw?RZO~9EKb868H7%ZGlfs^GQ7# z_gjQnBM*v22aJasOSe9d67D~$)-@$;JZ9|us;^pGlz+)>_(2^0^X{?bEfQN`F(S(;FQP>3&mZHc9BS@4TyCzZBVDQ!4+5yrmy4TJ*Z&d00iVihI$a zXwgq!^cJfI64_kSA+I@%_R$4`E#$R^5oFx|i9Ws(E~*6E!wj92%qV5t*lhy#9# zmw72z)>=qlk=lB^QPDp9vr&jv0%#27;KqwE_M+K<5nN<`_J zK%Mze=KBj3OSLPl+uWMmzpWx7cqU13&-{@=Nc$x$Rt@Pa5lLd9s?qV!d=Lpq*{Dz` z%Oyz@Cn=|qTixeTYsK$TkjE}j4KaGERsNI)z28? z$R?6lI@YIhAi-eux8&Q#ZD1SuYIafN7;_-GMw^#* zkjYfWzaJLobicPV)U&*ac~SgVUQTc7DuF?gy5xk^jJZ1?%XWQg83cV2&IJ4gJ){)K zK`kWRPB@1nKtBrI@URURi2J3R&cx=1NLRBD*UCApk))5LN;QY9$JpvSxM}h4)Zy1S zi4%ym?E@p}1{oyT;!oPn5e}23hWZpjq+ibXN5FN^x0rDqNgr-&W=nHOqN9y9?40HO z+)*(~LSxlXtu*WQUGI-S*$pJ!-J0FZ0QgY)H2yINl=R+@K@zgF;VE^Hm}J!VMobb6 zg%@{)B!ljrzRBLiKFc8q&IJ7Whr3QY1}45qr@wa1J5+tb$-^p4e8Ll#KwmGX6ID6Npp^OW}JkmNFXuK0j zkG*T7VoZbCK(aw2?>=4=-9f3yd%gj!erdff21#b>DnQK=SlzhK1Eae1fB6#Yz`b=v z%_cbJQG@Zv51SHM9l;}TnA79SOV)A(sYi`pop}FIwmeB(#9tA>qyBB46u2Oh_u^(I z$xlio!Rb|jz^^`;lzPFFLe|>^>8}lgBqG7cW!3)rqoZSt0@K5MdkOE?%r?f!u9jk|nP+}x<$?F)JI(H6o zQE{ogLT-?OOy*ZzOGq-2nUvVoAKq^^QQXp7w4Sdk>dO^OwKT+jylODzzjGKH16 z?n{LMb^y_i`uj%Db|p28)INo%;+KbhBW*i0(ANHpUFLj)C#ow0Ti;Sl1Q*d72IAQhYFNr7`(Eq*;Hr0IhsiV`p6$d@la)g2b7m$&@iyn2!XTe>Bjil7Q||Sf^{~l4f$8}5a2(yyU)QM z*zJ4nuOTwJg{#XyNhzGik+KTvtGrI{pfY$~NT5;&z;>z2(R1=Idb z{@z*Ff$4N%{4+05$8&$sInpfEfno4x%qyn`(J9wR3H^+EZSvskx?B3`W|Dx5Ttz=) zAVjt%30hacm5V)>3r56(I*b=_V2?J+LTlO)+-(0~GcA>u1KT~Xfy5&uC57i)1nd}m zmfm2Kke;nc!b}nj`*VZR7!S*mgyV?)iriyFXl#!1xd@KI%v*Rqo*(7?bjHqIBvZbp z?d8z*c3ccc1TX-s$-Rs~$1EIgTZ>^Q(~c3Oi<)+TKolqQ9xD04Gw$%;i)a_5OO`$`=JDlw;<>E^e?lDH-n5TQR+P z#6AH1^53zckrL#4rk z6-BS7fDZR10z+P0VWYbRaP{@{a{?<9ZgY$J(lFHdDVF1c{!k#rZF97jg<&T=B*l}LKE+Qg7D?7X zGr6pv#)$lbR4tQG;~c3b@<|zMj{Kn%$xwt;hUusKDbMs@V(O!_LFrMS7M1?Nwhyps zur8dgWca!K4|XJQaY5GOSpvi$@2UK(A|EWdN*zw&0# zRp-I?=q(iL1sFn~EWPke!K5c`J8RhT<)-4Zt{AQ^j&-_H&~w+nsu(vSrD5b-P1A zOICQs?KMp@ofMpLMi8Y*pYKaC{W$6yqOzGahU)h!UhJaT8PFq^Bw1nj{HBy`yQx8T z)dx$Rp<7x{KizP9*134`;)i)wP$Ot(TZ%y>q|hK&XCdXDGP)$9vALV9N-hY{_4|3b zjS?+NUz{LSsgdDXuBWA{>GOOJ*VrV{eoB{W<|F#)6&SU+k^SgP7HL;6Dp+_(Y7~6n z1#6O(EbY2LH0laaTZSdq8;+E-yGc|^G(Bs_F^Ot=wBPEFLlQY>IO)c~b{EWLxMAba zxbNuo^4Z0>#6E? z`({A0-)%M%7nv#n8M#(44) zEsPj{O1BBhWlajZOth2H;VWA>DICrbBrSY|PpxBo7wy^;pYxy9lRj=(kVKnlu_l!{ z%MpYuGniXmA1xDdwim|c?0`gMWFzAV@31I<*wJn^ekek!Zg-#E&JK5q|@rV z#a54wy^2O>JOy|Reda(+ViC3-)|D{`8!#)W=%?BTr>{rOztNe@dfex)R2HB8R=nAJ zFzMN%qNOB*_>MZcJB8F+&~L*fMxl+9*L!f1cXv`@Lp?a0xp#f{yD-X9>iK?tp&QS1 z2(G6Z24}8mxX#Z}B?}b*1&+eJf_WEC#S4`?P~4TvY+6jD@T8OHSv|pHTxqFpf9X(A)9Vjx$6{2G8U`$rLvCQ>VWht0s%7Nyzy7y z&B^0RUy=054^-|;0&zh7-j%~Weg6!=9q=kA3@H?F{CrN% zi5-DA7eOF^xHGMsHKd5(S^bBd^8f$<07*qoM6N<$g3&*l#sB~S literal 0 HcmV?d00001 diff --git a/names.csv b/names.csv new file mode 100644 index 0000000..2020800 --- /dev/null +++ b/names.csv @@ -0,0 +1,8 @@ +Alex Johnson,Sweden +Mina Patel,India +Sofia Garcia,Spain +Jan van den Heuvel tot Beichlingen, Netherlands +Valgerður Ólafsdóttir, Iceland +李明 (Lǐ Míng), China +王芳,中国 +O.K., NL