From 3c7198e0117da085aea2c28e20a9ee62d6d01217 Mon Sep 17 00:00:00 2001 From: Nicolas Mattia Date: Mon, 9 May 2022 22:11:22 +0200 Subject: [PATCH] Show warnings during recovery and skip validation (#634) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Show warnings during recovery and skip validation This addresses some long standing issues related to recovery phrase verification/validation and BIP39, and (in my opinion) improves UX a bit. The two important changes are: * Warnings are shown during recovery phrase input: these includes warning about words that aren't recognized, as well as other not so easy to spot typing errors. * Invalid recovery phrase won't prevent user from submitting: this is pretty much the first sentence on [bitcoinjs' bip39 repo](https://github.com/bitcoinjs/bip39#reminder-for-developers); instead, it is only a warning. In a bit more details, the `inputSeedPhrase` page (where the user inputs their recovery phrase) now shows the following warnings as the phrase is being typed: * Unexpected characters were entered (we're expecting letters and numbers only) * Unexpected words were entered (we're expecting words from a list) * Recovery phrase was generated for another anchor (already existed) * Incorrect word count (we're expecting 24 words) * Recovery phrase is not bip39-valid * Double whitespaces were found (which _will_ prevent the user from recovering their anchor) One thing to note is that, aside from trimming whitespaces at the beginning and and of the recovery phrase, the implementation does _not_ modify the phrase input by the user, and will _not_ prevent the user from submitting a phrase deemed invalid. As far as we know we've only issued properly formatted, english bip-39 phrases but we can't be certain. This also adds a bunch of tests for `mnemonic.ts` which now also regroups most of the operation on the recovery phrase (and fixes a bug or two spotted by tests). * Don't jitter but flash warnings * Add comment * 🤖 Selenium screenshots auto-update Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- package.json | 2 +- .../05-single-device-warning-mobile.png | Bin 45853 -> 45852 bytes .../09-new-device-instructions-desktop.png | Bin 76114 -> 76173 bytes screenshots/11-new-device-alias-desktop.png | Bin 26483 -> 26511 bytes screenshots/11-new-device-alias-mobile.png | Bin 16852 -> 16869 bytes src/frontend/src/crypto/mnemonic.test.ts | 107 ++++++++ src/frontend/src/crypto/mnemonic.ts | 171 ++++++++++++- .../src/flows/recovery/inputSeedPhrase.ts | 228 ++++++++++++++---- src/frontend/src/utils/userNumber.ts | 18 +- 9 files changed, 464 insertions(+), 62 deletions(-) create mode 100644 src/frontend/src/crypto/mnemonic.test.ts diff --git a/package.json b/package.json index 9aaf0b27cf..7c6c6b6cba 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "generate:types": "didc bind ./src/internet_identity/internet_identity.did -t ts > src/frontend/generated/internet_identity_types.d.ts", "generate:js": "didc bind ./src/internet_identity/internet_identity.did -t js > src/frontend/generated/internet_identity_idl.js", "build": "NODE_ENV=production webpack", - "test": "jest --roots ./src/frontend --verbose --testPathIgnorePatterns=\"src/frontend/src/test-e2e\"", + "test": "jest --maxWorkers 1 --roots ./src/frontend --verbose --testPathIgnorePatterns=\"src/frontend/src/test-e2e\"", "test:e2e": "./scripts/with-selenium-standalone jest --roots ./src/frontend --verbose --testPathPattern=\"src/frontend/src/test-e2e\" --detectOpenHandles", "test:e2e-desktop": "SCREEN=desktop npm run test:e2e", "test:e2e-mobile": "SCREEN=mobile npm run test:e2e", diff --git a/screenshots/05-single-device-warning-mobile.png b/screenshots/05-single-device-warning-mobile.png index ed3df90ecb3343b5c97f0fc99815ff0685212d39..491b65be83b1bc3cfc7ea096b5c75cb1c50fc2a7 100644 GIT binary patch delta 24483 zcmbrmWmr{R7dDEtq;yG&NT+l+(hbtE>5wi3mb7$BN{Fa*cS$QLNTYOzbk~{tdEWPY zb-rKchnMV&z1Es*%rQsY_dWQqj+nKMSn)*@GOVANy{aB)sx>IqX@0C@So_NAE0zWx z%6JhgNv^G{js{s3?W4r&YotW{s=tjtuq8(}e0>a(-1mJ)-u(4X`u#ggO+zE0^SCeW zn%kk>kmJ5yjP)E#+N;fFON+>nZQ;|IBl|`*v*k*b=mtRntgxmg`SRwtCpz_M9!iQxb<36SVV9CHQJ!sI<6$Z+Ck#G`vq;=4%Cmdu45L22vfLW!q5+cA&)D zfWQ8DWMl;gJ~A?dSq8%9-{U(f>Z&?VclcLFxUho1e`P$;%S#*Ual>^HHucy`DqYJg z7Bw`DrsOf$(&y&ol?{)jM35-pE7mD~Ur|@r`|Hby!1=)0^f-i4nkq0&TK59G(`a|j zNW+uu1<7$WmdR0Pp8u;?WxXO^TVrIST$Ri@4&`zT7zk{JLY*Vx2$v`*7z2!MT>iyL zZB>=D#|budCp%Ll0RazuE{}-FpMS*-Gk=6fhT>d)$ccx(_;(%`4^P8w!_-0(|L7P~ z8$;KV`;)tfsRu9gv%1o6$6{oX$2hJB(ZL-Lvc+2(%aHfHVh0*u*~)8aU$KR z+*-0at7n{s!JLKuhJ5N_8pnI~5m$N~I$-6|pMJ2Z6PTXMcbemS7aiFtL%m;xn3Wp-_fIqQ0O9xbc`)?tMN7bku-B)L zAGtE&x4u48Z~R-K8s^b?EKBW=xXZd=v^&$3HBzL`uZoVKg}w6@6FG7NEw!PBGP6ib zC;r=&n5|Qo6Fz)xb49;9-X~n5#*p)BzP`J}7Y-q%9HS|-fI^(!4du&vkUbFv6 z3@Mgg{_{lWWfBV{`I$q(>HF0n&%?jBS4$TUO)q@jq!2C6i>{$ecg$1m&DP0US`x~| zkOxwXa_Lw46`EY5eIFt5|2T9s)RSGhfBe$aB}QqkvJkW6Z?H9Nnt>NRX}W%IcUQfy z7gev^M8`h!!-tsocy+!m^<7iy&yHe8Qquw75WHj7q2Pvx~ z(+8;y(~mQoa!)Cr8+P#(N~U$UIayc)xvunC?9bnF^72aO%(t33IfeGc<#bL>;qJ{f zKcdcUf--V^2QbaAU15ETfBzuYt}h27T|W`IN$lr3`8%QY%%O_CqL%hJWy5oakLDRa z8U_EWct}|a3JRu@((=QJiJL(O z6ZF~4^mOxy{xx&~Ukpjf4!0y1@H|e3Gv)DeJvFC5ul)sF(Klyr%X7s4$69Uf@1j~- zL^w4Ib-$QH-rhz{gb@#JuUSO(x_&=yeRJANe{(mb6m+}u4P7v8ZK;9 zx6wpI?SXxikt4zfR(z2j<8K(Yt7k#{y5-QAHNm~3|AvpBBab|0zOkF2lwO`_4e+6nPtTc0v;IVNQ! z&rH`_9dIQyL1{UcgP3-2%20HvCoS3GXC-~(&G|mX4JN<8lv|sNB*_4Oq3GN+Mm1Jq zgF>td{-(WGvUj3|23M2EU+oEV(x>A`P9i@MZ*eTFU*YIYo%xJhwHDzN^y|0yXy}BS z)u<2DA4-(Y6JmsRJ{jLu$x~-^rmd0CVkC@AusA`1GRPx;jP{_bXkd%tFzE!2lGxfa zGDzz^c`nO)BJfEYMb0#r$x>VXiHDTb$FVDl-WF4g9(C}z_q04xJ4!xg=w7?OLs|5a zNxpJT-fA+21?dD@pE!<`q8sK{3t?blrbOd%U(|R~6x(HunuS<9^yrds6jB;wE;WAr zir(l8`F>})A7HyD(9v%(CCE_jr@yv>eVjziyd2}rN%qFo71tiE7ftQnEQ$F3ePFuw z4et72c3}lh1+C+sUVCyqtAB1;U%uadkK?^hUr{Gr%`37$-H6HmN(KpG_ycBFqq{l6 z+odj%gTuaGAe2A2oKgE`@sm}0@rZ^V7x#GoORI>c3Q zF*(eYiz$yAZA8(7#Z!Dl{O~?ImU0eCq2AnoX}A*A6Lru-VhS6fhC1ioATmT#KZBeX zY8^D&>BXt`5cld--%l#LZxCp7Jq={71CRJ50js|+t#35P>n8j$lGj*-&V=*^E zTG~9Yzj#d^TO|is!1omu6)OV%pf*a3k98t;h5P0P++I!B9Ljs_&tqegkLxw=my|eu z`Xtgh=G-nh@ZKt$7ZVfH!^J5M!YSK(F;?(C8Pcq9-{5=NQCL=a%$rRzVrtem?Bw>K zFeV23vub+u@82TGsHm`z4VOmqmDL}=eA2J*GXriUCC`6V+u+tX&7qnG)FMAqy)d5* z*ILEA(>E~a92*Oo=yxpX%eQK$cP$Fu@k>}uI(jATLAW`PJutaxL{_LB34Lha@7($& zd9l93krK&cCSX|4eqcqe7b@1v^XfP0q?c_Q_Q+KRwSV^y&o+gl7rynhuhB}?-mp{T zyUTVzwQ!t2BCvq1fZWP62;Z!wf#+oy{?Xy3l(Ub*Z2Y6;sa?0ZO`B%xnD%ijcO-Xy zWGh*CysvcqWexJtN;o#Ob2w1mZa(lnr^0$jF|?-=+iIt-*l@~LWu@rngvj6|&QQ<6 zAc}Ecew=`3I)|~-T(WmK^UGJs0GQzD~xJ2A#Qx7+vsJ3lHNj)gq3}>d7vmv`TJRu9It3!bL+3{G78W2c0Or-Sn z8>ED#XPROrz&o@JbrI3>iXcgpX7Fn0e+!7gtXmnaF=cmU-V6S6`BB|c`-iY?o!my` zc%9}ro#)o?hw~-`70wF*&z)vv%9{C;OXo;cR+^&aP25H!OuUcPXI~@PKJxuTQq>K|=wD8H^TnQZD2vv^Tj(o+KYb$3%mX5F<`~jVM$quO;*+V$w_sOVWA@ z)&KMl7ivjCY0{?axV`=Xo?5c4K5v&T`UW*ZMsvbkov}qzU;o|pd6I^KLD9LtJNr)( z_K+uH*{yQF<5xG<%-4!|FP=RuD3bQIX#}bFAE#E!F56aTBsB58xp=5sW)Pf}Wz@Q# zsTHW&A?9HKl5b}KPqD|O8hx7%J zl9UvyzRcLn$|+RRV4IfS2~m7BB%>9aCm>)=3LoZtKV z{mikQhse|Qza1*5iLIluJ0PuxCVV(wkWM!UtjyNVoC63&50iW zAvZTq%51`_WTcIwcyC6~_p`=L7)X>RImMn*=77cU}a_1%t-#$Op4 z8AX5mNY~oabHXk8s)6rlF(DKUjx`C=lLC(7cVR z=J~94kB&{zHX<|+lE=a6vAlr+Il{NGG5o)OZ#nHg^4m|A6#lHM_=+x%LoI7LZbg_% zl6iHy1M3WN-JJWvKROMfel!LD#|H=-!=X#R8#xia9hg&HT&&pHuMGY8(UH}7T)A}Z z>2tPgdU1LEL{wB7wp#@`wVB>iTC6O)obCE1Cnqm{Uqb3`WW|eG+SrLZh)RvuGpPX& zjsPLL|N2j*d+KE64-12~8^aoJS6aW$WK;wM8iW@zlG?N4sh2-{+iua+H8q2J?yrru z8r$#N!c3t*VH3r=xuBR<9C4nmc*xE^Oe!8wVzNB;+|;N~6-u1KuOtPbm`>yd9|Hpe z0io7@LhAnR7L-=lN+2Uw_AazU{QT*DudGK#Oo#-H`m`!N{?c?M zK?5Nk6IAI1Rn&*4P9aavOz7}W2uW+_R##WMULNVNUir}?eCzMWxV=7?Hd99jhAw{o z6;zO6+RQz(yv091y@0)wp%V!>A_QlWGB+aTs%br0WJHr{hm6bxUh+ z>eJuR#{Ft&s7sPZNXqHla8o0^ZT2Q`xj4`$n6`Q>>h+k6j4X}UT`1$ZlT_9KFnlqj zS1xO9%^;S+N5sy~&dI|gt2rk6SjZ3g{_dJXx729Z*U|BO#7eAYbfJ}c61qnMd!*j% z$1eN+mY+_uP~uBL!P4FB^@YchUu$21{lAB+Qa_s4p-tL)onkQSkSpuMoFvU7 z8ZNGf;lO#Nr0CkNU&V}7)=Re<))V3=vP%7u6Q9>|s4Hut5fRbR zV-5bgx-S<@=9ALEb`@-Z_8^^%XM+3rH_xN zVs*vG>?K`drmsBngKF!vh~B)G3mZG$A|o3-*{UYANOd|MmFG!be)eN+G`}x>>z57J z*4CEd9{ldf$?_$A3{hKWAB3~c)VQe~;}r`AgHUp~HbzXKO7#W4~Arm_9@>U zz&?Nds<3pq(&wLEyHGmiV3e^Qr9@5dD;n^-zN9n~#=^n^MWqWmupdtaN-I_lXCFt5 zxoR62^!wdiTJ#RQ!C%?gD6eV%4+6o!#}`|Fo3O4pc|Vx$p0=EbU*J@?fAIl+gC_|J zt8tVfKKf3>mbKr&l}QPCMh>K5=5B6oX<1p18R+POPIDY7CZ}>`>F|cbjo)q@m~$2$ zs6ve(vTTkO@E{@u6V6VR=nz<2Tfd8ldD<4>Xl?!Z=uevQpQegpLlQf?t&+1}dBH3p zQh8%5QhAR+&FR8Kr+KHZJx+v0{Ws5J1_?pPbN8(^_4BSZ7CnSbKEAq!M$b@V0d8VTm}!gtq;5~8 z&KFfmEb8^ZcS?AQBQbD9Mc}`P3IdgMIHS|AA{`}tL&FuYt1WwRJCGj;*{HmOLn&0= z?mLmce;Zj^w6})jjdb-oj#4lTq2=;guXbxV7%3s@I<82ZGs#W z$x>0oLk|$%6BDQ1|1jFU@#lYK6eqXCS33I9*S*GWj$F0WfXNuAP+776$&LRW`PeTW zb zsg;#^{%=TXM`|6n(8cc&R!IoI6?OJ`dQPp+tX6@XG&3_}yS4e%eYc2a1~NCN9rddy zFl}!;IL7=okXrsTSJIyoEBM`aM$mqQM@S%ep9j2q_bw62ffCb_LvC&m!A`9`1;&(} zMbj{eii}SwXe`Z#VS?w-JbQ-5$H#Znw=-4#rK@C?)me6K(+;IjA#!R*)PA^SNL zRFoA6iV{n@Z}#3d*&Hu?vb?;Uka&a+vbMm|PIwqLg~gA=a_u&{2NK%jRyTLoudp6J zNBAJ@DK%tp-zqfU=$<<94dHFzmGeuhh3Sm6v~S&?c7sEz-Gv*9n4&3#8kk$8mxTE0 zY+vIg_Ly8+eXIIhplMjwnC#C?*E$f!Mt{8_3y!c$MZNr7ofF)tBE;scPy{$||1^6e zAvB!tquswv^0^hlKHV0iS=OX~eYzV+&TD^wpIUTDw-?M<&N{0r!oh5j)NexxZA)tn zU$mqL>jd6i?>iv8<$}pc+By_hso2>ul^Hk3G9^9h?C6lZ^C>l`{rN@B`Go17kC%-N zduQ_gZN7XQZ0XCf&R-UqMM6|;st~eY;+n6^mfLFas3EO2`KJgCIayeSb3$Kriir`v z&ClatZ%^s@@<$3aM8~j=@>_8FL22Q=(=5qVWivX; zC3K#LQ@WqK|GP2jnOcs;-Hk8#TzXoX*+qr9!0TOsmX_Wp(Ap@>@!Cl^42v=vr>yMJ zB#{)TbS6vZ-bF<8WX)8M{{_G?i_~z)#~HMt#pU1d7RZ|b-*t1*{G;C41EechPd{%O zXTW14quD_7x82<`SqG=`NenSuuXag&=QN(k(=csOy=OO!sD#ONP1K6AIv6Z3*xb`G z3Lw)Zpi@B51r=f-Lj9`+bJ4mkAG_?|`NIJ^hh5OeS^jH2u-)`e zpPKhXPJnWdb+%ccYj64p;hUw~wqq*`H|IWj75S_z!0D zBHdmW-zyxA%2RiO_nE8PlK{aG8S#NZok#Z<%njK69g=;0@!+B)(r6(J?cx&6Y~ijQ zA=&>Sm&c|VScKe?p(OzU0qf;DOV&ftC`=Oe<%5KL1cc(*+R=O)Z=W|R@oH5dz)Zq2 z|F>oq`nQ{15Yp>zg~U&GXOP+g?hIg4$S>Gcl$9$ie@uaLx##kjWOYFpJyZ&w(O|vN znzm~HHM7X|xhW`-0uvM;Xz@<*4{YuKja5peVS*_g)R=JS0BOP!J$hu+qIlc&0|n z$f%!P{aGc`Y;rgKt7$ovGm61C&YOD^4Z4I}a5&$;f6uAs>JTMF8YU@u>D5H_+@g{c zzfgMx*OFP&z#uX)5&x3c-m`+z@ShHxu6@2Rc6ZmYz;rPI>Mg@yhj%WtDGFwGg*R5Z zveU6KJ9iKEj$Qu?bt<(nL`v#SQ#}jY4W=)z%4ts;{!nT0?(z{4N!NIHh$q_sTl=c- zF~jwQxUd(ip=I>Nmw6)qN3Wd}1cTn8Ax4>GaA>IGu0ZnkwkyS4n2$$Gt8{;NT#~$* z8EROq3TqVnwoJ1MLjE;c%}8JC^||k*n-+y*9Dy{j)l_`}=Kwg>n@4gH$@Oj>0sYPL zm0wAXg^JtvKS&kElCDxd4;8guUw83ziaRe^DBe~tB8np6DB6C+NZ1OCclZf#(WA1D z1H87cBZ8&!)T0Rva+wG*dKB_d4A7vjwFY=)e4hTRl|{;b{m4J)NX9jKV;bZNN|jFZ zyHpnLu*B(Dxo!LcSk~*o);B*9hw$u6t#NCio$&4C;`$kDX9e59b@W=@>hRh2Q)$os zi8;q=etH8;4-=DY0}8huzLX(4$LJ3H2;@dzU;7-As2*~sfg&@9GHV$5)HoD2YEcRj zEU4inK-I4>uy3hdi=CfurT-_uqxR_z>{Y{TJ4;+BZB13N6t%SryPS>FZDN+`Y^-3L z@|NQ;5!olcH+-H_6tly={vTjEfs@olH%9|}pgpjN$l%2R$;4~|03N4PIg5*n5|&s2 zN2^S2#!ZjKo&J=JvAaThSJ;kobx6-*sYgklL^Ni^*k!3ucusBy1tC5be2taLVH&DH zkB9)^%WtsFN5KEltF4E6ic$tf%Zv>XezSF@jMlTgq;~I`xEtzmEW`0n>u4nXFmrZ& z%+cQQdoX(9QYT*yJ2+!(CJQaaoM)pdZD#VJPJGt!l~7+1Vkw03x?4fb@BS87K}DtK zdY>idE9gHL*C&ZU2Fi-*Xp*vk8*0P;$p{DIw<;?Zb>Po})ixiEo4q)Bd3wa}KP`4Y zG!^l=P~WSge{Zg`IoDQ#sbkJp{!R?*w^8&k{cY^Q<5+BQM=1c@_?U)=_$dZ@MnJk+4A7{7f8%h$fX~$4%SkmxS%_! z?%wW?&I@92)CSa)thZ+rHI6UWNvk0cmeHopHo@}{^lLTxK)6bu%;#-h7)Rywy?(s#;g83mpF7slPTCjwmss@Lv?%98%}uP^+wHBQ0h?FNV- z>MMT`dbxK7A|oRcQ^%Dj#p*sC8yhR9UmDu>RC$~V1tfF+_Yb^Wt-U@tK9#qY``iy} zQpw~?6IPqak{)vo$0@TNuP~pvIJaoG3ojF|JdxWV$V+5Hh^vd6$sQ$-~>z6NLwu>O_{UM$%xbq(M&mzl4nD z=lv=c4{X3%EOyIY784^Q2Hq%<>wIm_M>KOLn+$8)9k|M%FkXZ#_)_z5k@!jSc~S!$ z(lTLy_O{xXdRG-U0}vX}Fkt*?ZY+$8v(XZwUVm*oxJ*PVxM8)q^O%ReB$a}a+wu`O z4WT}ANih* z5+FuI&?R5W!-o&8c&T6#rtbNeO=&}?=6>rI9_zFFKl6fJw>@ZH{eBmgX{eWlE&9bJ zpfD=VS*xiHYzuc(Qugr#(WG8?X=&*w=sZD@M#mt83LJx!Q(|;W&K|3-x>}l&g2Je^ z$WQu>mlxkokQ_Xkfc<%Let6dTLD<_By7;b9aP7%q(h}k@RaQ+N$CX>&_@HRmu?%;G z=O3duIXZ&6pCcseVNVRjDCnHJ5s25l#8kF`b4na%?R2rKx((~uyd&N{KY1K08`bvh zeW^HX{5ziF!p}tVU{FPHzPi!h{nJeS`Lp%ruV#{x($a&AL#>OeE6^N5B(>Cf%$<`) zL%qE!V5_152u93q^wzlfUcz$Ks>bOTIm74A3NKy+HpoPmw_hP<2K=^2J~z~rGj&JO z{xD-i-D?AKLK%p1C*35b0WknX>HOuMHs)l(-1j|+$vE{G;it&P6=zh^^mZ|i49XQC zV9j)z`HnC#IF)qgYpuK0%jo?+1R*DAL)^6}c@s1fmNZ3jb5SjBFt z3h`s;`#+H%zE^tkz!JODm%?Xzf4Yi2({MdLP~>h8tzU79C6RwPo!~G$u~SUV8}R*R zJ?zO9spmqpB$it=7tB35T|EsrE9GZ;=pN58pJnvA7($mw28|!N- zXxKHcHdEPn`yu*H)H>IMY%~o2iZu5zAq~7l_co!Ahdj%{;kcEsK6b3fKdG@u;l$ea zMM=<773M7$>wYTuvSM-ZG$b?>%6CW|wjFQ41Eu1MrvZ7H$t4BYZ~!-kol(M>kQ%~G z+zej8L7M(<^GADx0IJW;wtrqc^QwZz0{&w5? zr9V<$Q}bNJ_o}9-%ZJ6xI2Ry%boDM3J@LIT{OFEYza=Sw<&_!Jq~+iu?*I8JQD|4z z%*;h6{80B>lLQ(73ij=5-XoJF)#NF6zc~MEex5B}>3ghu^*6<0oc`&bt|$_y-@*H< zG+hGCWdQeVt3`GwL;G-7J+jHWxwt9@Ao^JT_amWY4G9b4=>;?0l75%?OUw| zx3!{v-q($@?_RKuARv4mB#^Iy>g3iV>kg+I1hPcmP(6M6RKQLDHi$2blh0l7m1jhf zL(bJZEz~Z~3xHvuV`9o51*092)XvsAtaKG7tqq{{^(}ONrmp{9f9++L?lB3%I&@d5 z1f!0CUc9iKQ$0Ka*TNH7UY^aGQbtC4MrUig@MlOwW$D?fBMiA8!^O;ub2wX=V?e1mj6v(VY?y{J`=$ zQcKRm11t8iXxM1J9BAPieMWjw?d4 z0OLneuOrX?JaKP1l_P#-n{iVKfcs2-XW7@Uh5YSHzrBHCWL-B5(s&3l~h!yC-uf~*(KuYmKeoMm77T0I$(lciE|C};tdvM z=j+3#I#W6I&I=LC%N92k=B=F;h5#CnF_(OB_V*f-$J&oIhrf|IGBOGXwJ76!b3^*pq;GeXkIE&+lA5=5yzb2m{u zh0t#@{Q~CU=^6Op1Lb5uJry7!7gtw9blE6J3$^4!3zQn8yV4eoaB8k|nQJ<|^fGgS=NajAaf|E{obpz&jzKwy=3wfOA` zCcK`V^Kvq`vU&>r%}JKG)!U-9wy?k-Ep;m@6JKb~!6G5C@z`7}@@gh0CO!&M#Lrh} z>@IJ=3&}j>PsqAKz@-xFp7~k*6_jwgCHj%pkV>W-d3a?RW zAKh45S}sCS?VYs_Q==tzTB<9Yd>&1xPK+yDBn|NJ*467+7MYv-=w$B~Mba~sWT;a6 z()qNAsG`1J+U0=kV;YOJh3|S3WE?X%yEr#JxYjVitIF=b%`yzQ`vg<CGvWX5{@)u=@-=5e5| zYH5YXjAE7;WymwN?B$7_DL4oSBFa*|)7+^WLE|8^AGAO354eVolwxSdib8E<3GT9N zhEQ*=BvNevkKe|yF-V-+TgH-B%AoS|o8~lXA*5~hPRGobi;>uwRMoGv;0=-YI3X(W*)CmElFT_Bc$>%g01y!aG zxE4EP8C{L*W$EhHK1lu(oRgXwJ~pN)^7@2S{QijI?=x{mmXg!$A9DkLMPp;4x-v^x ze>Zs=E{VZ(=oy~oITd&}tn|iofbtifjNy5BXUYyB)zQJ>I4}S$`kY*FxkmT&^ynWA zX*$lg5CLRgK}o5rc&Z!^0!#AT;r})|iYMCSy&{4Glm0Tdi)AOm5E}I&V~B5da6RQA z7FL*hvscM;b0pM;E+9nQ7!Eh@yl~w`HF$_Wz(aCkZaMjHnk_AJb=v}IR;bQ4FoK{J zkB~43kk*gTk!|O1kfNzXG0aHQbejkYe2;PA*!#tG4ir*eE}p@EkC4M=lX z{(LJSpB}j!5yClRi5Xl~A@A*X`;%o-z~=8@H5C9yvJ@RL(VXSBRJ_N8qZ zDgnFzheZY>8(V0yx%PaU0><2N7QI|uovVLrFlG~}j>lc0w`_xc>ck(VB91|2l?RdT^1>o{rg!GV*toDQfdU<}=li10sDr`=M3&a>7@?Xv>c#w^mODVNeGLSE{f6jl zaJFY4ox z&ei$qSRsQ9YIzl*7nILQl6VU3(qr~ARoXMK#y^6@e;Iib4911HvvE(Vhs2GfM)BcpX0UjMz2NTnAwGGyGY<|8>Kk?n zzWk}PDxoLr+XMOc{YTm0I$6B&Htw_kJ9cBCl^;o8KuPfkA0Pig@~vMz(2Wdci(-22 zU=W@C*ziN3;eLPYL{RRSg!UGQ_Lo6Ye#7Bd5I#(B zfzMUP@yeA4Xlo|RUWPKLkV^y3;xOq;gA1+Emfx7(yk|@>a@&S75&iM^sfJV3t{^y> z{SPBfMy5DoWo5<1V>4uRC*-2A#Kp1yV(|aMObhtDdwH<6p=@rRr+M9Qkr^E~0$DQf zo)+{9SltGkjAEr+)9$Toj;>g(sH*AN=cK3q0NiTgeI~uUW?}N>!hM_N*-fQh;oeTo z^WHuiZuk2D?k{PzYw)yTakhJ@wRKoi;{pFoQr3;cR%8ElHqi6Su@bY0=>6|}x|7=x z5+K(hd;$uJXHfLWWqgm&UOrh#oFq^eJZBFxPdkamg0t@gK*V1ICBlsAhW3QL0hyl0 z@7#aqf4t6Cu*dRozeO+1>GAzdQYT!c02r;jqs#AK2jH^;p?w$GJUSI0h%C5F`2@`4hE;h$HLv|!zs zV=zh2sI`X^AY7G|2IUEeR|CyuuJPZ_vkHUuM2-Ys`RASDL*eZItOLFbZDZ;u{~VR4 z^8VLn9hLcgfP#4lVqX0I2B7H&S?WV}5=lIXos9QZ5#U;@lsHT$Cv%eua(mX@~I8S0|{@@3u|etuOhJ(&-(h9ts`Sf0li50ZBuW2j-?@n{?i zQaf7cSOstVVknE9Z+(*oREF=OqT~S<+TGK$5>if0&gb~G|ne1Oab)0igCxH zHbpe)@~|K6Li&HK`Q1J}!%s@AaO<&GJ|M>>v9Uo%mXNZ*zwx_0wQ!^2bwf@}{A<1i zRi%&$TR%54p6jam{PfQMj3X#W8jczthVOeevCGW%ebsmppPU>*#G(tkxu~?=U&aDt z5Fv=o0YAV-KXL#$=m;rzp!2Yl z%7GxYQT)rMO#h!)?8AFBDUhNoKP_H34%K9oN((ojE<5TL>R{i0c5E(gW0)J$%FyAx z`qLDXmZm?LE~>Qezl|Rr5%I7$hB~VC&3V`OI2OQAgKBGusKf&>OijgWocBL!yIlTz z_JAcA^oeYx)3UJ5um4R1yz(&={6V0gP*70Twga0BaeVS}6I*l_Yxq_V7BD=##~E-V zAY2a1 zAx0M8T%6-J#Y^;E<+(?#e|`Ki&FaAEdVLHnf;O}K@m3-UtUd{NJw0hZg9%<;m^~~q z_!H;AKi7z1Ero@ZS)a#B?5z?io(2bwK$ z3UBbgj=h1=GEJCg5n>qH29~W?@X}H=a|yDEQkn*wVgq?15(uyanBv#e&#aOvui!r;UiF-aM_)HI9^i{5!1}~4M@tjw#XF4-+WP@=biuI{ZrWMFOX&S zW45Um#mdJ~4bT!NmM`6jLYRWQMFEnpGU9;89 zGa}e|u2N{4JO?P(4~O^{KC0!+rwLhAb&7#>U1>F-21;cVc=6mDV~g+&sQv}K*|8Ad zG=$il54meQ#)=LMe6%PCR!!Ly`R z)O13{)#(*jBoa#9N1olr|sTq2&gZR7!7^i%$*3C1`Gl?0`fPdKN-kYk zmW?8BXiUm`U>D{F{kGuX5l(7k_KppZlS0hl}BYLPxKXh8RtjY-ImtY%uY!laSx^m zh70-}RP_2ZoE85SP)GS8qE*DvV%Uo9B#hcHQz9xF-T~wbb&j_Wo4xknXfyyw94NAf zZxOfIX1NuPz-!Yh6lel56^UvNPA9)9#B|@Sfj1_y*+pE20brg>97-cv*3@WS8Ad`N zD??|Ol{p&w=QaICcnYq%uK0wdXJb7pUqal@IMzcMK(mp({G~KAV)DaU*GINs=jP{z z|I0XlVXP9>i8-cTq%>N---hakapzwjQGk#!J}0MqETmMa{nJ#;Wrj`v+=F67$jNrD zlAUh{2niXP?ip_GZY@6&gyBZjVYTgzInFfL@c@zWVOQAc#oE+D1>DuDtqVHo){KsF zaSeT}Jh=LK$Z9aYn@j@*$>Hq;E5K5(>^ML89(`N-cAOBI> z1a8-oW0{joq2^rPEqojSs3eN|nXBJYCrX14bco;C*-13(`U8o&&IN1+Q1KK;i}Lak z0ok*;+0!>oZC6k8n1@*uPlF}^PBRz#z-`4{;u{lSR&n{9W@*mj{BI7Q-&E6~wBI#h zE4AIq-Hq1%e~uiij&o2Sr0>t_Mq=c$e-Q4Nb3i=XgXZFZe&Kuj;7SIX|6FI|>=+u> zW*iaAlo@CYU0m(Z!XDrg5V&?uQLAJ;?`^1r`D~?z6bY0wPGIVy%>Jx{y&b&pJAZ}f zcY9L_L>U+hP4Jx>a9wS;GX`dOVZ zx&G0A#0cf_?aEsQ1+k z8cexP04-quux^#B<;JQ6$P-PTJIp2RMr3VA%6aNVI5Va0^nl-d`Emvv4>3>{4%8kI z6BBPvcMxfbXCb1!d4pid=g7VXq_DA+!huS735?9lhzJ1e>l$!C+}%x{km3Gy6t+LL zG*b;NZS2RLoM0iaVvS(A9Ie_xy2P(k6}|YkWTvFW`8Lyq-~ZWbIxn6W571$bB&F@4*;MpDhMhS@t~GtsXzCJ+ zxrM5E`Hxd<0C3 zRjVw%<}imqhFZCSS%)g1eLH&bs~pqny2OtforI;4IiDw@@#VrlJ3=v8KQr+^3U%cF ztx*4tsA3;e2NaU<3E!9ho$!U=Bfh4IWZ4eKHD*GEjW2Wly_c8n{*mD<^YY^2TX6j8 z%Kex`|FQf7q~E*-@ALCv3tJXPi~PNL_@fX znfyCw<;$M{K$+Y8S_xs{`mT$^l}DbJ+=z&(KgwtL952MIM=}EMZU@Bdli*wUzfHmJ zxc*E8yF>(E{Cw5E2synUjJjkZg~dpdkxag#8vP+4|Ct(1@K`)B3f6^fLnk z`O5d<;a>PGi{E9v?Y`z&L53LCh>;ok;Lz1zwG7>ZE>0bWwgUBePfIx>_D3ITKY#v= zK|R3xH|=Mb%51hn;6(URIwt+Pwf}nh(Ca5aJtdG=Jfp$*9E_MA>5|y;xVtwr)%CrZ z+}H60q$Lo_{R2l~#BI7^UzG-+!K2Lt*?&S+QhX8v6w_X6-GBc{c_!$>>fZV}d#oDx z3gK;Tl>`q0Jr<2QX|m#j%4EsHWJxA1lMCt^b2AbuCFs!gWLiArmeI5% zQi_MP=wuT@Br8J#lk-vq;rGV=Q_{$B%CewoV3Oso_(_35k_O}Zk23wa&cPW7Z};Zv z^<3WplO4UX=tOvw3cb+R@0XyrQt#(<@he9~SX}A~*P);VsANli8Yg3Od84+0?x&u_ zDhQLUe^O&?jY0u~9{kp&FNDd|P`d6cEO~wdzC5`=zeWwz`%-;*@FBS^26k_dQiYp0w- ztKacN0&W`mufA-i+H2*qv9fZyF3YU0uI5SxqmqjF0Ge7RkCZYmFK@cp+gT@^)&`un z={hGvop24OLOzt&<6kv^Y8ujS_F{{Sj64A1R2@$R!pKoDIV0(J{>NK~GAs*(K0QzL zi45=n@vF@z;O>j7Ka$XKaO4)+{6|Y(@}xMuIopkhkADQvdGv^gi0L+e;oaR`?Ya+Q z{z7F&jX|KurD0$|UGO``23n<;eQTSW?W()? zinzGng-e!@C&vBFF|MYjCK&RFZFJvYHlF9==kNO{8}*2Y zC=@htOJE#py23noEREv1?OQg(IvQY6wHz^73ky1&#{zGMKL`)ZAtNI%0*$WEe(QPi zGN1?`c1C>q1q7T|@wTy{VG*!mQkt6hiAhPWS0{E@6nx5sA7tnxi*-x? zF^1p8Bl!ErQi(1iPOLI)e)^ z3&G_y`y32!K>M2u?c$)|3Il2ahuwhBPwgolS~w!r#gWr3J$I9pVS zFyAo?c#>2&4&?#ZnHA6+33zNiVr66F3b^q}@n2hCrxOs+ce;y=ih6(`es}TY?|f?% zxbxCVoVXky)WATzDtO6#0k2)stFyf*tAY3CtKSpA-bMJmad2=zMukug~?6fxWXQ^b`(Q`tt{ zOEMRQ3>mrzNg)!Fgi;bJM45?-3>h-Ne5Q&@pURZaT*#10hRl@)$vlK)C^Adt$iLtI z^{>CxT4~|l=RWUw&e?lE`<$B5w#VNmaFa{=JP`$!aAp2zd(5ri+{>z`r#IeJ$a4I? zRP_z6o!^`TRDX}lMe-}1x?G6}o}QhhqlAQq!~RF@#0Y}Gr&rr(XlOFe{r!sGGop`+A3S&v_25Ay_E1<}o|D4P%gY3*NXnvuAFV%HUS7pr6LB+! zS-2RfSR7zk8YGuf^fe#?IY1{#RRA7rip$c>d01YpKiu7ctivs+>c_Zm-@Zs5S=vgN zaupmqw|&(@bhYQ63rCz#B?t*dGN^w~Ro-ShxS~&e7#quDS{Wb!hj}eh{U(0?NRP30 zE5r!mIi$?&*HC>^g}?9k*GeJWplZr~s2v#}XT@6pr_oZ7)x)tU^4%A)58wRDad-Wr zw|qbH@3tiF6Fp_#9B}Z_QOW{V`K+w0cn%Og^5k*D8fYlGiOQktS+*oQf329A0Im%k zs!yydOH`p9cq;m0dy z|HgN+51wh|mHl zvr^8CjEqh-fvIdAp%3&`?l*!)t2PO-tR6rI?`(khus#d39?mr?=8;ldh}>rV40ecUk}-=Hbtg5)Zb#)!7%j|xTTKj=x7!>eW6g$Dne!i@)jc5 zZ|AOEhi?lW;M{$jrV1JRaq9v)+9+xPpLam9jTSpmL!Lj*t^=rYfulBBZ9Oz<Dhj@#8yJgfUJAjP!im~a3e0Cmm0g(LSG?k_BfuICpS z85yGvPWJU}J9ud4%*^-Wp+w!rJV?2@m-otAzh+!qTujCp#IKY2KdMbHp=OcizI#Ca>qu_qrJ95|Y2CItxS`9UZ5K>bJs;i}?$($b+wW zcuy@;D4XNS{`?dTBAjxUs~)gg?$)^G=(df**sTW@L1~d5|kVK>=-BXgo1j*(q{Q+X_xweC$_f6?3?CK2tdW z`I@5E-&OYb@y>^ONgI(Wa8j$O1Rr zF5f?JEiNrlm6S}f{J)!Oi*C+Pp*>$hEpOwJ@Ri-fNGEwa6yauTZ~sg(K7BZ`w8xb< zm?}F;yNjK1x<6cqmeQVQ7J+OeS?KEKrh#h6*=zRrA6sF0|D}_6ynhW@egAN;nDATL zLnff%hNQIgbUK7~XPLL$*dJSQ=kqU|Rtet)K~BS^HJTNF&loPw*DG_sX!-ck>@wpv z@P%sM>i8!k<8Tn?CTEVQxMVr2E(w`rQIS+@4yMr?wCdXCEwQy5SWoLTIZIrye(K7^ zPWSEUc)(icyq}3@&@)rp&<2Mv;@H6Wq}#@E`=nng!zxn}iRRHqjvZs7JXs%eJfVBJ zs!_#AjuUpn^BBWW)z-!Z^O8m>pIlJk6ktjH?n=kMP?JRA;MG??IAG4i5gkESmXk-c$C`c&S+mx!uNmf4SS za#juw5dclOvZ^=Fn0x<4l`kB5{|OGJ$jZ}IKDvAQq$j~bte>HM!!G)&3zcV*C_h6W& zbO6vlR?$@$X(?mjm4=4f5RszfaN#0g0gs}~Ho&O4{}P|SdG%_Yn3x!jWutOHZvO0# z-EdW3Lz94b?Jc2$xBB`lQOH}{+vndojHW5w$0!NqgL0rEebvGHSA0ja77}ImjLMQH zo}%XNE^oUh?o&ron%13|7>4VbHJ^HhzJ0?4k5j`jZ8Ob;jG9@p&;cJhEiJ8F6ARU( zuao2M$Jf!bs+pL?wF_O(%GzO+XZl|Cj6DK9?cqcE$;nA&4keV~R{)cp{etzeR%3Nd z4-ymMi`(mIfoUZ0y4T(^aUiQ1ndFcS3Ym4ZwVAzC1h+^TQ@FXgS7uxE&OTZUdtM+y zz}9&P_B~kS@D~&*9E{Dy$MFp8Z&i4n!<|fYv`E;&iC+&&-f zE7Pyo1m>5|axk~WCFSbPt*)+q9-fp0YJq29bYE=V4~=2`v}3Ww10oFRjfk8J9(c`fBVSD7i#B_2asmSQjK((&@G^Jg$`{YKIK=eV(B z=Mx$b;NXY|7KC;1?5sOwly`Q=Y2qPI*;HX+Aqn15JEQ*n_n+IU%VZN+4YHVPUlk38 zW`ypt+!M!&0Y@P*G2AGD)71<@RSgYn0B-LZ8tmT=4-O1WcUTZsD74c*e^$Sos$jXU z`Om9xwn6ydl%ow%|K8QthbAQn0ZqKu-RSx7ra+U#?=B-mI@Z7u!DlP7_7U&Ea1)(?xQ z-oaH)b8~a_>B(HEc%#2z!-mYv%)sE_b*5%!pLI_g8}sml1sO<&B8&422#`d91kCtc z0)PJa{(Wwq*K9_bGx~lljekFV`53%^KyUpM6B{rh3qYc}qk|ih_cSkDkicmM=cKW) zuz;RGTsZL>S~$#(HQn7?0r22FI}93ZyN9;|*wItmg0f9i6zx5foklrB`9LY)RYm=dB>vj<>Dbm64uq2`VHZ zE#2W;l1#lk{tme33HCq*tlY%JgkC8BQ)XUX7>FvU61r+PqdR${hlfY8=L8?gZxR#h zoql&?a2YxQKm{%Q=eTeh(F|Td0Oxwi~;yvsm_@bdE7rliDsrGy{40ha$ph*$}d zu2`f6Y;G;ley^{ps*2|pl8~@bz^fS9RovJ zX=!{p?{#+T*BbokQ(Kj;h>D$vrz+-6AIROrgxw}<`AoHF^FfezFpax+iM!;6 zyuB?nH6gai+JO9C^!@t}J-8*PnpQxO-j0r57gP+ErRI@Af~TS zFYiP}RqcMzYp!ZmN4=$|x)ieE?BeoRJ~gHeJ(GUlhKI-Kh|L#BE`?b2ITP;ys>($2 ze`ISM@sv|pUHn6RPxbgre{I`KOG_JtI1+4uB9(Z#cxdiRB_RafN#;7B_Rd+J=BxTa zlj5xJFFgR2Xl`jCOER>5jH}qL=rz5K48-_&W?W`@c87)0Bd@LRenDJ*h5nl9Py46( zo;9exLLtXhz`EpBzta0y!RPZfX{o6)SS;=x2OvMhDtkym-+TT-2<399A&D(c=V4)M zwrX9Bbhvto8ZW({5*Fssit^0_oAc4F9yUUkvf+r3j8IJ!!asL>8l=`5K-f_i6crWwKHS@hoY4MZ z^fxkkQ%}!FySa-{60hyD&~|O_v^iEr_$z5DCN2_?~m>{V`{4Nri3kx_KTiN{Uv@`Yq~{0Rp?wH z$P*X*zm&K!_^DdhOBq^8Kp&H1Sd0DNlHv_ z?Y}x{`J*ufm%<2aDHmvvWy_*w(-!Pa*KH_04M_IF=?gO?ne_B@HPOu&^5h=7f|K)cULTt?=QN125T|43 zlHemuJZ6`X%FoYLIo`aFjNW3qy&t|`k>9rulOH~2>Lxl|x`g}9V_rT!HCXf1ES^2ir#Z)>B%k%o?I zMFy3LP}J?}nfNm`$pskjOF0 zZ@~(x70xbN*F8qB1W&{^3Rg{C9SiED^7Y|~i*XE}aX4~vq~;Y1KL*QdqD<>PP^3Z0g<~?M ztc;&STo)Z!?2pP+n~U_>N|PFG_ujvEj|z1OB^bA?!9;$(G~d>(g-`jMd&`*a91Vdc zL5jSxvYW_qjf@X9epc7obrT;SGsZ|mQbDOK@5W4se)Q>)qD5+2nupI={OfxFRjsY9 z&zH{PS{qqO+KdI^N=u7wbBL(TkOyna7yfTZVf^Ca|H;J;g_W2CBHZlQ1=8R!>DRO|V^N zUw{7^{j{t*g>6VoWo2IPK;Hc}oBoK6;FH+~*+(*%+cs!( zwkuGJQkhD)ZhD!v(6La33T{bjyh}6Dz&l5dj*jXcyniywfXKGvn$}5CHz}uG$mS|O z-4wWzEp}Jc0jl%$g`AJmpJYy#scK$}sqeCINn}@lx8`1=_Lw5SBPd>M`?o@7PJ?~@ z<{lz~9rA-o%XY0h?p`p+PBx&?rs#W2=U|H{6mkCg{j0__$rVb6tJZy_WBv0rl5M*I z`!r81OZ@az0fNo&ruK`Y`yNy7-MA!=Pb}|=JF>v2x0X+$7*s_9cO)?!rv`7b(>730 z7`&KPsu3}aVkw7+TQC6!CQK7a|9&9g(YF@)VZ z{eOez{}2oLjVuM}XCjD(Rb1Be4mE5PP)?sK@7>RIZomJsys$7K>@xgGK*f6|eQcK~ z9$;#Aw)XJa$j;{62)U{hwImhq&DI6QEcGHGQGbqG1kpc_cwRBU>cSJ;TVSIlo^Y6v zn!YPOwa3VnUU4=#oRznENSs0qiJJGw2=MF-emJ1RNG%WEO|C%X@cMXm^+--GM7QiI zgJdS^>!Y%UgrVWx+v<$e1L-+AIW4y{1plsickUbXf8LzD#6S&E;dZWAvUA=SBscmO zj*UK1gBo}6wkM*2*H_8QA3{Ri$}O8{O{K;EvFBkbq@NwfUuG4!ns9i z5t^w^1QpR&*L6`7gC(yze>Uz2_T0KcAtbq7v6} z+#7w#W$mZQa9=ONa*iSC*6Q&0&0`zZrMxp6wvB4$cdHpZ*KhJo3TtW-E>|L6Mkb#> z>X{lbK((Cv^XD4=Q#|_{Cdm4`V&K)lP-%7l?vB+|NNBI2)Yl4n=gQjRw1;)P?^=&a zF#W~ei|n=Fl91#dct}YRWM~T*jb{5-)KzuVT2HNwaAE}ZePujR&q?{&?S$$D>_e}8@9ySYI)Sm~A@FV-N!=%l9MLR-`~F`~g~UueOmq51r0xUDOX z?#~9%SAvqQcd{EEt(#U*wz?vZ0oDQk(pGikjNJ9P3B1#C{UVH(D=yP*VfG-$AG6l|xdr(Z&u^QQ z>qf#uiHUyI7rmgae6lS#V&hm*FS9*aibL`^_)uig6p^1DTko42^Z?dyzWeb0J-){& zGllCGKlO?+otMjgfzyJ~Cyc*A8xbN`kEXR+8>g#XUu3E0*k$0r3P>j(5TOu^V6!<| z3i7J^7E$}3`i{tIk)xd3$j>IC zzk4<|Wx}Br^-~ryQ!KkcOl_sEeX`9xLf3HqH_)WlcX@SJ{q1{iw`3wiWN+^p%LUT7 zI2B?}W8yNIUc<|(r(U~M)S?C_VY~x;MBa6+Bj&!}dDv`w3)m`}u+yT9(#NS4jF;-F zt0h^<$aEW>UKZNEevKs|Au)p?Sqb^3R9*I=8(sU|&hw-}5xKc0<2_j}=Vh-a-{}Ec z9mkp1x$JI*+}!wdb$74Mo?4vje@Tf4pT-5Id!|wLxlWm}jjh;Tc9_VwqvuG`YGi%Y zXA)U=#n{S<0q_B|0>vZRVwe>S0zYH`31JN4W zZ3&Ll0i-BSIJ;$+yT<`_v4*jnM z<~ddZhZnc@H?y9m=Rt{|uJ^C9hm3~?2XQ=@QHa0PXxxq5V5eZhB2sV9CMd@ zKC!SjGYd(4mh|Lzm)s*n!~w+)@V<^gEpFxd*A%sgvn}>iF8hm^t$ueI|7)#Tcjr_` zM@Q|l`P!dCd>0lR4~^-rPIrq>ba|YePj<#AHadoL-R-NWI%6R*uhva`+a!CoGaKKm zk*feYwmNW*I3((_7;|~_ro3miBvl4sTAPPG?s|hGKI_3XEngdm3+U-dSNneaP`S!a z6Dj$jYlu=Zbv1Y#j85bzEP%9Be3_q7De2U@`4De_uTVHW=2(j=wk!Yd^z)R7^sWj; zD^)X-rKIn@Qd^L*-#RyY-fknIrmtpvqnNSeq)X<$?M`G4vDf52=kWboJ&|9&TeZ3nsiW8T%ZZ zND(k5!MfD*u-5AhBLP~Baxq`9L{4+yD1u^+GNW|(7!hP)#YithMEm?D&k28?8j`d@ zc41BmhF;Vt!NllltSSkyuYW9o3*+OF|6GNPGGB_*p58q6tJe@ zI>Li{*G#n;W647s6rK9Yv>tVmoEh!PiQVm9DyaR_9BRofaQ_iOx4n+j?J?Nj3r+o0dI68Cl+2L{&53KF`!8%@45nkgsB2%-sP8%-!Zks(sQ`# zmvVGScNrj>l$2CaQ)5`mMYertF~csGvGrTPfbKG{c?pLC@v3U0ibp_0ia8N7-k|#C zu%(96dVOY{zk)$LJXwnFliH)66LT0z!W~{qk!Ign-MTJA<>>T@{iBcSqWyGd~})6@Jg<-Zu*;IK3!9) zc#V2hZG0sDWNI_rK!SC4c3}zK3fx@H?N3*&nV0CdNEkWVNX|6vT21k4|7u`%;lZx1 zm2~D5au%OD+@yW2w=S;0t^LGz>= zPs!P)sF~+wXd*+MTn)sTjh_cRPH-8Pj$h`$5>F%_L zLI*A(VcF=ga-E$CPgHS${jr0mEanJIIoHdTfUv?~HDK4{`EIg&#;fb!maU8gB#B2@ zX{BS0LOi7ewX&ZC+}_tu@$bx?^O5q|(M>Io^-tPH7C7qlW_Ga z>8ew6n~T3P<3;KNhIMxB7YeIQ(K1vHoI)|@hZ1k!622|hLN8Q9WB5Y2Ii1te|BY6* zC)ct~cclb{>R3Il`9_Frw_xdT1O7V`&$T4CcrUB~*6&fjlptaNmAG`rmq{aArS&!b8kb7{TK z_kyt~X36-O(bg9H-}qx;V1(#wysoIKlh)L1Xf^Tr0{t7lTUBR_4gv})C(2m6%#TH1 z{wkm%`S+m)F;VY3^20+u4y$ol4-brvzoW{fQ~Kc%5r;=>@_FX(#F!KDPLt!)Ba+z- zBv=UJLzqL2h~JrSP}9=JPwjVLCiK{D7Vv+tdDjvH2GNF_ASC zb*iYJDfF7RQe$44CXSl>nS3FI99up{;MB~F>`0%OWw75&q$1&)ZrhoiHX6F)oalf6 zgoK2IuTg8@!CBjghzJ!mwY>U<>0zQ|5!oYVQ{s1~Ez)LhlV*=q)k{c7Qu|c!V>Wj$ zmA}#$`0SJm**K|JLRwf{TwGcc^o5XG_~4)dSnhix;?iB$?nsxw>}oIdhg8amyYcsxr; z_;~pshxS8cQ_xC%cY)nP6EUA1hS&L)-19n+cb2bCEnw|4)kgf@ycjSJmk-Dym+!)7 zJ)E7LIlYI4O70z5GevH({qFAi`ufI+zuBZyP2IkqZs5;&;fw_`1HX@js3V(vm+{5r z741#O%Reow+7rbZGFc)m(Aw?Zbff(C^gB*goipLtCc&{(L>P=3CMPAX)_}8{HQ-}m zvb1!qqN*D3(!ek0WWMcQzuUgewzDX4V64gYS^maU`4S2dk$EJApfPhp zJU@otB4g1!d4el8!#Uad>6zJ3TG(uDaPw}=bB&`r=;ndD9RoGppPHNQnb}#=&QNdT zKOdHHP#&Spg-Own3wx0h(bBB3PlCvPa72nM_-%HpK->HSnhU7D+4PzMf(=+;FikD3 z9IzA=3^Z~0{u7aE9eSm}6bs&JN+`RqvykA>;Es(YVCa;IUkpD$2P4#A8lq zQFk!?{>A*lb^DyPjaJ9dbpDN+AgM2IYdb5<3mEWiFSThR|IdWF*wBg3RLKF}dra0eQ=rl)P|0~RsqYi=|Laxb>IK&9*GUlWu zj7X#$=^K34+|0lM8a>kbkzuy&xdCs4_{7Bg6CaS?xP5zU*4zChk9yCj`1=O$chCze zDwGR-b#E|xdd+F#lg>bLtE%)Buz%pZ(@;L?R%8smP|Zt(mODO`*S0`nr^>eA^`|ld zQ8~64@)tb{>Adkj`udcupsd8i?z}u9V_{w`g?hWC^&05orD32Nv+4TCeZ~v-z2=Tp z5)zWg7_ftrK`pbR-YkxnFJGdKPzkONlw2Bp(qH}g+(7q=`p0&qNvo-?I=Rlw%*PcV{rs8DWK$VCe}ED;n&T_@{PHU*n_er1Sbb$> z_fRSKj@2{BrK(tujFK`CSB1@ugjOb6IXsIlnTSo=aP+r-MRoNXD|P}j*Sn6GclUJ1 z-;w?gAP)5ZLUCB#FJEUl7N)VY`Nsa?x#|vMhAbZg(`%U+%3S>xFE0`@vRSCkRpnaucs=^y7+cIw z{6R^-udar>ZKfg{dPI0^e0<<~bhJQk8QRBNB0@sEA!MDalfRgvZLnsKLp+eW5IZ?O ze25IFpVCZ0dF0@}ANb(|bhV9drE^RUU&pU!1ktuP8G!X>$SsyprHG zPR`CoCML8{Gi0|Qz&wX;Yip!lO^ zZLPe#1SZR_QDvgZI|D}63+FY&+T}2a`C-4lD5`sv-L%%?QbCeyGEZR*$r%_rbJ|~3 za*<%|i;GyNTa)UZeBlBOkx{I0h|ERrLuk+RGryU9w7SNcnwp@N7K)GY`?=iMR5P+? z?AG!EV5j@Pkb9%AJ9_7eOJL_aZ0zkI|62TN;-R6<?f!ziG`Lmq-z_MhZyHJp861@0Cad3-YB!Rfow=c4iLfrco@j}{!osrnna6pw z`1M}v9XNdvWykkI-e-}U8lHUiixS$}X+KvjEiK`7(e3qlyeO~3Z&-#1MNw6Y8gn;v zFZ?DlZf)91tvtE|;mAOTexYSRz)dmskJIn>5BS~LFh(*(H6W{d0GZ}1vFDl4&WQf? zsmQn1;QO<&LCeNQIaMZ;3yF3Moo#PK1B@3yd5>#@C2B0jbR98-y7T3!q&z7&U`9q8 z>UF-CM^A?{UPSmmyxtZCDN6D0Xc*KY7)9dZ3DRlJcIRg!2b+jHnT_ZU_LO*`|SmATY45~g-TfGb;0Mg~MUVMp@xI zZ>{Q!``RDej)9zXafxiWv~&++yv8#=`0Wq3bVq$3Jw3hV%>o}kg%{Gsh(UW!rwk1C zmdEMbg`kkW=O?`d0Z_)eFFmz zX%i6&tjg?L^UJ>pvgt=kwYB;tW)_>-MT5gz)t&Y{*(<#X#QFIj3o9xr9zwU^%Lxbq zetj9~i+SMfEr@YS9)L?5@@%2nW)K*6aBvV_Gd{}T4+EW%=P-a5f>Nu^vh6+zG(Wa@ z(0Oq0{W44{prbHTLTMPB$Cfb8L&O7<3}G6)zWz zR)ZT>6^y2iGk(r@RCJz+w>O_$_97ok4u<}V$Cg;nq}L}4+0PrcU725>nMOq7-jAoF z7Zem^w7S51g!;I@0ga6>rrVx>ZG#$UYDLHA#0Kc>Gt-x z-M>G(g!?_aft^+0uA^}uXe_VF2+T-AQn2+F8RL##vrQ{`-ZK(D&V3_udfxJeQ5`q1 zIk2FjcW|D(tjzY%{}efq;#H#YKNu`R@Mm`nC(JZBWTD~Gh@{Bw2vCdgI0^LU0F8x+ znQFwgVYP3cbxahL#R$Dk`teCAx0-pA^W0Ay{khE7T5S?GURU3>$|{9DAJR|HBw`xR zv9+^bNR&?Ov=&!qJ5)Ed=j7C*&9<>Ka!OFSk0S?|tOG#fHD z##Le`+BEy|l#@?)cj<9&2afiPdJZ->KT&RVouAw=yKOJIL4gbJMmUCQx^TKc4yNr! zbL((rzt}dmy5FrU8ECF6HHS!%fBZPFbXv2zIhz}CaB!gJLJ|ed-hMJm=Ln?3S6m~n z+u}wsSGU`KXcEfPBWqk{WqVpM#Iv#MMu|`0Y?Oe68Xy zrw1EZ%<5bv9@A|!L;oz-+Mkkl9$)nC0{`dFp9jmK{R~#JeU=T4t|0&|GdHOyi%o&s zsd2XN7#*#`<*!phQW6NvBo@C4FcpRr4iAjbqN&ciZ;`Rb?c|L~CWBgc2bz>g%#M#X zJKKl4Hx+*FbByF@-v5%$Yw_^MR<}qAkbIqcJa_yIVqlQ@>nWo6S9ka!uX9<9fVk7} z!06NqGufI77s+?_r1a}8_p;@(3O^^2N|WpY={}w4q%}Jnq5R*yDK^I%kdU( zz8bp)Gy|xbxHsn7sJ}P%2T|2y&e3pF{(yzrAqjGgJbbRi-tO`X-^m*|HR8cW6_Sd*X#0|tUNk82E~ehlk2weYKY?IY%TiML~*ej zm0#;!U;m)0r$W8e1e)_YbGozamF?8}G4KW| z=ud17$`l$>h6Zx6A3}UYx!iJXpb3x^4yESedUdB_(DOG|`MK>R!Ryzo<2}8}OrMmT zTST@Vg_Y`uv<`Dhc5GFfm1hb&{ORM&5QW5BFWgmBa68y_yS_M^KO7w*F2SA#-a6gT zNc!#g=tx;jEeN#Gg;6TM>i2C}J7-7heH*!!jd_!EupjafLAl(?e%`<*a%G~Q2;I;~ zM>1Zg=xM42p%c+^obO)dbBRzY{`E=SKGkBF&NyBhgS)2YV+*h&4-Cp6Zu4Q|X$Pg0 z)U=h3U=&RqtsjXex{=?jUI&->dl&d^M@E5y#8pS-mpz@%i z9>ZGF;0!YL9g1Re;7lJF4fRit7)zCJn;0D8v>0u#I=0rF>D>YFsFA5@aGBoxcyDht z(TQC@j+FFoxF|UA4tiqb)M-K_QvnM{_8T=$tr_bhHv% zj(-e#MIm95GS)(88J`Z~#u0{ldK9g8c)59A9z*NV4K9DHeA2^%f`Y0@V>q+R8^;j! z2G_4RM4UMVoOj(pa_9GC#+fRY=>)Cka8RZ?f7^I>Z#|RV(z=&#YPa0TWf9u;vz5uo z$<5V8GEk-A;!^|y{`O@1%ccu057OMsOiof1W|^)^YmP7jL#V4bEvE+DCbe?QzJr#7aPS~Qs`&iURd27!3IVHlLi1O;mEhQkc;{b>JnmZx94Yj zw`2tcW}6e$$R(wv2N#aa5U7eq>q;YLW1g)US%bj4N)L_-P|qZATB2+Lg7a?L^;W3( zZ{FnP<%#Li^wcl;1V^RU5wG1QJs$giEYrHJQ%Lx5VrpsS?iTsrg#5EhdP+a%(Yseu zYeKN+BaI@1D|B^NMHnjncNO}=niC~qH&6fqhRWesd<5sT$pLjrYU+~%H5@kG2FCr~ z-d=RVq@h|eMlhN){ZvAEtR9IJi zx;o)i3R(8if1hBzQ74jv-7h56urTHk_F9ua-xFRNmuUnSyqF5rf-<_^8YDj9Eh^Eh zB(2@GT8$VH{WY63PRw#`8jsjZRRxdy;4aPfP2d6ySJ3Uw-`D&6z=~r1q2314SD)%e zk;sueX>;Gx0YcxjpQf8mlohGYdV?#vHm4yW8o947tqadT#yhgV03Zd1`Gj1p)x?L7 zc1A`yZyv;^7SBKm34=YQf8U$@Di8ut!S^wfUiGq4Wlgn5&^@fidP93HoICq^9%gEg z=Ts}3o}RvagRTZ(luyp~mPX>bc_(A+Iz=tFAXrcLy!4`EJo#=sEVnJ?DLZ^w^r2_u z!#R~udo;zj(KZ7E4nrJb;z;p_$ncUlB)t4pTxOgy}cI4?MYiPSR^SAf@CNbr<#pARB)K+zRFc|7(v+Fgn)H_sk$M%@u zMShR=x%1&)S)DP6UkU8zG9nX9bewnk`%81ATo~GWX=vzR8hZG;y-5ri00K+QHA#<% z;%jmgy5!vVjn6aNDm;(hUhO3skE_rJnqa%BBdLtpDjXKCbCnyY2_q^2czPffSX4^G6hkSlrW?s?t9=+B z=S~JyZ;XH@`(dthR8VLybp{rux;LhZ1{r7ATI%*)ElH~SOb>T;Rn49b(o&BZTQ6%e zzw7QB1IKg<8jrUxVPPH7KN9hC_eZtwUk-_>`Hq}8<*esI#%;>r zRs8?XZzNiuIMw3DYi2%xDWoz)zq_}I8eFqot#owccU~t4>DJ*Q_6pG!!^mdcX?_cj zVM^o__X|dd(ZPP32Hbo8T%WJ8Tk%*=cJ;=e4NPqwSoxYx0nr_)(ud!ajlF-qC|8spm6QN!V zy>Dp|ULQ$E&$i(aQY^mzQ6{SN2@-gDrwK@qq4auy&OHJ}iG@C#uE-aa ziP|r<;&*p1b5c~93Z+Q0AXk09J@g2UP{E?#-#cF_X9XjIa!)Mn(gQ7IR~K7 zfv1x&{;1BB(Z8hstXi!uF1d6@mjYCj8yyV8oz9y$jmemd-)epV*5?rtQsF|!B#AMFzdLG17k{IZU5py1y`}uyPv_21 zPvh?X2{za{e_NpB>tZ|eC0o$8L6XSCn5SLPQKe9o@G z8JuHZT(O@IQf5^1P*GBN74Yd31^Ldd)_xmU+p*Ec6K1xaI|%Em&Hd5ZGngs+P9A4d zQ&ao!FcwfMBFpreIXF2V zz4_55MQgxt{mAl8IYO~zZtes?6HSx)>xt8iZ|5JES5_hc+CE{YG1MWUuPkQ_Nac&& z`YcDt==j`$kq!FGNfq4 z<>XLjYwjRi{D^Ki0W^PoVpa=@U0!i_axnId$N=$;=BMpEP6)x&J-}seUM@2WG?G4z zn`F8zUYLrceCyA#OeDWp!!76RA0ekb$7?gVUW9^%CcdvP%<0(SaY-cq`2KCFE*1bZ z9wBGZhd0vvbHq~>D+eT3cOTy`DfSh zh9yn})NL`J(vm{UbjTJYk#loZEk@lQO6B+UY^oOy9X6=F#LH!#<5xcW+#{QBF~vA7_2%1MwdtGC|EC|z9?nUu(D!q zjD(u3^-rJ(J0~5t`g74b4r=jxmp|MbGr0k+bwjdGTS>)aA+0_8w{w18HmvgMYDds$246?2 z$E73$O+H>+jwazogD(}R6yg91S+1YIs_(>wMJ^PyHlVRQw%XgpNk~Lwa_BA(Ps*V3 zqy^j~yFrVD4WuhHS*C+6BO~LoJsW(?ABp+Nu9`dVFol4P-ja9Df;(MFM7h53@;-zBwYJ__%%0Htv>LX~-WE6AVZemF&)$nsi?xTv zYt~*N!%Ri_|4!!!`)O9=VUj+ljvfQDDiINV6ind=#q|3A^06tP#r3^9={YdU%V%AMS3^zt`OP0J zKiAX{sD`L`Uehqyj5vQJo|)}AeSyWcX{J}G8Os35ltMN4qvaHR_c zcMz_)kLoH6=M|Xp*4gvkT5-w7pNSjyO(xNnB{@KBgeONYMkijESuOoX$pOGVc7s;6 zZ&$>Br~5nWD>JauJzl2!c!n>nGYiv7T6&8dzs3udqWKOAr`lBzU!07}nJ+TA)hlXC ztx4TYJFY06GsJV}Sf+NJm7?(?S^gA}#h9^iJ{bTZYJM=X_Gv~uqTWj^m)iK`CCL3I ziVU3PGb+G1VWkMHnYe6?<0@t58Q=Q{%F4<qDCzu}LUP^b@=41ZrRnOV zPG$PvqHX8geqU5}BBgVy#|}cY>5dxoC1}qz;<@82Q*(E99&cg%%=3*Uu99jQ%A2=Ikx_j{QkiAftk7^G3P0f8@&7J~) zjc$x$vK&hlOV(8;T&jqkZfQdKkYgLPy zb{SW8IOpf*4-y%$7{dv1pwW3XNB@6g$B%k1GO)Eu-W0qx_r(ALhFZ<6zl|qft+KUSXdU9f=xp}WJKHDYvtzb3p!D5np|M%@xZnsrJj!ebw3Y7Kahysr zF%Tf2#T*Ko7a0o1*z}e@Yiw*(u(M;s$Ho1ArBsJmY(1*0I80YyT2=?ytAFMG_d?MB zhy%$-dF085$jFb7TB4%>9f4vxPjLJj^w*r$1O8=hPB3C&tGu6RMga1*m};efwS#^- z-&VWE0?XRkIDU&(T=tZ70?yi`Oly`-$v(JU)0^U#{p~%h_T7#0 zlDxik)GJJq2#V(pvrH`pZdX(m69>PS>mPF$TfCPy<4ge0@&V8UKhB+(jUTPI)&^~V zByuIR)!Y381L9MP#F&3c-GYFfYN5KiIz~noZ*kyM{gPIJ8w2!ZXaKkyymrBIyQ?Id zDu0=4TAXAtS;M4VYlr%UkTs#Kc8hlZDjq4A9QkR-<&>0^-#3>Ia1D<& z5#MXhWSLJdb%+ETFPH&+qNqy&0=8Hv)-Em)Q4GkQ z;41by8iMJxDE(*Qr?FUuE#hsDKWMlkFv?FDWzaASBuYzhpbG#n+hm67HQy zK~6rJCuj1fMX%r|PDNNJC^>6wY#i45ALrM-c<}-S6;<6UWBfc&Fl zF=$0I>5Z1wAu@-fI81-p03t5Q-D_rXeYW~yiX8L!q)Wp90s{tA?Z2Eq{Iu2eS?m7g z%t**~gQin=7l7LtdbrLq{s`C+F*X0&4;jVZEAvRIP$7Xk9-iYt`;(UGu4hiileRY3 zzJf@Ylpoy6%5WwLCFt;$L1pnFEUbG+i~Dr(3!5YG62rmivFUH;_9 ztQa;Pifja;`^sS7&P*PFZY@02F-$;F(96 zXdS`mrqYN1J=2f~dN^>{b;lMgms5`za?!Hr%}IRbS{qN`7wehK)nG*B%#X_qY&_zJ zGhLv?Rkl@d?1TI+EyWK4v07P=*Pf)xh#cEH6!T>TYauPw*#nUZan)si9GfSno8XJA zWAT6-n-zfKedR6Smqn|_fIqX`iDPH6Y2~($I{x}~j+(HAzn@aJn-g08*8ee?yF3mp zMQvmzj_)?++=E0t-s{xc4TutcRDIkdms1f;xXFyAgI`ri7XOQz>)@1cX}Q-`)Ch#w zir>fVFPPFJeKQEqQ1{pL$id72IH97NRAuJST$z~MCR10N=~~JpLP8)^RJ)oH3_fZ- z)Nc)3{Lc)*L9nW)kk<(@g+N`hb;!={3@fWVOHT6u4v~e3P4DcenGc(%HGWc2qX|b_ zHVm|rKnmp%pB&m;57{r?h4r(>D}_-)&z_;vs8sg6FfvIfN9p9~8y*&ymM-wYl3g~g zntGR@5uCH0s#lNJ0^EF@hdRoeAEmGnf$q*^3BdS5|F-7ddafM8oY%8R#J) zR6qe7sDS$P|D_7V>o2{}R*K-A@^SdVrx6e+>2PtN;!|fR(&WC~&x8#%O?QAHg>uK& z4Ww&Ip+PjKf8QviJ;xok)qaTZ01qGBr%@xir}RdM zQ?&41GBgzxUlcMkHa1S2jb9fh(&6v?nuT8`?FrJJ!rQk=KY0Q1J$OP=oeGq#mXV>> zZClX~L9N4`zt!<=Vs5m~@Q~&Fw0^*Fqu_pJw^FJz6&m_uUq~*&z`;bnKh7( zO7}=H0Kj8F8?`)MNbPgJJ9VT)zV>7&P{d}r=r?4QU=PTij{1*dM<~G(aNTnE2U)OM zu+7kY&jK}H%_TE)*||zK-fg9g;U2&x!n-iP#imq?1uYSlS+0vZ`RbPd>jtt#T3%i( zm|D|X!yj>~I){9I7mj}Sol)^y-k~(OF7fj6l38)O=|tXZA*I~2pqZ?Kc@zq%qu4gC zel73q|FM24Xz5$Bf=kDN(OA;=dc8DOGG4n7Py+gCw_&y2oe9?2T#^)Plq+lIWyn*W z7@?PcV3YQg?tD;SN9KD{yvxssopr3>$!DkzFjB#FtLkBP#`dIAQIo#d?-qNTA3i}l zJu*~0;y|-~I9uMjEVyLt2WcXL;eyuNb!!%_CUR)^R%cliXG&;uj<763MMUHdNeBsB zwMEg1%f{Bakf)xw;~lnI=F1FKS3}ozwUFJE@rywY47eZ#fYlwnR7%n#nZlz}E!cH7 zw_1OjETXn1R5Y`_N|7X|yKBFjx3=kCya=kRgY}CW;jmD4V9)e+UV4JJYN=SS9l@YTFh~Z+4*3h@P}PvQyQ=KoI2fu zQd;4A=Nc1$Cu}uuZrzV!%2;)3yVjoFf0ifWW{%VE&60~G7-w<~*AXMf#TF;tM%-Ukm)~eZR%mXOMheXM|hQ!pIoVdNdw_{&b zBqK?L!;}5wzD6F0gRtjE{Mn)cHTKA&_pqJoYbx0L(Mdvp zbakbS<<>M|V;WVJ|Farut|E>^L&2o)p=;m%nU5G_^xz57)1^pE-4Bob5&4*FlS3cXn(5#n4gaW?MTToAip#9~~ZQ zm9tZV4f%`4Mx4iwbKG`k(YDz&g35*7Feda%x^0uAmY}(~xnbSSe!~VLL8sE@;9$hr zdgtyxF$~|oFH*u%G1KL}LAL`^*Q&7;9T;AK!Tw8IE@;XVH(1kr*IVmxbs~Ckc})vM zm@xEC?uQxtj^R*Zuul9~YS%oNoCJOIM3B1wVuK|&Sl(obei)GMz^j(Sc(n{sDmH`n zA>$#6^Q{fU0~#d~`uZYfLm6f7wCu*e=FDCwAtEjN9r=RT{eX>a7}o!`UC?FogLdcf z-NR7j(zF+GiMomZyhjH9p2yPZac8I7TsqJpP&o6{(bkH^*NHm(j@2HhVv&XiV6*jm z#o;x~k)pZ*Ab2iNOfNL_NV4TN-Ex^Ev{M9viFLEqBZVAgW}?)b^nt8NcGTjjuUMd- z>FVl{xS2ftf~Jc8-0~VsIn*YZ0_C8?n_PN?enM%D+D|~x3*@_zD33$TsZ{qJyWTpf z|M&M5v4PIrX#V^hk$1w{HeypV6K1)>>D2^4m%JbJ+Jn$D2v+-a5c{h~KN6I?z zABAWC#%vL87J}IEdc1rbDP*gu7q~Z5jV$0|5d#FBK*J!Rt1ASwZaIFpSDMWiWS&MQ z*8cRh(gU;BRV>!pM{>W)(M_*QJg88Jo;5P(a)&i)EqQ{WA$79J`k9HZDi2${PNmB0 z-BI(td@g}#Q?1cP^LvT*USHn)6SNgJKx?Y15Z;>a4?exAJ&MNR&xu2g2Tq^ z0PO+D>HZErRH3p)4434^FKZD^r=?%^AE)tb#~Q?rd$0CD4f>oE+@M>XDaFA2#T|dgM%2)G*~17k_B+nB%K)0wf>i|%L={bzh!7I zNHSghOB++mg*KqIjhu=K9E?u*0I3@1he&3;ut&l6yPau%MHsPj6>@VC;Sokw#-BN( zGcw2rGr6$`l6+(8*h~$I{&pS=B8Ifjmy8I>)8TPoys=!-L0j{cF;iPc7}K)0vMM^L z)Lo56wVnQV7#2*;i5c60Vc3}xJ|LWm#BWNY22tP67KE-in)sg5NTB z{fAimz&4e=^w%98W>gb%5aE)mNP_t2_@~g=#hlgpZdL-54o=(7Qe;o}Artt}XDT&9 z3oVr-4za=n@vsDcseZA+X4c6f7aH(O36+3_B7q_m=22A`9+NVSsWM{{O`BRc0%xE^ z7y%7xplV@>EPSr^C7GVf*HJV?Z8R|!@FBC;5pCtThr+ecNRwt#86?%B$7QaFk;dtNTQLad)cZP4*zl{$t7|4w_Cfg zjAHb&Srdd0gdeZos0s}}UbPfw`WZpjMz!UAM z+~yp^(9zrJ7w3IIE*fV+5FLh<^~%H*D>Wgav%o8b%!%xnz54_%U}- zP~*?ABbcJoa#r2LU-v4X#=uVPZHA>Se1LHEeHn866TN4US|LJ<%?wvwe*P0SHmrhz zcLSL~jN$h8WgNqZH5Wb42SF1ct2K{1g8KNIsbbqzl)rz&e&hzuTAu0<-B@higq$y_$Dqr zJp!NMH8np!F)*_<7(G&}+g)rC1b=4WU~`O?j-KB5`fL|I2r=U}TVvVabIFw{1Pad**E!GQ^(SECY;0`&02`+i z_6h>v$3Pa9fD7a6Orfw)Y$}?kPZ5`wms7aSqkpbZ06h?kZUc^rii*d{CN7Y0g`93r zJ&S4t2AHlgMF%ZaY+71)SC`bzQX3V8pj$#cDhf*bYH!TpcVsHYZb9>5atIjS=ucmq z6lb0N5+%@er|>({ye-uZ{`2QuiFPg8g9i`b-)&=Sn|PHbRS0bO0!$snCL{!b*JcQ~qDh8es8}(?$&P-0i4KHukFY6)+B-wB z0Tzi1<}?&?^njAR0=SKoj0`O>BY6Aw!`0rgQXRg;RTn2G!1KxD;^PN`v5RH!-xOZk zG>N(JWd2784*>fZTv5S6$G|`fY#9f|#c9@9;0_Mn?e|}UHQqH9tM2n!<*Y%xG4SLw>Y5U6*7gi3T=$j0Mhe^JhM~-_4zqRc3ztc(LZBFJ{G z?t5=9vV0N?n2$gGy}uvx8j$u6U_QRSMn*;tu(7f8J%E*?Kpq2Alp&1LGyF1<#Qva& z1Y*RtZZH$=2rL04&&E5`mCV;(U`YXiffMWH4GqMw3d>*g^Nr5P50Nn18M1r=fDapO z41c;HeC+y+vZ8A}$ZZT2x7~$c= zv1U(a&p8lXX*f7=z@6&7I^8}T;#;Byy(e^gO4Qua@_41HuCAxm_Zp7(`JBy|PlMSP zud|)PliS`b=q^mF+HCpv_y4Pm>yF3j58Drs9a#~H`XyOWR`$wIg=A!8rIf5xR-!|; zB9f7^QW=R*$Ot_lDN0sWB9-h>S?Rsb@BQQb1wh&{p6kJp)zM^obk@rFOjuSBRaK;sU`mTlkzGy4S7(TAENlGb3vHfVd3NEO zBdkivcS?{~+9ndsw9S2qH*eN~qC8gSRzEdR1qCC!+h8?+dU|@#Q`b$ryX~%xwj{TF zS`AoR`o^aoP|o;3S=Dg=o)~dGq0p6o)tow5wpwm z!K3hB&>W|+ z5B!<9It%sW@XB=Uzg}K)0M+ZGbZIH*D&&-ul9D~s{?7#3QV}(RZr>INXA=njMEu<{ z-d&VDy?y6S2G{Pwh9H`C9NgTY#J&q(hp6ltFEPxbfWy?lfRzlR`>*mIhj@!|!-mG* zr>?T+zvv5UT(%i3gtXYXuS{xfZRITYrcGQ8Vgfm(rF;AP`$^RTg$#FH1y&&k5=1}4 z6>k3i`8i_iU3^(jEm0d_CwFe7kxfv^lR}yK(J6uZO2%EnveIi;Yq}Z>1!?V{uWcFE z!S%P4-`;mYG*!Vpnu$vk{i&Q3&p*rFWULbxXTHiS^&%(ZGIQp{elv8mz!lCve1}Oy z=f>K1yh)MO5wU=g@yWYz-_6dZp`30@-;Y};>o?xLh z2c(_l{x(&9w%eW%*|v?A@)#!bCPQN@wg7Z%FaP;+Dh_ih9C24LM?=vlP5FL_J*qo= zl$HWP8c!opaY>-p-pk-O~aC*UPrTo}Mi_%kum=VIawzfuj z9UG5xJHXDq_dna)nx>LdR`j~@`zNhFG&pzU9swyGe^`kksOrZ7B)TRpm5nAHXyFq# zo#rozx_RW`Q7I*5p*}zX z0VO-CqK!wFs(dC>U)1j1vxlN-C)}bjH8dpr_cy+LX8EV9P3>h{ku~t0z#Vt-d?=Jd zhYl@#f4|NGU9ZN^6O)qef<$IczE2sd{kvxRV+GNIB3wIhGchp?b_MBP4D%#0^{JL! z^Jj6k%M>LO&*z|fOL?9}kq|7AT|hu!X#`0_eEy+$GIq?Edmr@o+dy<5W>eAt=_Qg5 zI%h3L8>}$efR8U+>$;Gd+*C-*#hsVl$BVSs4pe$aH96>CTifyk@C__YY-Xk~sKKQX z^xUG`rA5~1HNj0sNB3&0ucv2RM&{_n+2ODkwN4Bc{{EF+WvP4$ZhQd&0q;tj4&h_i zVt7^bmWht`=t^#nJ>&=!3Mjlr^q!l0Y_B@HbEPO>*1`?SG8Rb76aS$7K?n`JB*TFO zBMa;H^Y&R&Y1#yyE~mH{@{I5b&JbB?&x?| zzG;uy77dI7pk#Ww4|aC)z+^)ZjV2~0xSy{Wdk2;e7mEuJr!o znhzkC#Ez@0s|c$F9nT%5cW_3T2nCn)#|{2qzF7m|Cv9SrHp~rec$Ped?ej*qQx(_h zzle`bIUw=%Nf6_aDe$UB0{4c1~*_qEe9Yj}`wix#?qP$vJMszeYY=q1@ z^WWNE?&zAB-00=Y zc>S>Gc{I>vfz2~cI1a_yXp4D9`y=AL`)ObE9E)C~4;41SG*4{K7~9&$BuZH1^AI1) zN@ps88~B5g23sck%J;bgJ6ir~(`;dA2R1okY8rxNadUG!%zbGdnqQjmD}J3Kd!lF3 zY{k&Xs1Xqhf=@;`<*U*2KCFkk6@0$Ja+UmMgp;Igqk);SpFdBZSJm{zW;mfBF*d5h-=|&3!oq@&kFTz~+hTI@X-#`}4k^nN6%9}0 zQwdy_qot)4j@LIfHT@v5(xK-q2|iQ)`DsVTDi|ipO(f}Z26|O|J12d7|38SlH9r6E|Ym*Q-i<=2W(Zlls*qoucdw*>mq^T zjT@X#H$`P-iNHpvYXyaPz?$CP@-{X$a-!!+D3qq+TS8UKm!*~^XMgPL8v*K_xNyMG zFf2ZPqspmAdr$}(q$%@s7uj1#$V5d&4bA#lR{O~c3JT7AIINMEHaymf0>=2f>#`O_mK)U}Bza`K?1WlE!KZFRLEuuo`kaBx@4u1nEBQl4Cv zmY0{WxHvC5c=6konAUhSu@ZdYXMSHZxL-c#yR3hfWdV=&vFB%PP-A3KKQIYsM1vMq zA5IAc1>W<|1W|pzjOLL*V%q9}4FZ>BsXX9<6Ej2gBz{m|{=QvFMP+1R?1KxJ)fNP# z6q)0+3TFqeq4a-IUr&R;tBDFGD2X43XfVKdaqR=nX_QJnZwkac(~il?Dete-vi% zEv~E(q^|}J{G+|VOuh%cp>v9MM`&)gtg|-bdsDMaCK27kM}ns!6x@61ZW%oAHvCrR z)$B6CwtJ7xbfSe_J=P|Y(A*<$XBP@ArX!l*UE#4;q}MoDboaHg0A+W6e-unpQ&Vcs z2{N{C-hB7&U0T?t+S)wR*cme-vzaAZDx=Und=RZg{!aD6=Cp?~y9XtmgOk(!vi0&J z%aP0rl)HzHW+x`{JYShoLE{<)8?a;?!yS>|b_E~=7sLe5L;W@al!^Xg8jvI(!#=3I z&T&HzCMG5hXU;?co;obejVk#sh#_-;T%toz_vs4{UvH41z6Au_ON1<9W~yp>c)m@8 zO!wqfWR3(>c44qikJAY%m0Illej6CF&j3t_%PjW)8K@EOzn9TWuNCG{4{ItO#83k&}~i_*mlP#@PV3iH60XhmaBF92MdE>WKAX9NOGAv?fEfNXY&BWZ ziuS~b5hDwYy@aA-(-nFaXgPNLT0)R}lcut%C3$yuXD$E33Su&fmDNI$6e#tpdd{ z!pVu{7ISj7YT@O-e|-CEiLEG8U1|tll!GNDB}RuQ)l^mMMrJ#X>Q$c~WhT|8K&X$# zgly8ex>fZP%M?eSyxlc%(9RyPm*?B%YcR@s`G@CF@&Of*RWv5G75qv}Or%%OD3ayP zm+Fo`WS1@t;*<${X$nCOn4_8k>H(xyhsi)6Cv%wRg$p5sfv66K4UrVVacX!ywmHAG zWi+`K)vU)X-k7Fy7maM@h0S|~#>@7F**1?$NJ@Tra(3?gU6ELt!kUFB6d=QO!RxGR zo8;eR?%V_AC99-w2!Kv122{4Oc5rdv@8heE;suNOwhg zfRFlrr^oY-?CG(LY;Yv2B@ohL5)vWMWq>)oSM2WKAdEN`pOO-Zb`z2^ia#vAcaKg>ON)_(B?K@LN%>t*PcD(v>GylemZSurP6EMzZbd4%+PI{o^$ZLQ zj}k0xkhisjIfRi_Vq;^i%bQzUF>|v?*1cCwS6A10q02l3$56Q~#5;8Jea}L|S9OuZWUs_G_rbE5IToDz@u}5as&!FXTcoYpgm2HX7 z<5dX$Dqnll^!A3oBuGnGbI8-D@^Fgf${HN*AoKR%{gOQXTxVn9TD{nUIlYsKirZ@Q znI5bU5G>oWLFD==HYSmK65eTnZPhQ`_5FB6ixP7@liJ|H|euBlG9j{29?MK7k9@-+HXhs4b|#Ss5@ zp&T!)Op~`ZizTK89^YXd{aBmn)$K%Qx1-wc3v?3*6Z1QHs$ANPn=t;nbeH)P(R>-o zBI{Ze{heUrX3Zu0A}glNgTkR4g_}oh3Ac!Ni#LS5YUkD-Vh2vV|AeB@p>Y^ZWcpoN zLq-w*Xl6N)(C@p%@vV1ray9?&jeKg$1fxjkLIIeFrz#9Yo~= ztzT8uBMFO~Ji;^jD|&BT7K0ilQ2A)k;M=?kRDPCz5R&6Lt<5+l;B{-u|6d#N->UO+ zb29_DaS-U59k!PxfBpx%yj`VY0TUL?R2W6Rg!zp>DqpT-x^sk`^bWHedgUEEM)yAn z;n22I-tx$xn@d^po!K3j*ohjedwo*>{T+IHP`urm<-Y~IH$2OI25kcG-xoLe>N1M_ zvHG_q+{e_sN=MM_9+LHVpnGj08z&XtC1bYnrFjUOP`4x6A>+w`}-saF=7O|F$ hB0ZH{;k~WP8s2YL+qn!Z=_vR)u-{0xP}||k{{SBGs<{9F diff --git a/screenshots/09-new-device-instructions-desktop.png b/screenshots/09-new-device-instructions-desktop.png index 0816b9f20d2c0525cbdc9a0571496b5bc2140640..71f2da322edb581ff25a6f0489f565a2d4868d95 100644 GIT binary patch delta 17278 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 Ly-lEeaf5Q?tNWd`#vFmLItMz0W^Kz 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 Mobnyi?MKi5AM_AY>i_@% diff --git a/screenshots/11-new-device-alias-desktop.png b/screenshots/11-new-device-alias-desktop.png index 391f8da6d43f2b60d5536465d4f54590a206e429..6f61cbc11f343254d46f9f29dceada45c3f9d2fa 100644 GIT binary patch literal 26511 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�N!08$;o;^N|ZSFc`uI+lW9 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 diff --git a/screenshots/11-new-device-alias-mobile.png b/screenshots/11-new-device-alias-mobile.png index 7c4f382a49dcf0e3b28dea7a42206937d2bbf756..4083fe8909de96a4ba9f783620ce24f987459aa4 100644 GIT binary patch literal 16869 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

FN`IwlJ@Z*9Il&f_(`2aUw_KZ@=FBQ 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 DID?(P diff --git a/src/frontend/src/crypto/mnemonic.test.ts b/src/frontend/src/crypto/mnemonic.test.ts new file mode 100644 index 0000000000..c76d827503 --- /dev/null +++ b/src/frontend/src/crypto/mnemonic.test.ts @@ -0,0 +1,107 @@ +import { + Warning, + parseRecoveryPhrase, + getWarnings, + dropLeadingUserNumber, +} from "./mnemonic"; + +const expectLeadingUserNumberToBe = ( + received: string, + expected: number | null +) => { + const parsed = parseRecoveryPhrase(received); + const lun = parsed.leadingUserNumber + ? Number(parsed.leadingUserNumber) + : null; + expect(lun).toBe(expected); +}; + +test("Leading user number is parsed correctly", () => { + expectLeadingUserNumberToBe("10043", 10043); + expectLeadingUserNumberToBe(" 10043 ", 10043); + expectLeadingUserNumberToBe(" 10043 foo bar", 10043); + expectLeadingUserNumberToBe(" 10043 foo bar", 10043); + expectLeadingUserNumberToBe("10043n foo bar", null); + expectLeadingUserNumberToBe("foo 123 bar", null); + expectLeadingUserNumberToBe("", null); +}); + +test("Leading user number is dropped correctly", () => { + expect(dropLeadingUserNumber("10043")).toEqual(""); + expect(dropLeadingUserNumber("10043 ")).toEqual(""); + expect(dropLeadingUserNumber("10043 foo bar")).toEqual("foo bar"); + expect(dropLeadingUserNumber("10043 foo bar")).toEqual("foo bar"); + expect(dropLeadingUserNumber("foo bar")).toEqual("foo bar"); +}); + +const expectWordsToEqual = (received: string, expected: string[]) => { + expect(parseRecoveryPhrase(received).words).toEqual(expected); +}; + +test("Word list is parsed correctly", () => { + expectWordsToEqual("about abandon", ["about", "abandon"]); + expectWordsToEqual(" about abandon ", ["about", "abandon"]); + expectWordsToEqual("", []); + expectWordsToEqual("about about about abandon 123", [ + "about", + "about", + "about", + "abandon", + "123", + ]); +}); + +const expectWarningsInclude = ( + userNumber: number, + input: string, + warning: Warning +) => { + expect(getWarnings(BigInt(userNumber), input)).toEqual( + expect.arrayContaining([warning]) + ); +}; + +const expectNoWarnings = (userNumber: number, input: string) => { + expect(getWarnings(BigInt(userNumber), input)).toEqual([]); +}; + +test("Warnings are correctly generated", () => { + expectWarningsInclude(10001, "squirrel &", { + type: "bad_chars", + chars: ["&"], + }); + + expectWarningsInclude(10001, "about squirrel bar abandon", { + type: "repeated_whitespace", + between: ["squirrel", "bar"], + }); + + expectWarningsInclude(10001, "10042 about about", { + type: "bad_anchor", + anchor: BigInt(10042), + }); + + expectWarningsInclude(10001, Array(23).fill("about").join(" "), { + type: "bad_word_count", + count: 23, + }); + + expectWarningsInclude(10001, `10042 ${Array(23).fill("about").join(" ")}`, { + type: "bad_word_count", + count: 23, + }); + + expectWarningsInclude(10001, "about abut squirrel squirel abandon squirel", { + type: "bad_words", + words: ["abut", "squirel"], + }); + + expectWarningsInclude(10001, Array(24).fill("about").join(" "), { + type: "invalid", + }); + + expectNoWarnings( + 10001, + "10001 trust dad oak bright arrow pipe omit provide material donkey hole worry parade test paper fix clutch state range census dust fan hurry almost" + ); +}); diff --git a/src/frontend/src/crypto/mnemonic.ts b/src/frontend/src/crypto/mnemonic.ts index d86f7affc6..0342b32fbc 100644 --- a/src/frontend/src/crypto/mnemonic.ts +++ b/src/frontend/src/crypto/mnemonic.ts @@ -1,18 +1,183 @@ import { entropyToMnemonic, wordlists, validateMnemonic } from "bip39"; import { toHexString } from "@dfinity/identity/lib/cjs/buffer"; +import { isUserNumber } from "../utils/userNumber"; /** - * @returns A random BIP39 mnemonic with 256 bits of entropy. + * @returns A random BIP39 mnemonic with 256 bits of entropy (generates a list of 24 words) */ export function generate(): string { - const entropy = new Uint32Array(8); + const entropy = new Uint32Array(8); // NOTE: please change RECOVERYPHRASE_WORDCOUNT if this changes crypto.getRandomValues(entropy); - return entropyToMnemonic(toHexString(entropy.buffer), wordlists.english); + return entropyToMnemonic( + toHexString(entropy.buffer), + RECOVERYPHRASE_WORDLIST + ); } +/** How many words are expected in the recovery phrase */ +export const RECOVERYPHRASE_WORDCOUNT = 24; + +/** The list of words used to make the recovery phrase */ +// NOTE: "english" is the only one actually bundled in (see webpack config) +export const RECOVERYPHRASE_WORDLIST: string[] = wordlists.english; + /** * @returns true if the mnemonic is valid, false otherwise. */ export function validate(mnemonic: string): boolean { return validateMnemonic(mnemonic); } + +/** A recovery phrase that was parsed. + * An object of this type should not be used to reconstruct a recovery phrase, since + * some information (though most likely incorrectly inserted) like extra whitespaces + * is lost. + */ +type ParsedRecoveryPhrase = { + leadingUserNumber: string | null; + words: string[]; +}; + +/** Parse recovery phrase into a structured object */ +export const parseRecoveryPhrase = (s: string): ParsedRecoveryPhrase => { + /* Split nicely into words + * ' 2002 foo bar ' -> split(" ") -> [ '', '2002', 'foo', '', 'bar', '' ] + * [ '', '2002', 'foo', '', 'bar', '' ] -> filter(...) -> [ '2002', 'foo', 'bar' ] + */ + const words = s.split(" ").filter((w) => w !== ""); + + // check if there's a leading user (anchor) number + const leadingUserNumber: string | null = + words.length >= 1 && isUserNumber(words[0]) ? words[0] : null; + + // If the first element is indeed a number (BigInt), drop it from the actual mnemonic + if (leadingUserNumber !== null) { + words.shift(); + } + + return { leadingUserNumber, words }; +}; + +/** Drop the anchor number from a string + * Example: " 10005 foo bar" -> "foo bar" + */ +export const dropLeadingUserNumber = (input: string): string => { + const parsed = parseRecoveryPhrase(input); + return parsed.leadingUserNumber !== null + ? input.replace(parsed.leadingUserNumber, "").trim() + : input; +}; + +/** The warning types that may be generated. For more information on each, see 'recoveryPhraseWarnings'. + * + * We generate the messages independently mostly so that we can programatically test the warnings generated + * (and avoid brittle regex-based testing).*/ +export type Warning = + | { type: "bad_chars"; chars: string[] } + | { type: "repeated_whitespace"; between: [string, string] | null } + | { type: "bad_anchor"; anchor: bigint } + | { type: "bad_word_count"; count: number } + | { type: "bad_words"; words: string[] } + | { type: "invalid" }; + +/** Generates warnings for a given recovery phrase and user number */ +export const recoveryPhraseWarnings: { + (userNumber: bigint, inputRaw: string): Warning | null; +}[] = [ + // The input contains some characters that are not expected in a recovery phrase + (userNumber: bigint, inputRaw: string): Warning | null => { + // Check for anything that's not a letter, a number or a whitespace (' ', not \n) + const badChars = inputRaw.match(/[^a-z0-9\s]|[\n\t\r]/g); + + if (badChars) { + return { type: "bad_chars", chars: [...new Set(badChars)] }; + } + + return null; + }, + + // Check for double (or triple) whitespaces between words + (userNumber: bigint, inputRaw: string): Warning | null => { + const repeatedSpace = inputRaw.match(/(\S+)\s\s+(\S+)/); + if (repeatedSpace) { + let between: [string, string] | null = null; + if (repeatedSpace.length === 3) { + between = [repeatedSpace[1], repeatedSpace[2]]; + } + + return { type: "repeated_whitespace", between }; + } + return null; + }, + + // Check for an incorrect anchor number (e.g. "10005 foo bar" when recovery anchor 10004) + (userNumber: bigint, inputRaw: string): Warning | null => { + const input = parseRecoveryPhrase(inputRaw); + const leadingUserNumber = + (input.leadingUserNumber !== null && BigInt(input.leadingUserNumber)) || + null; + + if (leadingUserNumber !== null && leadingUserNumber !== userNumber) { + return { type: "bad_anchor", anchor: leadingUserNumber }; + } + + return null; + }, + + // We expect a specific word count + (userNumber: bigint, inputRaw: string): Warning | null => { + const input = parseRecoveryPhrase(inputRaw); + + if ( + input.words.length >= 1 && + input.words.length !== RECOVERYPHRASE_WORDCOUNT + ) { + return { type: "bad_word_count", count: input.words.length }; + } + + return null; + }, + + // As for characters, check for any words that we do not expect + (userNumber: bigint, inputRaw: string): Warning | null => { + const input = parseRecoveryPhrase(inputRaw); + + const badWords = []; + for (const word of input.words) { + if (!RECOVERYPHRASE_WORDLIST.includes(word)) { + badWords.push(word); + } + } + + if (badWords.length >= 1) { + return { type: "bad_words", words: [...new Set(badWords)] }; + } + + return null; + }, + + // We expect a specific word count + (userNumber: bigint, inputRaw: string): Warning | null => { + const input = parseRecoveryPhrase(inputRaw); + + if ( + input.words.length === RECOVERYPHRASE_WORDCOUNT && + !validate(dropLeadingUserNumber(inputRaw)) + ) { + return { type: "invalid" }; + } + + return null; + }, +]; + +export const getWarnings = (userNumber: bigint, input: string): Warning[] => { + const warnings = []; + for (const mkWarning of recoveryPhraseWarnings) { + const warning = mkWarning(userNumber, input); + if (warning) { + warnings.push(warning); + } + } + return warnings; +}; diff --git a/src/frontend/src/flows/recovery/inputSeedPhrase.ts b/src/frontend/src/flows/recovery/inputSeedPhrase.ts index 11fa135ad4..116d01c84b 100644 --- a/src/frontend/src/flows/recovery/inputSeedPhrase.ts +++ b/src/frontend/src/flows/recovery/inputSeedPhrase.ts @@ -1,35 +1,93 @@ -import { html, render } from "lit-html"; -import { displayError } from "../../components/displayError"; -import { validate } from "../../crypto/mnemonic"; -import { parseUserNumber } from "../../utils/userNumber"; +import { html, nothing, render, TemplateResult } from "lit-html"; +import { + Warning, + RECOVERYPHRASE_WORDCOUNT, + dropLeadingUserNumber, + getWarnings, +} from "../../crypto/mnemonic"; +import { warningIcon } from "../../components/icons"; import { questions } from "../faq/questions"; const pageContent = () => html`

Your seed phrase

Please provide your seed phrase

-

+
@@ -48,18 +106,46 @@ const init = (userNumber: bigint): Promise => const inputSeedPhraseInput = document.getElementById( "inputSeedPhrase" ) as HTMLInputElement; - const warningBadAnchor = document.getElementById( - "warningBadAnchor" - ) as HTMLParagraphElement; + + // Look up the warningsDiv element early; this must not be done inside in the warnings + // generation callback since -- due to debouncing -- it may be called after some period of + // time and the user may have left the page; we may effectively pick up the wrong element. + const warningsDiv = document.getElementById("warnings") as HTMLDivElement; + const warningsBox = document.querySelector( + "details.warnings-box" + ) as HTMLDetailsElement; + + // Debounce the warning generation as not to spam the user + let handle: number; + const debouncedWarnings = () => { + clearTimeout(handle); + handle = window.setTimeout(() => { + warningsDiv.innerHTML = ""; // Clear previously generated warnings + + const warnings = getWarningMessages( + userNumber, + inputSeedPhraseInput.value.trim() + ); + + if (warnings.length >= 1) { + warningsBox.classList.add("visible"); + warningsBox.classList.remove("hidden"); + + // Actually generate the warnings + for (const warning of warnings) { + const div = document.createElement("div"); + render(mkWarningDiv(warning), div); + warningsDiv.appendChild(div); + } + } else { + warningsBox.classList.add("hidden"); + warningsBox.classList.remove("visible"); + } + }, 500); + }; + inputSeedPhraseInput.oninput = () => { - const lun = leadingUserNumber(inputSeedPhraseInput.value.trim()); - if (lun !== null && lun !== userNumber) { - warningBadAnchor.innerHTML = `warning
- it looks like you are using a seed phrase for anchor ${lun} but the anchor you are trying to recover is ${userNumber} - `; - } else { - warningBadAnchor.innerHTML = ""; - } + debouncedWarnings(); }; const inputSeedPhraseContinue = document.getElementById( "inputSeedPhraseContinue" @@ -74,40 +160,78 @@ const init = (userNumber: bigint): Promise => const inputValue = dropLeadingUserNumber( inputSeedPhraseInput.value.trim() ); - if (validate(inputValue)) { - resolve(inputValue); - } else { - await displayError({ - title: "Invalid Seedphrase", - message: html`This is not a seed phrase generated by Internet Identity, please - make sure to copy the full seedphrase and try again. For more - information, please see - ${questions.invalidSeedphrase.question}`, - primaryButton: "Try again", - }); - resolve(inputSeedPhrase(userNumber)); - } + resolve(inputValue); }; }); -const dropLeadingUserNumber = (s: string): string => { - const i = s.indexOf(" "); - if (i !== -1 && parseUserNumber(s.slice(0, i)) !== null) { - return s.slice(i + 1); - } else { - return s; - } +export const getWarningMessages = ( + userNumber: bigint, + input: string +): (TemplateResult | string)[] => { + return getWarnings(userNumber, input).map((warning) => + warningMessage(userNumber, warning) + ); }; -const leadingUserNumber = (s: string): bigint | null => { - const i = s.indexOf(" "); - if (i !== -1) { - return parseUserNumber(s.slice(0, i)); - } else { - return null; +/** The warning messages, for each warning type. */ +export const warningMessage = ( + userNumber: bigint, + warning: Warning +): TemplateResult | string => { + switch (warning.type) { + case "bad_chars": { + return html`Unexpected character${warning.chars.length > 1 ? "s" : ""}: + ${warning.chars.map((c, i) => [ + html`${c === "\n" ? "newline" : c === "\t" ? "tab" : c}`, + i < warning.chars.length - 1 ? ", " : nothing, + ])}`; + } + + case "repeated_whitespace": { + return html`Multiple + whitespaces${warning.between + ? html` between ${warning.between[0]} and + ${warning.between[1]}` + : ""}`; + } + + case "bad_anchor": { + return html`Recovering anchor ${userNumber}, but recovery + phrase suggests anchor ${warning.anchor}`; + } + + case "bad_word_count": { + return `Recovery phrase should contain ${RECOVERYPHRASE_WORDCOUNT} words, but input contains ${ + warning.count + } word${warning.count > 1 ? "s" : ""}.`; + } + + case "bad_words": { + return html`Unexpected word${warning.words.length > 1 ? "s" : ""}: + ${warning.words.map((word, i) => [ + html`${word}`, + i < warning.words.length - 1 ? ", " : nothing, + ])}`; + } + + case "invalid": { + return html` + This does not look like a seed phrase generated by Internet Identity, + please make sure to copy the full seedphrase and try again. For more + information, please see + ${questions.invalidSeedphrase.question} + `; + } } }; + +const mkWarningDiv = (warningMessage: string | TemplateResult) => html`
+ ${warningIcon} +
+

${warningMessage}

+
+
`; diff --git a/src/frontend/src/utils/userNumber.ts b/src/frontend/src/utils/userNumber.ts index f3ad61c9e2..98e07a45d7 100644 --- a/src/frontend/src/utils/userNumber.ts +++ b/src/frontend/src/utils/userNumber.ts @@ -11,14 +11,10 @@ export const setUserNumber = (userNumber: bigint | undefined): void => { } }; -// BigInt parses various things we do not want to allow, like: -// - BigInt(whitespace) == 0 -// - Hex/Octal formatted numbers -// - Scientific notation -// So we check that the user has entered a sequence of digits only, +// We check that the user has entered a sequence of digits only, // before attempting to parse export const parseUserNumber = (s: string): bigint | null => { - if (/^\d+$/.test(s)) { + if (isUserNumber(s)) { try { return BigInt(s); } catch (err) { @@ -28,3 +24,13 @@ export const parseUserNumber = (s: string): bigint | null => { return null; } }; + +// This makes sure `s` is a viable user number; naively using BigInt +// on any string would also accept the following values, which are +// _not_ valid user numbers: +// - BigInt(whitespace) == 0 +// - Hex/Octal formatted numbers +// - Scientific notation +export const isUserNumber = (s: string): boolean => { + return /^\d+$/.test(s); +};